Raspberry Pi

15) Teploměr DS18B20

 

POZOR 

Po aktualizaci Raspbianu z ledna 2015 je nutné nejdříve provést úpravu souboru "/boot/config.txt"

sudo nano /boot/config.txt
          
 

Na konec souboru se pak připíše řádka:

dtoverlay=w1-gpio,gpiopin=4

obrázek

 

 

Pro měření teploty jsem použil integrovaný obvod DS18B20. Tady je odkaz na prodejce (GM-elektronics) a katalogový list .

Tato součástka přímo komunikuje s Raspíčkem pomocí jednoho GPIO portu. Protože každý takovýto teploměr má vnitřně nastavený unikátní kód, je možné na stejný port připojit několik takovýchto teploměrů. Ovládací program se pak postará o získávání dat z konkrétního teploměru.

Když to shrnu, tak je třeba nejdříve připojit čidlo pomocí 3 vodičů (GND, +3,3V, GPIO4). GPIO4 není možné změnit, protože ovladač je napsaný pouze pro tento port. Takže pokud už máte něco připojeno ke GPIO4 (třeba LEDku), tak jí musíte předrátovat na jiný volný port, nebo zajistit její odpojení v případě, že budete měřit teplotu.

Mezi vodiči 3,3V a GPIO4 je vřazený odpor 4k7. 

Pomocí příkazů posílaných konkrétnímu čidlu je možné provádět kromě čtení aktuální teploty i další nastavení, jako třeba změna rozlišení (9 až 12 bitů), nebo dokonce nastavení teplotní úrovně, při které začne čidlo posílat signál "alarm". Tak daleko jsem se ale zatím nedostal.

 

V nejnovější verzi operačního systému Raspbian už není třeba doinstalovávat patche jádra

Stačí spustit ovladače:

sudo bash
modprobe w1-gpio
modprobe w1-therm     

 (Tyto příkazy je dobré umístit i do spouštěcího skriptu, aby byl teploměr příště k dispozici hned po nastartování RasPi.)

 

Pak se pomocí příkazu lsmod může zkontrolovat, že ovladače opravdu běží.

Dále se musí zjistit unikátní kód konkrétního teploměru. 
Buď je možné se podívat přes správce souborů do složky /sys/bus/w1/devices/ , ve které je složka s názvem, odpovídajícím kódu, nebo se dá název té složky vypsat přímo v terminálu příkazem:

ls /sys/bus/w1/devices/    

Aktuální teplota je pak zakódovaná v textovém souboru "w1_slave" v té složce.

Takže vypsání obsahu souboru je možné například takto:

cat /sys/bus/w1/devices/unikátní kód/w1_slave

Teplota je pak ten poslední údaj na druhé řádce.

 

Občas se může stát, že dojde k problému v komunikaci. V tom případě není údaj o teplotě správný, ale zároveň je v souboru informace, že nesouhlasí kontrolní součet. Vyhodnocování takovýchto stavů je pak věcí dalších programů.

 

 

Zatím mám vyzkoušené pouze jedno čidlo, ale předpokládám, že když se připojí několik čidel paralelně, vznikne více složek s unikátními kódy, ve kterých bude opět ten soubor "w1_slave", který bude obsahovat údaj o teplotě příslušného čidla. 

Až seženu další čidlo, tak to ověřím.

 

A takhle vypadá čidlo připojené k mojí "bastl" desce. Protože jsem měl původně na portu GPIO4 připojenou LEDku, přidal jsem k ní rozpojovací propojku.

 


Doplnění 2.9.2012

Potvrzuji, že při připojení druhého čidla paralelně k prvnímu, se opravdu objeví další složka s unikátním kódem druhého teploměru:

Odpor 4k7 je možné připojit na desku na straně RasPi (není nutné ho pájet přímo na vývody u čidla). Mám vyzkoušené, že je možné připojit dvě čidla na jeden společný odpor u RasPi.
Schéma pak vypadá takto:


Editace 31.5.2013

Zrušena informace o instalaci ovladačů. Nejnovější verze operačního systému už má tyto ovladače v sobě přímo zabudované.

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 12.2.2015