Skocz do zawartości

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


Pomocna odpowiedź

3 minuty temu, farmaceuta napisał:

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😉

Nie no spoko. Po prostu przeoczyłem tego linka.

To teraz takie pytanie;

Skoro zakładamy, że na każdej linii pomiarowej będzie zainstalowany tylko jeden czujnik, to czy można zadeklarować czujniki bez konieczności ich adresowania? 

Zrobiłem coś na wzór standardowej biblioteki  dallasa, ale to nie działa.

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

// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN1 A0
#define ONEWIRE_PIN2 A1
#define ONEWIRE_PIN3 A2                                                                  

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();
  sensors2.request();                 //DS18B20
  sensors3.request();
}

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

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

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

 

(edytowany)
14 minut temu, rafal220 napisał:

 czy można zadeklarować czujniki bez konieczności ich adresowania? 

 

 

Już nie pamiętam, ale chyba tak...inaczej zróbmy...podłącz narazie jeden czujnik z "pojedynczym" kodem i sprawdź czy temp jest odczytywana prawidłowo ...wykluczymy błędne podłączenie, się tam ma chyba byc rezystor pociągający do Vcc 

Pj4Cn.thumb.png.362f819a2f5cdd7715ffca5796c73bc3.png

Edytowano przez farmaceuta
2 minuty temu, farmaceuta napisał:

Już nie pamiętam, ale chyba tak...inaczej zróbmy...podłącz narazie jeden czujnik z "pojedynczym" kodem i sprawdź czy temp jest odczytywana prawidłowo ...wykluczymy błędne podłączenie, się tam ma chyba byc rezystor pociągający do Vcc

Nie no oczywiście, że są rezystory podciągające. W końcu układ działał z kodem przedstawionym w poście #2. Ok zrobię tak jak mówisz tylko najpierw muszę odczytać ID tych czujników.  

1 minutę temu, rafal220 napisał:

 Ok zrobię tak jak mówisz tylko najpierw muszę odczytać ID tych czujników.  

W przykładach biblioteki masz coś z adress , to służy do odczytu adresu

7 minut temu, farmaceuta napisał:

W przykładach biblioteki masz coś z adress , to służy do odczytu adresu

Tak wiem. Nawet w bibliotece onewire jest przykładowy kod. Było o tym w którymś poradniku na Fotbocie.

Układ działa, ale nie podoba mi się sposób w jaki jest wyświetlana temperatura nieobecnego czujnika. Jest ciągle 0C zamiast -127C

 temperatura3.thumb.png.000d48e84729371514185c0cafa18f5b.png

Kod też zużywa trochę więcej pamięci niż w przypadku z postu #2, no ale to już jest raczej zależne od użytej biblioteki i nie ma aż tak dużego znaczenia.

Pamięci póki co Ci nie braknie, a już napewno wystarczy na ten wyświetlacz jeszcze, co do wartości 0.00° to poprostu uwzględnij w kodzie że to jest brak czujnika...zakres koło zera stopni chyba nie jest Ci tak bardzo potrzebny (strata 1 stopnia)

24 minuty temu, rafal220 napisał:

nie podoba mi się sposób w jaki jest wyświetlana temperatura nieobecnego czujnika

Niema w tej bibliotece jakiejś flagi czy pomiar jest poprawny? Albo czy układ znajduje się na magistrali? 

1 godzinę temu, farmaceuta napisał:

co do wartości 0.00° to poprostu uwzględnij w kodzie że to jest brak czujnika...

przy logice 2/3 wyklucza się ten czujnik który odbiega o ustaloną wartość. Natomiast nie powinno się praktykować zasady w myśl której poprawne wskazanie czujnika z zakresu jego pracy równolegle oznacza jego awarię. Lepiej prezentuje się rozwiązanie z postu #2 ponieważ tam brak czujnika wyświetla wskazanie z po za zakresu jego pracy. Czyli -127C. 

1 godzinę temu, _LM_ napisał:

Niema w tej bibliotece jakiejś flagi czy pomiar jest poprawny? Albo czy układ znajduje się na magistrali? 

Do analizy funkcji bibliotek jeszcze nie doszedłem. Na razie uczę się prawidłowej implementacji na podstawie tego co przedstawili inni użytkownicy. 

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...