Czujniki

Adres DS18B20 – odczyt numeru seryjnego

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)

Zobacz też

Czujnik DS18B20