Moje Raspberry Pi - plugin OSPy měření teploty pomocí DS18B20

Seznam článků

Pro měření teploty bazénu jsem potřeboval do OSPy doplnit do stávajícího rozšíření "Air Temperature and Humidity Monitor" měření a logování z teplotního čidla Dallas DS18B20.

Problém nastal ve chvíli když jsem zjistil, že na Raspberry Pi jediný volný pin GPIO 4 (pin 7), který umožňuje funkci one wire je již obsazen signálem CLOCK posuvných registrů OSPy. Než abych desku spojů nějak "bastlil" a hodiny dal na jiný pin (navíc nevím kolik uživatelů již OSPy používá a při vydání nové verze OSPy by jim stávající deska přestala pracovat!), tak jsem šel cestou samostatné HW desky připojené pomocí I2C sběrnice (tak jako ostatní prvky systému - LCD displej, tlačítka, RTC...)

OSPy plugin "Air Temperature and Humidity Monitor" je kompatibilní s HW1 i HW2 verzí.

HW2 verzi lze použít například takto

čidlo DS0 = teplota vody bazénu

čidlo DS1 = teplota bojleru

čidlo DS2 = teplota vzduchu

čidlo DS3 = teplota vytápění (voda do radiátorů)

čidlo DS4 = teplota obývák

čidlo DS5 = teplota zavlažovací vody

..... atd.


ZDARMA

  • hex pro procesor ATMEGA328 1.0 HW2

DONATE

  • deska spojů HW2 a gerber (Eagle), zdroj pro Arduino IDE od verze 1.0 výše

Verze FW

  • 1.0 výchozí verze HW2

Tato deska slouží jako HW2 rozšíření pro rozšíření "Air Temperature and Humidity Monitor" v OSPy systému. Deska se po připojení k OSPy objeví na adrese 0X03. Deska umožňuje připojit 6 čidel DS18B20, ke každému čidlu může být kabel dlouhý až 50 metrů (stíněný kabel).

Verze HW1 a HW2 se liší:

HW1-FW1.1 HW2-FW1.0
6 čidel DS18B20 6 čidel DS18B20
nastavení počtu čidel pomocí DIP (1-6) nastaveno 6 čidel
v případě delšího vedení (> cca 10m) pouze jedno čidlo vedení cca 50m pro každé čidlo samostatně
jedna nadproudová ochrana pro všechna čidla ochrana pro každé čidlo samostatně

Schéma zapojení

 schema

Deska spojů

top

bot

osazovak

Foto prototypu

DSC 0352

DSC 0354

DSC 0355

DSC 0356

DSC 0357

DSC 0360

DSC 0363

Test pomocí Arduina (jako master I2C reader na adrese 3)

DSC 0364

DSC 0366

DSC 0367

Snímek obrazovky 50

Seznam součástek

Označení Hodnota Prodejce Cena ks Celkem
 R16 10k

https://www.tme.eu/cz/details/1_4w10k/uhlikove-rezistory-tht-1-4w/royal-ohm/cfr0w4j0103a50/

 0,3,-  0,3,-
 R1,R6,R8,R10,R12,R14 1K  http://www.tme.eu/cz/details/mf0204fte52-1k/metalizovane-rezistory-tht-04w/yageo/mf0204fte52-1kl/  0,3,-  1,8,-
 R2,R3 4K7  http://www.tme.eu/cz/details/mf0204fte52-4k7/metalizovane-rezistory-tht-04w/yageo/mf0204fte52-4k7l/  0,3,-  0,6,-
 R4,R13,R15,R7,R9,R11 Ochrana PTC cca 50mA-500mA  http://www.tme.eu/cz/details/b59990c0120a070/termistory-ptc/epcos/  7,9,-  47,4,-
 R5 220  http://www.tme.eu/cz/details/m0.4w-220r/metalizovane-rezistory-tht-04w/royal-ohm/mff04ff2200a5/  0,2,-  0,2,-
 D1 LED 3 mm  http://www.tme.eu/cz/details/l-934hd/led-diody-tht-3mm/kingbright-electronic/  2,5,-  2,5,-
 D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13 BA159  http://www.tme.eu/cz/details/ba159/univerzalni-diody-tht/dc-components/  1,2,-  14,4,-
 C1,C2 22 pF  http://www.tme.eu/cz/details/cc-22/keramicke-kondenzatory-tht-50v/sr-passives/  0,2,-  0,4,-
 C3 100 nF  http://www.tme.eu/cz/details/cm-100n/kondenzatory-mlcc-tht/sr-passives/  0,6,-  0,6,-
 Q1 16 MHz  http://www.tme.eu/cz/details/16.00m-hc49-s/krystalove-rezonatory-tht/yic/  14,6,-  14,6,-
 C4 1000uF  https://www.tme.eu/cz/details/ce-1000_16pht/elektrolyticke-kondenzatory-tht-105c/sr-passives/  2,5,-  2,5,-
 SW1 mikrotlačítko 6x6  https://www.tme.eu/cz/details/tact-64k-f/mikrospinace-tact/ninigi/  1,5,-  1,5,-
 IC1 ATMEGA328  http://www.tme.eu/cz/details/atmega328-pu/mikroprocesory-atmel-avr-tht/microchip-atmel/  64,-  64,-
 IC1 DIL28  http://www.tme.eu/cz/details/gold-28p-w/presne-patice/connfly/ds1001-01-28bt1nsf6s/  17,-  17,-
 K1 UART 3 pin lámací  https://www.tme.eu/cz/details/mlss100-3-d/konektory-ce100-raster-254mm/pancon/  3,1,-  3,1,-
 SCL, SDA 2 pin lámací  http://www.tme.eu/cz/details/zl201-02g/konektory-hrebinky/connfly/ds1021-1_2sf1-1/  0,5,-  1,-
 I2C, I2C/2 4 pin samec  http://www.tme.eu/cz/details/280371-1/signalove-konektory-raster-254mm/te-connectivity/  14,9,-  29,8,-
 6x DS konektory 3 pin RM 5mm  http://www.tme.eu/cz/details/dg126-5.0-3p14/svorkovnice-do-plosnych-spoju/degson-electronics/dg126-50-03p-14-00ah/  5,6,-  
Celkem cca
 199,-

 


Tato deska slouží jako HW rozšíření pro rozšíření "Air Temperature and Humidity Monitor" v OSPy systému. Pomocí 4 DIP přepínačů nastavíme na desce počet použitých čidel DS18B20 na sběrnici one wire. Deska se po připojení k OSPy objeví na adrese 0X03.

V mém případě jsem k bazénu natáhnul v PVC trubce zemí 50 metrů stíněného kabelu JYTY-O 2x1mm2 , kde jeden konec kabelu je zapojen do desky (+5V, 0V, Data) a druhý konec je připojen k čidlu Dallas DS18B20 (+5V, 0V, Data). Při velké vzdálenosti kabelu nelze použít z důvodů kapacit kabelu více čidel než pouze jedno čidlo. Na pár metrů lze připojit i 6 čidel. Rozšíření umožňuje nastavit od 1 do 6 čidel. Kabel táhnu společně (ve stejné trubce) s kabelem CYKY 3Cx2,5 mm2 pro motor filtrace 300W (také ho ovládám přímo pomocí OSPy). Po cca měsíci používání jsem zjistil, že není problém s rušením od silového kabelu pro čerpadlo.

V procesoru je u měření použito 9-bitové rozlišení teploty čidla Dallas (+ - 0.5 ºC) pro běžný provoz dostačující (teplota bazénu) - nadšencí si mohou ve zdrojovém kódu upravit :-)

  • 9 bitů: přesnost 0.5 ºC, převod trvá 93.75 ms
  • 10 bitů: přesnost 0.25 ºC, převod trvá 187.5 ms
  • 11 bitů: přesnost 0.125 ºC, převod trvá 375 ms
  • 12 bitů: přesnost 0.0625 ºC, převod trvá 750 ms

Z desky se odesílá po I2C sběrnici 5 bytů krát počet čidel nastavených pomocí DIP přepínačů na desce (příklad 2 čidla = 2*5 bytů).

Program obsahuje funkci, že pokud nepřijde z OSPy I2C požadavek na desku do 30 vteřin, tak se procesor restartuje (slouží jako zabránění zatuhnutí I2C registrů v procesoru). Rozšíření v OSPy zasílá požadavek na teplotu po 5 vteřinách, tak by nemělo k restartu CPU vůbec docházet.

ZDARMA

  • hex pro procesor ATMEGA328 1.0, 1.1

DONATE

  • deska spojů a gerber (Eagle), zdroj pro Arduino IDE od verze 1.0 výše

Verze FW

  • 1.1 původní verze 1.0 neodesílala zápornou hodnotu teploty, proto změna přenosu dat po I2C směrem do OSPy (každé DS čidlo odesílá 5 bytů), změna počtu čidel na 6 ks (sběrnice může v základu z CPU odeslat max 32 bytů - bez komplikací 6ks DS * 5 bytů = 30 bytů), změna času hlídání chodu I2C z 15 na 30 vteřin. Odesílá se tento formát dat: 5 byte s teplotou jako: př: -125.2 se odešle status, tis, sto, des, jed jako 1,1,2,5,2 a číslo 85.5 se odešle jako 0,0,8,5,5. Aktuální verze OSPy pluginu nepracuje s verzí 1.0, je nutné v procesoru Atmega 328 vyměnit program za verzi 1.1. DIP spínač aktuálně nevyužívá 4 spínač (váha 8), ale pouze váhy 1, 2, 4.
  • 1.0 výchozí verze

Pokud připojíme tuto desku k OSPy neosazujeme zkratovací kolíky SCL a SDA (PULL-UP) pro I2C sběrnici! Rezistory jsou již na desce OSPy osazeny. V případě použití v jiné konstrukci můžeme libovolně pomocí zkratovacích jumperů rezistory připojit.

Schéma zapojení desky

schema

Deska spojů

 deska

DSC 1308

DSC 1311

DSC 1321

DSC 1338

DSC 1340

Seznam součástek

Označení Hodnota Prodejce Cena ks Celkem
R1 1 - 4,7K *  http://www.tme.eu/cz/details/mf0204fte52-1k/metalizovane-rezistory-tht-04w/yageo/mf0204fte52-1kl/  0,3,-  0,3,-
R2, R3 4K7  http://www.tme.eu/cz/details/mf0204fte52-4k7/metalizovane-rezistory-tht-04w/yageo/mf0204fte52-4k7l/  0,3,-  0,6,-
R4 Ochrana  http://www.tme.eu/cz/details/b59990c0120a070/termistory-ptc/epcos/  7,9,-  7,9,-
R5 220  http://www.tme.eu/cz/details/m0.4w-220r/metalizovane-rezistory-tht-04w/royal-ohm/mff04ff2200a5/  0,2,-  0,2,-
D1 LED 3 mm  http://www.tme.eu/cz/details/l-934hd/led-diody-tht-3mm/kingbright-electronic/  2,5,-  2,5,-
D2, D3 BA159  http://www.tme.eu/cz/details/ba159/univerzalni-diody-tht/dc-components/  1,2,-  2,4,-
C1, C2 22 pF  http://www.tme.eu/cz/details/cc-22/keramicke-kondenzatory-tht-50v/sr-passives/  0,2,-  0,4,-
C3 100 nF  http://www.tme.eu/cz/details/cm-100n/kondenzatory-mlcc-tht/sr-passives/  0,6,-  0,6,-
Q1 16 MHz  http://www.tme.eu/cz/details/16.00m-hc49-s/krystalove-rezonatory-tht/yic/  14,6,-  14,6,-
SW1, SW2 DIP 2x1  http://www.tme.eu/cz/details/ds-02/prepinace-dip-switch/ninigi/  12,3,-  24,6,-
IC3 ATMEGA328  http://www.tme.eu/cz/details/atmega328-pu/mikroprocesory-atmel-avr-tht/microchip-atmel/  64,-  64,-
IC3 - pat DIL28  http://www.tme.eu/cz/details/gold-28p-w/presne-patice/connfly/ds1001-01-28bt1nsf6s/  17,-  17,-
SCL, SDA 2 pin lámací  http://www.tme.eu/cz/details/zl201-02g/konektory-hrebinky/connfly/ds1021-1_2sf1-1/  0,5,-  1,-
I2C, I2C/2 4 pin samec  http://www.tme.eu/cz/details/280371-1/signalove-konektory-raster-254mm/te-connectivity/  14,9,-  29,8,-
DS konekt 3 pin RM 5mm  http://www.tme.eu/cz/details/dg126-5.0-3p14/svorkovnice-do-plosnych-spoju/degson-electronics/dg126-50-03p-14-00ah/  5,6,-  5,6,-
Celkem   171,-

* Rezistor R1 je nutné vyzkoušet dle délky kabelu (začít od největší hodnoty směrem dolů - v mém případě 50 m kabelu mám R1 = 1K Ohm)

Systémové informace v rozšíření OSPy (deska pro DS18B20 je na adrese 0x03)

info

Rozšíření pro měření teploty a vlhkosti (ve stavovém okně teplota označené jako DS0)

temper

Použitý kabel a čidlo

Čidlo je napájené 5V (bezpečné napětí i v bazénu v případě "čehokoliv") - zároveň je čidlo bezpečně zalité v pryskyřici.

DS2

Označení vodičů čidla (VCC 5V, GND 0V, DQ data)

DS1

jyty o 2x1 0

DSC 0858

DSC 0863

DSC 0868

DSC 1045

DSC 1046

DSC 1054