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í
Deska spojů
Foto prototypu
Test pomocí Arduina (jako master I2C reader na adrese 3)
Seznam součástek
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
Deska spojů
Seznam součástek
* 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)
Rozšíření pro měření teploty a vlhkosti (ve stavovém okně teplota označené jako DS0)
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.
Označení vodičů čidla (VCC 5V, GND 0V, DQ data)