English version

Bateriový teploměr s MIN / MAX a nastavitelným jasem

    Úvod:
Tento digitální teploměr s LED displejem umožňuje měřit a zobrazovat teplotu v rozmezí -40,0 ... +150,0 °C. Je ukládána minimální a maximální naměřená teplota, kterou lze vyvolat či resetovat pomocí tlačítek. Lze také nastavit jas displeje. Tento teploměr je vylepšenou verzí předchozího digitálního teploměru s MIN / MAX. Vychází z něj můj solární teploměr.
    Popis zapojení:
Obvod řídí mikroprocesor IO1 - Atmel AVR ATmega88PA (případně starší 88P, 88A, 88, 88V či 88PV, které však mohou mít mírně vyšší spotřebu). Jako snímač teploty slouží integrovaný obvod IO2 typu MCP9700A (či MCP9700). Te poskytuje na výstupu napětí lineárně závislé na teplotě, s koeficientem 10mV/°C + 500mV. Díky přičtení konstanty 500mV umožňuje měření záporných teplot bez záporného výstupního napětí. Obvod IO2 tvoří teplotní sondu připojenou třížilovým kabelem. V případě potřeby je zapouzdřena do vodotěsného obalu. K zobrazení teplot slouží čtyřmístný LED displej se společnou anodou. Displej je řízen multiplexně. Katody displeje jsou připojeny na port PD, anody přes odpory na PB0 až PB3. Frekvence multiplexu je cca 100Hz. Odpory R1 až R4 určují proud displeje a tím i jeho maximální nastavitelný jas. Já jsem displej sestavil ze dvou dvoumístných LD-D036UPG-C s velmi vysokou svítivostí, kterým stačí k dosažení dostatečného jasu malý proud. Multiplexuje se "naruby" - v 8 krocích po 4 stejných segmentech (nejdřív čtveřice segmentů A, poté čtveřice segmentů B, atd.). Díky tomu stačí displeji 4 odpory, není jich potřeba 8. Teploměr využívá vstup nesymetrického 10-bitového AD převodníku obvodu ATmega88PA. Rozlišení AD převodníku je metodou převzorkování zvýšeno na 11 bitů a tím je dosaženo rozlišení měření 0,1°C. Při každém obnovení hodnoty je vytvořeno 32 vzorků, ty jsou sečteny a výsledek je dělen 16ti. Tím je získán 11-bitový výsledek. Pro převzorkování o 1 bit by postačily 4 vzorky, avšak větší množství vzorků umožní lepší stabilitu a eliminaci náhodných chyb. Protože vnitřní napěťová reference AVR není příliš přesná a nelze ji nastavovat, je použita vnější napěťová reference s IO3 - AP2138N-2.5, jejíž výstupní napětí 2,5V vstupuje do děliče R5, R6, P1. Pomocí potenciometru P1 je vstupní napětí vývodu AREF IO1 nastaveno na 2,048V, což zajišťuje strmost 0,1°C / 1mV. Šlo by použít i např. referenci (regulátor) AP2138N-2.1 poskytující napětí 2,1V (po úpravě napěťového děliče na výstupu). IO1 využívá jako zdroj taktování zabudovaný RC oscilátor 8MHz s aktivovaným předdělením osmi (CKDIV8), běží tedy na frekvenci 1MHz. Krystal není potřeba - frekvence není pro teploměr kritická. Teploměr se napájí z baterie 3,6 až 4,5V. Lze použít např. 3 jednorázové tužkové nebo mikrotužkové články 1,5V (alkalické či zinko-uhlíkové), 3 nabíjecí články NiMH či NiCd 1,2V nebo jeden Li-ion či Li-Pol článek okolo 3,7V. Odběr proudu je cca 0,3 - 0,5mA při minimálním jasu (doba provozu s 2000mAh tužkovými články cca 7 měsíců) a asi 3 - 5 mA při maximálním jasu (doba provozu téměř 3 týdny). Většina proudového odběru je spotřeba LED displeje (kromě nejnižších stupňů jasu), záleží na hodnotě R1...R4, počtu svítících segmentů a napájecím napětí. Já jsem spotřebu testoval s odpory R1...R4 o hodnotě 287R a s napětím 3,6V.
    Kalibrace:
Kalibrace měřidla se provede připojením přesného digitálního voltmetru na C3 a nastavením napětí 2,048V pomocí trimru P1. Alternativně lze měřidlo kalibrovat dle známé teploty, např. podle přesného teploměru nebo ponořením vodotěsné sondy do ledové tříšti a nastavením na 0,0°C. Případně lze kalibrovat také změřením výstupního napětí teplotního čidla a nastavením P1 tak, aby se zobrazila odpovídající teplota. Např. při napětí 738mV na výstupu nastavit zobrazení na 23,8 °C (738mV - 500mV = 238mV, což při 10mV / °C odpovídá 23,8 °C).
    Měření:
Displej DISP1 zobrazuje aktuální teplotu. Obnovovací frekvence zobrazeného údaje je cca 1,56Hz (obnoví se každých 0,64s).
    Funkce minimum / maximum a jas:
Teploměr sleduje a ukládá maximální a minimální teplotu. Tu lze zobrazit stiskem tlačítka TL1. S každým stiskem se střídavě zobrazuje maximum a minimum. Cca 2s po uvolnění tlačítka se opět zobrazí aktuální hodnota teploty. Paměť minima a maxima lze resetovat dlouhým stiskem TL1 (cca 1s). Poznámka: Sledování minima a maxima začíná až po prodlevě cca 6 - 7s od zapnutí měřidla, aby se předešlo uložení nesmyslných hodnot těsně po zapnutí, kdy se obvod teploměru ještě neustálil. Pomocí TL2 lze nastavit jas LED displeje v 6 krocích. Dlouhým stiskem TL2 (1s) lze teploměr vypnout. Vypínač v sérii s baterií není potřeba. Zapnutí se provede stiskem TL1.

Program pro AVR teploměr ke stažení:
zdrojový kód v assembleru (ASM)
přeložený HEX soubor (926 Bajtů)
Low fuse = 62, High fuse = DF , Extended fuse = F9, Lock fuse = FF

Zapisování programu do AVR se podrobněji věnuji zde.

Případným zájemcům mohu naprogramovaný mikroprocesor poslat. Více info zde.


Schéma bateriového digitálního LED teploměru s pamětí minima a maxima a nastavitelným jasem s AVR ATmega88PA (ATmega88).


Hotový digitální LED teploměr bez krytu a s krytem.


Hotová deska mého min/max teploměru s ATmega88PA.


Začíná tvorba desky


Většina součástek osazena


Připojování kabeláže k desce


Tvorba teplotního čidla s MCP9700A - izolace jednotlivých vývodů smršťovacími bužírkami


Teplotní čidlo s další smršťovací bužírkou zakrývající všechny vývody. Poté jsem přidal ještě jednu vrstvu pro vodotěsnost. Před smeštěním této a finální modré bužírky jsem dovnitř aplikoval vteřinové lepidlo. Tento postup se v minulosti osvědčil. Jedno takové vodotěsné čidlo funguje na střeše již 10 let.


Video - Vývoj, stavba a testování teploměru (anglicky)



Přidáno: 18. VIII. 2022
zpět na úvodní stránku