Vaša IP adresa: 3.141.41.187
Počet návštev: 30502

Teplotný senzor DS18B20

Na trhu je dostupných veľa typov senzorov na meranie teploty. Pre meranie teploty som sa rozhodol použiť teplotný senzor DS18B20 z niekoľkých dôvodov. Jedná sa o digitálny teplotný senzor s tzv. 1-wire interface - na odosielanie údajov o teplote využíva iba jeden dátový vodič. Je ho možné zakúpiť v podobe integrovaného obvodu alebo vo vodotesnej verzii s privedenými káblami. Rozhodol som sa práve pre druhú verziu, pretože je vhodná aj na meranie vonkajšej teploty a odoláva rôznym podmienkam počasia. Rozsah meraných teplôt je od -55°C do +125°C. Na intervale od -10°C do +85°C sa udáva presnosť ±0,5°C. Jeho cena sa pohybuje od 2€ na eBay.

Pripojenie senzora DS18B20

Teplotný senzor obsahuje 3 vodiče. Dva vodiče slúžia na napájanie (červený a čierny) a jeden vodič je dátový (žltý). Dátový vodič je potrebné pripojiť na napájanie cez 10kΩ rezistor (pull-up).

Pripojenie teplotného senzora DS18B20 k Raspberry Pi 3. Pripojenie teplotného senzora DS18B20 k Raspberry Pi 3.

Pin GPIO4 slúži ako 1-wire pin a preto musí byť dátový vodič teplotného senzora pripojený práve k tomuto pinu. Aby sme pin GPIO4 mohli využívať ako 1-wire rozhranie, musíme na koniec konfiguračného súboru config.txt zapísať nasledovné: dtoverlay=w1-gpio.
Otvorenie súboru config.txt na editovanie:

sudo nano /boot/config.txt

Šípkou dolu sa presunieme na koniec textu a tam zapíšeme:

#1-wire interface
dtoverlay=w1-gpio

Aby sa nastavenie uplatnilo, musíme Raspberry Pi reštartovať:

sudo reboot

Pomocou príkazu modprobe môžeme do Linuxu pridať alebo odobrať modul. Na registráciu nového zariadenia, ktorý je pripojené na GPIO4 a využíva jednovodičové rozhranie (1-wire interface) použijeme nasledovný zápis:

sudo modprobe w1-gpio

Aby sme špecifikovali, že zariadenie umožňuje meranie teploty prostrednícvom 1-wire rozhrania použijeme nasledovný zápis:

sudo modprobe w1-therm

Ak je senzor pripojený k Raspberry Pi správne, tak by sa v umiestnení /sys/bus/w1/devices mal zobraziť adresár začínajúci 28-. Za pomlčkou nasleduje sériové číslo senzora. Každý senzor má unikátne sériové číslo. Toto umožňuje pripojiť viacero senzorov na rovnaký pin GPIO4. Pri pripojení viacerých senzorov sa pripája iba jeden 10kΩ pull-up rezistor. Ak máme pripojených viacero senzorov, tak sa v danom umiestnení zobrazí zodpovedajúci počet adresárov začínajúcich 28-. Adresáre zobrazíme pomocou nasledujúcich príkazov:

cd /sys/bus/w1/devices
ls

Na obrázku nižšie je príklad dvoch pripojených teplotných senzorov.

Pripojenie dvoch teplotných senzorov 28-0416c219d3ff a 28-0416c2686fff. Pripojenie dvoch teplotných senzorov 28-0416c219d3ff a 28-0416c2686fff.

Vojdeme do adresára, ktorého názov sme zistili v predchádzajúcom kroku a zodpovedá vybranému senzoru (napr. 28-0416c219d3ff):

cd 28-0416c219d3ff

A pomocou príkazu cat vypíšeme výstup zo súboru w1_slave:

cat w1_slave

Dostaneme výstup v tvare:

79 01 4b 46 7f ff 0c 10 29 : crc=29 YES
79 01 4b 46 7f ff 0c 10 29 t=23562

Prvý riadok nás informuje o úspešnej kontrole CRC pomocou kľúčového slova YES. Ak dostaneme iný výsledok kontroly (NO, FALSE, ERROR), treba nájsť chybu a odstrániť ju. Dôležitejší je druhý riadok, ktorý obsahuje údaj o nameranej teplote. Údaj t=23562 znamená, že bola nameraná teplota 23,562°C.

Načítanie teploty zo senzora 28-0416c219d3ff. Načítanie teploty zo senzora 28-0416c219d3ff.

Zaujímavé odkazy

Raspberry Pi: Measure, Record, Explore.