Adres DS18B20 – Odczyt za pomocą Arduino
Każdy czujnik temperatury DS18B20 posiada swój unikalny 64 bitowy numer seryjny nadany na etapie produkcji. Aby sprawdzić adres ds18b20 należy wykonać prosty program, który przeszuka magistralę One Wire i wypisze adresy podłączonych do nich urządzeń.
Program pozwala na odczyt adresów z czujników DS18S20, DS18B20, DS1822 oraz innych urządzeń podłączonych do magistralii 1-Wire.
Podłączenie czujnika DS18B20
Pamiętamy o rezystorze podciągającym 4.7k Ohm między linią DQ, a zasilaniem:
Kod programu sprawdzający adres DS18B20
#include <OneWire.h> OneWire magistrala(2); void setup(void) { Serial.begin(9600); } void loop(void) { byte addr[8]; int i; if ( !magistrala.search(addr)) { magistrala.reset_search(); delay(1000); return; } Serial.print("Adres ="); for( i = 0; i < 8; i++) { Serial.write(' '); Serial.print(addr[i], HEX); } if (OneWire::crc8(addr, 7) != addr[7]) { Serial.println("CRC jest niepoprawny!"); return; } Serial.println(); switch (addr[0]) { case 0x10: Serial.println(" Chip = DS18S20"); break; case 0x28: Serial.println(" Chip = DS18B20"); break; case 0x22: Serial.println(" Chip = DS1822"); break; default: Serial.println("Inne urządzenie."); return; } }
Opis
Funkcja reset_search() z biblioteki OneWire rozpoczyna nowe wyszukiwanie urządzeń podłączonych do magistrali OneWire zdefiniowanej na pinie 2.
Dodatkowo dla każdego adresu jest sprawdzana suma kontrolna CRC (cykliczny kod nadmiarowy).
Pierwszy bajt adresu charakteryzuje typ czujnika
0x10 – DS18S20
0x28 – DS18B20
0x22 – DS1822
Wynik działania
Po uruchomieniu programu w serial monitorze powinien się pojawić adres naszego czujnika.
Oczywiście jest możliwość podpięcia też kilku czujników i odczytanie adresów hurtowo (wówczas jednak możemy mieć problem z identyfikacją, który adres odpowiada danemu czujnikowi)