A DS18B20 1-Wire hőmérséklet-érzékelő használata az egyik legegyszerűbb és legolcsóbb módja annak, hogy hőmérséklet-érzékelést adjunk az Arduino projektünkhöz. Ezek az érzékelők meglehetősen pontosak, és nem igényel külső alkatrészeket a működéshez. Így néhány csatlakoztatással és néhány Arduino kóddal pillanatok alatt érzékelheti a hőmérsékletet!

DS18B20 1-Wire hőmérséklet érzékelő

Az DS18B20 1-Wire interfészes hőmérséklet érzékelő, amelyet a Dallas Semiconductor Corp. gyárt. Az egyedülálló 1-Wire® interfész csak egy digitális tűt igényel a mikrokontrollerrel való kétirányú kommunikációhoz.

Az érzékelő általában kétféle formában kapható. Az egyik, amely TO-92-es csomagolásban érkezik, pontosan úgy néz ki, mint egy közönséges tranzisztor. A másik egy vízálló szonda stílusban, amely hasznosabb lehet, ha valamit messze, víz alatt vagy a föld alatt kell mérni.

A DS18B20 hőmérsékletérzékelő típusai

A DS18B20 hőmérsékletérzékelő meglehetősen pontos és nincs szüksége külső alkatrészekre a működéshez. A hőmérsékletet -55°C és +125°C között ±0,5°C pontossággal tudja mérni.

A hőmérsékletérzékelő felbontása a felhasználó által konfigurálható 9, 10, 11 vagy 12 bitre. Az alapértelmezett felbontás azonban bekapcsoláskor 12 bites (azaz 0,0625°C pontosságú).

Az érzékelő 3V és 5,5V közötti tápegységgel táplálható, és az aktív hőmérséklet-átalakítások során mindössze 1mA-t fogyaszt.

Itt vannak a teljes specifikációk:

Tápegység 3V és 5.5V
Áramfelvétel 1mA
Hőmérsékleti tartomány -55 és 125°C között
Pontosság ±0.5°C
felbontás 9-12 bit (választható)
átalakítási idő < 750ms

Multiple DS18B20 egyetlen buszon

A DS18B20 egyik legnagyobb előnye, hogy több DS18B20 egymás mellett létezhet ugyanazon az 1-Drótos buszon. Mivel minden DS18B20 egyedi 64 bites soros kódot égetett be gyárilag, így könnyebb megkülönböztetni őket egymástól.

Ez a funkció hatalmas előnyt jelenthet, ha sok DS18B20-at szeretne vezérelni nagy területen elosztva.

Hogy megtudja, hogyan olvassa le a hőmérsékletet több DS18B20 hőmérsékletérzékelőről, nézze meg ezt a bemutatót.

Több DS18B20 digitális hőmérsékletérzékelő összekapcsolása az Arduino-val

A DS18B20 egyik legnagyobb előnye, hogy több DS18B20 képes együtt élni ugyanazon az 1-Wire buszon. Mivel minden DS18B20 egyedi 64 bites…

DS18B20 érzékelő pinout

GND egy földelt pin.

DQ az 1-Wire adatbusz, amelyet a mikrokontroller egy digitális pinjéhez kell csatlakoztatni.

VDD pin szolgáltatja a tápellátást az érzékelő számára, amely 3,3 és 5V között lehet.

Wiring DS18B20 Temperature Sensor to Arduino

Enough of the theory, Let’s Go Practical! Csatlakoztassuk a DS18B20-at az Arduinóhoz.

A csatlakozások meglehetősen egyszerűek. Kezdjük azzal, hogy a VDD-t az Arduino 5V-os kimeneti csapjához, a GND-t pedig a földhöz csatlakoztatjuk.

Következő lépésként csatlakoztassuk a fennmaradó digitális jelcsapot DQ az arduino 2. digitális csapjához. A 4,7k pull-up ellenállást is hozzá kell adnia a jel és a tápcsap között, hogy az adatátvitel stabil maradjon. (Az arduino belső pull-upjai nem működnek)

Vigyázzon, hogy a DS18B20 a megfelelő irányban legyen. Ha rosszul rakja be, akkor felforrósodik, majd eltörik.

A DS18B20 hőmérsékletérzékelő csatlakoztatása az Arduinóhoz

Ha a DS18B20 vízálló változatát használja, a piros csíkot csatlakoztassa az 5V-hoz, a fekete a földhöz csatlakozik, a sárga csík pedig az adat, amely az arduino 2. digitális pinjére megy. Továbbra is csatlakoztatnia kell egy 4,7K pullup ellenállást az adatokról 5V-ra.

Vízálló DS18B20 hőmérsékletérzékelő csatlakoztatása az Arduinóhoz

Installing Library For DS18B20

A Dallas 1-Wire protokoll kissé összetett, és egy csomó kódot igényel a kommunikáció elemzésére. Hogy elrejtsük ezt a felesleges bonyolultságot, telepíteni fogjuk a DallasTemperature.h könyvtárat, hogy egyszerű parancsokat adhassunk ki a hőmérséklet leolvasásához az érzékelőtől.

A könyvtár telepítéséhez navigáljunk a Sketch > Include Library > Manage Libraries…Várjuk meg, amíg a Library Manager letölti a könyvtárak indexét és frissíti a telepített könyvtárak listáját.

A keresést a ‘ds18b20’ beírásával szűrjük. Kell lennie néhány bejegyzésnek. Keresse meg a Miles Burton által készített DallasTemperature-t. Kattintson erre a bejegyzésre, majd válassza a Telepítés lehetőséget.

Ez a Dallas Temperature könyvtár egy hardver-specifikus könyvtár, amely alacsonyabb szintű funkciókat kezel. A One Wire Libraryvel kell párosítani ahhoz, hogy bármilyen egyvezetékes eszközzel kommunikálni tudjon, nem csak a DS18B20-zal. Telepítse ezt a könyvtárat is.

Arduino kód

Az alábbi vázlat segítségével teljes mértékben megértheti, hogyan olvassa le a DS18B20 hőmérséklet-érzékelőről a hőmérsékleti értékeket, és alapul szolgálhat további gyakorlati kísérletekhez és projektekhez.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Íme, így néz ki a kimenet a soros monitoron.

Kódmagyarázat:

A szkeccs a OneWire.h és a DallasTemperature.h könyvtárak bevonásával és az Arduino pin deklarálásával kezdődik, amelyre az érzékelő jelzőtűje csatlakozik.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

A következőkben létrehozunk egy OneWire objektumot az érzékelő jelzőtűjének átadásával annak konstruktorába. Ez az egyvezetékes objektum lehetővé teszi számunkra, hogy bármilyen egyvezetékes eszközzel kommunikáljunk, nem csak a DS18B20-zal. A DS18B20 érzékelővel való kommunikációhoz a DallasTemperature könyvtár objektumát kell létrehoznunk, és paraméterként át kell adnunk a one-wire objektum hivatkozását.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Mihelyt létrehoztuk a DallasTemperature objektumot, az alábbi egyszerű parancsokat adhatjuk ki az érzékelővel való interakcióhoz.

  • begin() függvény megkeresi a csatlakoztatott érzékelőket a buszon, és mindegyikhez beállítja a bitfelbontást (12 bit).
  • requestTemperatures() függvény parancsot küld a buszon lévő összes érzékelőnek, hogy végezzen hőmérséklet-átalakítást.
  • getTempCByIndex(deviceIndex) függvény kiolvassa és visszaadja a hőmérséklet-értéket az érzékelőből. A deviceIndex nem más, mint az érzékelő helye a buszon. Ha csak egy DS18B20-at használ a buszon, állítsa 0-ra.

Más hasznos függvények a DallasTemperature.h könyvtárban

A DallasTemperature objektummal használható néhány hasznos függvény. Ezek közül néhányat az alábbiakban felsorolunk:

  • setResolution() függvény a DS18B20 belső analóg-digitális átalakítójának felbontását 9, 10, 11 vagy 12 bitre állítja, ami 0,5°C, 0,25°C, 0,125°C és 0,0625°C lépésköznek felel meg.
  • bool getWaitForConversion() függvény visszaadja a waitForConversion flag értékét. Hasznos lehet, ha ellenőrizni szeretné, hogy egy hőmérséklet-átalakítás befejeződött-e.
  • setHighAlarmTemp() & setLowAlarmTemp() függvény beállítja az eszköz belső magas & alacsony hőmérséklet riasztását Celsius fokban. Az érvényes tartomány -55 és 125°C között van
  • bool hasAlarm() A függvény igazat ad vissza, ha a készülék riasztási állapotba kerül, amikor a hőmérséklet meghaladja a magas & alacsony riasztási hőmérséklet beállítását.

admin

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

lg