PaJa-trb  >  Konstrukce  >  Teploměr s DS18B20
paja@paja-trb.cz
Asi 8 let jsem využíval služeb venkovního teploměru s čidlem PT100 a sestaveného obvodu s 7107 a 7seg. displeji 14,2mm.
Nevýhodou byla špatná kalibrace (v domácích podmínkách hůře realizovatelné) a taky malý displej (přece jenom bez brejlí toho moc nevidím :-)
Proto jsem se rozhodl pro stavbu nového teploměru, tentokrát s digitálními čidly DS18B20 (které jsou kalibrovány od výrobce), displeji s výškou znaku 25mm, procesorem ATmega8 a jako bonbónek analogový teploměr z 5ks RGB LED, plynule měnící barvu a výšku sloupce dle teploty.
Rozsah teplot je od -55°C (testováno jen na -20°C) do 99°C (omezeno programem).

Funkce:
Jádrem celého teploměru je ATmega8 v SMD provedení. Po přečtení teplot z čidel a v závislosti na nastavení programu vyšle data na posuvné registry a zobrazí hodnotu na displejích. Zároveň si neustále hlídá intenzitu osvětlení z foto-odporu a podle toho spíná tranzistory T4 a T5, čímž přemostí diody D6 a D7 v sérii napájení +5V k společným anodám displejů. Snížením napětí (asi o 0,7 nebo 1,4V) klesne i jas a s tím i odběr proudu.
RGB teploměr je ovládán 3 kanály PWM regulací přes T1-T3 a spol. anody LEDek jsou spínány posuvným registrem IO5. I zde je jas svitu LEDek regulován, ale tentokrát pomocí PWM. Na regulaci jasu displejů už nezbyl na ATmega8 žádný volný PWM kanál, vyřešila by to volba výkonnějšího procesoru s vícero PWM kanály a menší úprava programu ... snad někdy.

teplomer_ds18b20_menu2 Nastavení teploměru se prování pomocí 4 tlačítek.
V režimu zobrazování teploty mají tlačítka následující význam: SW2 - přepínání In/Out teploty (neaktivní v případě nastavení automatického střídání teploty)
SW3 - zobrazí Lo °C a po 0,5s MINimální naměřenou teplotu (při výpadku napájení se maže)
SW4 - zobrazí Hi °C a po 0,5s MAXimální naměřenou teplotu (při výpadku napájení se maže)

V menu mají tlačítka následující význam:
SW1 - vstup do menu, přeskočení položek nebo opuštění menu
SW2 - Enter - potvrzení zvolené hodnoty
SW3 - mínus - krok zpět
SW4 - plus - krok vpřed

Zvolené hodnoty se ukládají do paměti a jsou aktivní i po výpadku napájení.

Konstrukce:
Teploměr je na jednostranné DPS s větším množstvím drátových propojek, hlavně pod displeji. Většina součástek je SMD, takže je potřeba pevná ruka a trocha trpělivosti při osazování, zvláště procesoru odporů k RGB LEDkám, kde pod nimi vedou i 2 cesty.
Pozor při osazení DIS4, ten je oproti ostatním otočený !!! Protože se na něm zobrazuje znak °C.
Kondenzátory jsem umístil naležato, aby nepřevyšovaly přes displej. Naopak tlačítka jsou vyvýšené pomocí pinů z precizní patice. Foto-odpor je taktéž připájený do úrovně displejů, aby líp zachytával intenzitu osvětlení.
Pod stabilizátor je třeba dát chladič (použil jsem kus hliníku a dopiloval dle okolních součástek), protože při maximálním osvětlení a zapnutých RGB LED s napájením 12V už celkem dost topí. To byl taky jeden z důvodů umístit čidlo vnitřní (In) teploty částečně ven z krabičky (vypilovanou dírou v levém horním rohu) a zajištěné tavným lepidlem. Protože poblíž stabilizátoru čidlo už po pár minutách snímalo i vyzařované teplo s chladiče a to značně zkreslovalo měřenou teplotu (klidně i o pár °C).
Použité RGB LEDky bylo potřeba přebrousit jemným šmirglem, mezi ně jsem umístil přepážky, aby se tolik nepřenášelo světlo k okolním LED a nakonec jsem je zalil do tavného lepidla, pro zmatnění a rozptylu barev.
Teploměr jsem umístil do krabičky Z 28 (KP 17), není sice úplně ideální (má zkosené díly, proto jsem je musel otočit, aby se krabička srovnala).
Displej je krytý kouřovým plexisklem a RGB teploměr mléčným plexisklem. Obě plexiskla přesně padnou do děr v krabičce a pro jistotu jsou zevnitř zakápnuta tavným lepidlem. Nakonec jsem na krabičku nalepil potištěnou samolepku přelepenou (mimo displej) ještě průhlednou samolepící fólií. Vnitřek písmene o v nápisu teploměr je vystřihnutý, protože za ním je foto-odpor snímající intenzitu osvětlení.
Teploměr by měl fungovat i při neosazení IO5, RGB LED a součástek okolo nich - ve schématu označeno fialovou čárou, ale nezkoušel jsem (nechtělo se mi odpájet součástky).

Spotřeba:
Napájení adaptér 12V/0,5A v sérii s 3x1N4007, odběr v závislosti na zobrazené teplotě a osvětlení (hodnoty jsou přibližné) ...
0,25A     5V     při plném osvětlení
0,15A     4,3V
0,05A     3,6V
 Při 5V a R=68ohm jde na segment displeje 16mA,    při 4,3V I=8,6mA    a při 3,6V I=3mA

Program:
Nelze rozhodně brát jako nějaké dílo hodné programátora, při čtení teploty z čidel jsem se inspiroval ze ukázkových programů Bascomu a internetu, zbytek je tak nějak poslepovaný (hlavně překombinované menu) aby to nějak fungovalo. Dokonce se mi povedlo zaplnit Atmegu8 až po strop.
Po zapnutí napájení se zobrazí na displeji PAJA (klasika u mých konstrukcí :-), procesor si osahá čidla a načte se teplota, která ovšem po zapnutí ukazuje na 85°C, proto je tam prodleva 1s, po které se pokračuje v normální činnosti. Toto je z důvodu nezobrazení a nezaznamenání této "blbosti" do Max teploty.
Hlavní program kontroluje stav tlačítek, pak jednou za 10 kontrol přečte teplotu z čidel, změří intenzitu osvětlení a dle nastavení zobrazí požadovanou teplotu a případně i RGB LED.
Dojde li k odpojení nebo poruše čidla za provozu, tak to program pozná a na displeji bliká Err1 nebo Err2
Při zobrazení program kontroluje zda je na místě desítek 0, jestli ano tak ji nezobrazí. Dál kontroluje zda se má zobrazit znak °C, to ještě za podmínky větší záporné teploty např. -12.5 tento znak automaticky vypustí (nevešel by se na displej) a při oteplení se zase automaticky vrátí.

Okomentovaný výpis programu pro teploměr z BASCOMu


teplomer_ds18b20_schema

Zde je návrh plošného spoje o rozměrech 127 x 71 mm.
teplomer_ds18b20_osazovak_top teplomer_ds18b20_osazovak_bottom teplomer_ds18b20_spoje

Seznam použitých součástek :
R1-R6,8,11-17,
 19-25,27-32,34  - 68            SMD vel. 1206    (28ks)
R7,R9,35-37      - 4k7           SMD vel. 1206    (5ks)
R10,18,26,33,
 42,45,48,51,54  - 470           SMD vel. 1206    (9ks)
R38,R39          - 100
R40              - VT43N1        FOTO odpor
R41,44,47,50,53  - 220           SMD vel. 0805
R43,46,49,52,55  - 680           SMD vel. 1206
R56,57,59        - 10k
R58              - 10k           SMD vel. 1206
P1               - 5k            TRIMR - PT6V

C1-C4, C7-C10    - 100n          SMD vel. 1206    (8ks)
C5               - 470M/25V
C6               - 100M/16V  

T1-T3            - BC817          
T4, T5           - IRFD9120
D1-D5            - HB5-40ARAAGCABC (TME)  RGB LED - spol. anoda
D6, D7           - 1N4007        SMD 
DIS1-4           - HD-AA16RD     červený, 25mm, apol anoda
IO1-5            - 74HC595D      SMD - SO16
IO6              - 7805          + chladič
IO7              - DS18B20       TO-92
IO8B             - PSH02-03W  + protikus a na kablík druhé čidlo DS18B20
IO9              - MEGA8-16AU    TQFP32
ISP              - MLW06G

K1               - ARK500/2
SW1-SW4          - P-B1720       + piny z precizní patice na zvednutí tlačítek (16pinů)
Download Download:
Návrh DPS a SCH pro Eagle (od verze 5.6).
Obrázek pl. spoje TIF a PNG v rozlišení 600x600 DPI
Program teploměru pro ATmega8 - Soubory BIN, HEX a BAS (zdroják z BASCOM).
Obrázek štítku předního panelu v PNG s rozlišením 600x600 DPI



teplomer_ds18b20_foto1 teplomer_ds18b20_foto2
teplomer_ds18b20_foto3 teplomer_ds18b20_foto4


PaJa © PaJa-trb 2011- E-mail