Dallas 18b20 (DS18B20) kapcsolat Arduino

A palettáját áruház megjelent DALLAS 18B20 hőmérséklet-érzékelő a vízálló burkolatot egy széles mért hőmérsékletek -55 és + 125 ° C-on Adatai vízállóság és a maximális hőmérséklet 125 fok azonnal megkérdezi, hogy gondolt a szélsőséges tesztelés forró vízben. Ily módon fogjuk csinálni.

Dallas 18b20 (DS18B20) kapcsolat Arduino

Ez az érzékelő működik az 1-Wire busszal.

A működő eszközök a buszon a 1-Wire közegben Arduino IDE használt OneWire könyvtár.
A legújabb verzió a könyvtár, valamint a teljes dokumentáció megtalálható a fejlesztői oldal.

Mindegyik eszköznek egyedi 64 bites „ROM” kódot, amelyből 8 bit meghatározó kódsorozat, 48 bites egyedi számot és 8 bit hibajavító kódot CRC.

Tájékoztatás a mért hőmérséklet tárolja az érzékelő RAM amely 9 bájt.

1 és 2 bájt tárolja hőmérséklet információt.

3 és 4 byte rendre tárolt alsó és felső hőmérséklet határok.

7 és 8 bájt használják nagy pontosságú hőmérséklet mérése.

9 nem bájtos tárolja a CRC előző 8 bájt.

Alap parancsokat, ha dolgozik a könyvtárban:

Megkeresi a következő 1-Wire eszközök, ha a készülék talált, a 8 bájtos tömb addressArray írva a ROM kód, egyébként false.

Elvégzi új keresést az első eszköz.

Elvégzi busz visszaállítása szükséges való összekapcsolás előtt az érzékelőt.

Elvégzi szelekciós eszköz visszaállítás után a készülék továbbítja ROM kódot.

Információt továbbít byte az eszközön

Információkat közvetít byte egy eszközön működik parazita energiatakarékos módban

Byte kiolvassa a készülékből

Kiszámítja egy CRC kódot byte tömb dataArray, hosszúságú

A parancs írási tudjuk továbbítani parancsoknak a szenzor formájában bájt, úgy a legfontosabbak:

0x44 - hold mérést és rögzíti az adatokat a RAM

0x4E - beírhatjuk 3 bájt a 3., 4. és 5. bájt RAM

0xBE - 9 bájt tekinthető sorrendben RAM

0x48 - másolja a 3. és 4. byte RAM az EEPROM

0xB8 - átmásolja az adatokat az EEPROM-ban a 3. és 4. byte RAM

0xB4 - visszaadja a típusú élelmiszer (0 - parazita, 1 - külső)

Csatlakozás Arduino

ki a három vezetéket a szenzor:

Piros: „+” tápegység.

Fekete: „-” tápegység

Fehér: A kimenet a kimeneti jel

Érzékelő csatlakozás:

Piros: A + 5V Arduino.

Fekete bármelyik GND csapok Arduino.

White lyuby digitális bemenet Arduino (D10 a példában).

A érzékelő működését kell csatlakoztatni a jelvezeték a ellenálláson huzal adagoló névleges értéke 4,7 ohm.

Dallas 18b20 (DS18B20) kapcsolat Arduino

Kezdeni, úgy a leghasznosabb példa dolgozó érzékelő - kimenet hőmérséklet leolvasás a port monitor.

példa kód

Dallas18B20 extrém tesztelése

A relé áramkör került, hogy automatikusan kikapcsolja a kazánt hőmérsékleten 99,5 ° C-on Annak érdekében, hogy ne vágja el a vezetékeket a kazán csatlakozik a kimeneten át, amelynek székhelye, a fent említett relét.

Dallas 18b20 (DS18B20) kapcsolat Arduino

OneWire DS (10); // Csatlakoztassa az érzékelőt a 10 pin a digitális

void setup (void) Serial.begin (9600);
pinMode (3, kimenetet);
// kapcsolja be a kazánt
digitalWrite (3, LOW);
>

void hurok (void) byte i;
byte type_s;
bájtos adat [12];
byte addr [8];
float Celsius, Fahrenheit;

// Nézd ALRES érzékelő
ha Serial.println ( "Nincs több címet.") (ds.search (cím)!);
Serial.println ();
ds.reset_search ();
késleltetés (250);
return;
>

// Ellenőrizze, van-e interferenciát az átviteli
if (OneWire :: crc8 (cím, 7) = addr [7]!) Serial.println ( "CRC nem érvényes!");
return;
>
Serial.println ();

// Meghatározza az érzékelő sorozat
kapcsolót (addr [0]) esetében 0x10:
Serial.println ( "Chip = DS18S20");
type_s = 1;
break;
esetében 0x28:
Serial.println ( "Chip = DS18B20");
type_s = 0;
break;
esetében 0x22:
Serial.println ( "Chip = DS1822");
type_s = 0;
break;
alapértelmezett:
Serial.println ( „eszköz nem DS18x20 család eszközt.”);
return;
>

ds.reset ();
ds.select (cím);
ds.write (0xBE); // olvassa el a szenzor operatív memória

for (i = 0; i <9; i++) <
adatok [i] = ds.read (); // Töltsük a tömb adatok olvasását
>

// hőmérséklet szereplő adatok az első két bájt, lefordítani őket egyetlen érték, és átalakulni a hexadecimális számok
int16_t nyers = (adatok [1] <<8) | data[0];
ha (type_s) nyers = nyers <<3;
ha a (adatok [7] == 0x10) nyers = (nyers 0xFFF0) + 12 - adatok [6];
>
>
mást byte CFG = (adatok [4] 0x60);
ha (CFG == 0x00) nyers = nyers

7;
else if (CFG == 0x20) nyers = nyers

3;
else if (CFG == 0x40) nyers = nyers

1;
>
Celsius = (float) nyers / 16,0;
Fahrenheit = Celsius * 1,8 + 32,0;
Serial.print ( "Temp =");
Serial.print (Celsius);
Serial.print ( "C,");
Serial.print (Fahrenheit);
Serial.println ( "F");

// Ha a hőmérséklet eléri a forráspont (egy hiba), letiltja a fűtő
ha (Celsius> 99,5)
digitalWrite (3, HIGH);
>
>

Vásárolni RossiiDallas 18B20 vízálló házban