Skocz do zawartości

Uruchamianie niezależnych czujników DS18B20/ Niezależne linie onewire


Pomocna odpowiedź

#include <OneWire.h>
#include <DS18B20.h>

// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN1 8
#define ONEWIRE_PIN2 9
#define ONEWIRE_PIN3 10                                                                  

byte address1[8] = {0x28, 0xD2, 0xCB, 0x48, 0xF6, 0xDE, 0x3C, 0xDF};    // Adres czujnika 1
byte address2[8] = {0x28, 0xB1, 0x6D, 0xA1, 0x3, 0x0, 0x0, 0x11};       // Adres czujnika 2
byte address3[8] = {0x28, 0xB1, 0x6D, 0xA1, 0x3, 0x0, 0x0, 0x11};       // Adres czujnika 3

OneWire onewire1(ONEWIRE_PIN1);
DS18B20 sensors1(&onewire1);

OneWire onewire2(ONEWIRE_PIN2);
DS18B20 sensors2(&onewire2);

OneWire onewire3(ONEWIRE_PIN3);
DS18B20 sensors3(&onewire3);



void setup() {

   Serial.begin(9600);
   
   sensors1.begin();
   sensors2.begin();
   sensors3.begin();
  
  sensors1.request(address1);
  sensors2.request(address2);                 //DS18B20
  sensors3.request(address3);
}

void loop() {
if (sensors1.available())
  {
    float temp1 = sensors1.readTemperature(address1);
    Serial.println(temp1);
    sensors1.request(address1);
  }

  if (sensors2.available())
  {
    float temp2 = sensors2.readTemperature(address2);
    Serial.println(temp2);
    sensors2.request(address2);
  }

  if (sensors3.available())
  {
    float temp3 = sensors3.readTemperature(address3);
    Serial.println(temp3);
    sensors3.request(address3);
  } 
  delay(1000);
}

 

13 minut temu, ethanak napisał:

-127 oznacza "czujnik nie jest podłączony"

W tym przykładzie który teraz podałem mam w kratkę (nie regularnie) 0.00 lub -273.15...(ds'y nie podłączone)

41 minut temu, _LM_ napisał:

Uszkodzony czujnik powinien zwrócić błąd crc a nie temperaturę minus 127 stopni 

spokojnie. To mi akurat nie przeszkadza. Te -127C znane jest mi dobrze ze sterowników PLC i wiem jak sobie z tym radzić.

16 minut temu, _LM_ napisał:

Tak a 85 że zwarty. To nie może tak działać 

Przy zwartej linii też uważam, że biblioteka powinna zwracać inną wartość, ponieważ 85C jest w zakresie pracy pomiarowej tego czujnika. 

24 minuty temu, _LM_ napisał:

Tak a 85 że zwarty

Na pewno? Bo według wszelkich znanych mi źródeł to "jestem po resecie i nie zdążyłem jeszcze zrobić żadnej konwersji".

17 minut temu, farmaceuta napisał:

W tym przykładzie który teraz podałem mam w kratkę (nie regularnie) 0.00 lub -273.15...(ds'y nie podłączone)

A u mnie kod który przedstawiłeś na Arduino nano sypie błędy.

temperatura2.thumb.png.042eb5a3839a6ff1b92ed1197a08fa34.png

8 minut temu, rafal220 napisał:

uważam, że biblioteka powinna zwracać inną wartość, ponieważ 85C jest w zakresie pracy pomiarowej tego czujnika.

Ale to zwraca czujnik a nie biblioteka. 

Przed chwilą, ethanak napisał:

Ale to zwraca czujnik a nie biblioteka

No ok, tylko co dalej z tym zrobisz? Czujnik powinien też zwracać błąd który biblioteka przekonwertuje na wartość inną niż 85C, a nie znajdującej się w zakresie pomiarowym. Na sterownikach PLC uszkodzenie linii pomiarowej w żadnym przypadku nie zwraca wartości z zakresu pomiarowego czujnika.   

1 minutę temu, farmaceuta napisał:

A wspominałem coś o bibliotece i linku do niej??

Myślałem, że przedstawiasz sprawdzone rozwiązanie które każdy początkujący user może sobie przetestować. Bez określenia nazwy biblioteki w deklaracji zmiennych globalnych trudno to zweryfikować.

(edytowany)

No ok. Teraz zorientowałem się, że podałeś linka wcześniej.

Lepiej to by wyglądało gdybyś w taki sposób wstawił kod;

#include <OneWire.h>
#include <DS18B20.h> // Adrest do pobrania; .....

// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN1 8
#define ONEWIRE_PIN2 9
#define ONEWIRE_PIN3 10  

 

Edytowano przez rafal220
20 minut temu, rafal220 napisał:

Myślałem, że przedstawiasz sprawdzone rozwiązanie które każdy początkujący user może sobie przetestować. Bez określenia nazwy biblioteki w deklaracji zmiennych globalnych trudno to zweryfikować.

 

10 minut temu, rafal220 napisał:

No ok. Teraz zorientowałem się, że podałeś linka wcześniej.

Lepiej to by wyglądało gdybyś w taki sposób wstawił kod;

#include <OneWire.h>
#include <DS18B20.h> // Adrest do pobrania; .....

// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN1 8
#define ONEWIRE_PIN2 9
#define ONEWIRE_PIN3 10  

 

Dobrze by było gdybyś zaczął od podstaw, chyba nie myślisz że ktoś za każdym razem będzie Ci pisał komentarze w kodzie i podawał gotowe linki do bibliotek? Takie rzeczy musisz umieć sam😉

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...