English version

Solární LED teploměr

    Úvod:
Solární teploměr s LED displejem měří a zobrazuje teplotu v rozmezí -40,0 ... +99,9 °C a umožňuje měřit například vnitřní či vnější teplotu. Pamatuje si minimální a maximální naměřenou hodnotu, kterou lze zobrazit či vynulovat pomocí tlačítka. Lze také nastavit jas displeje. Tento teploměr je modifikací předchozího bateriového digitálního teploměru. Napájí se pomocí solárních článků a energii ukládá v superkondenzátorech (ionistorech).
    Popis zapojení:
Obvod teploměru řídí mikroprocesor IO1 - Atmel AVR ATmega88PA (případně starší 88A, 88V či 88PV, které však mohou mít mírně vyšší spotřebu). Jako čidlo teploty slouží integrovaný obvod IO2 typu MCP9700A (či MCP9700). Jeho výstupní napětí je 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í, jako je tomu u LM35. Obvod IO2 tvoří teplotní sondu ve vodotěsném obalu připojenou třížilovým kabelem. K zobrazení teploty slouží vysocesvítivý čtyřmístný LED displej se společnou anodou, např. KW4-561AVB, řízený multiplexně s frekvencí cca 100Hz. Katody displeje jsou připojeny na port PD, anody přes odpory na PB0 až PB3. Odpory R1 až R4 určují špičkový proud segmentů displeje a tím i maximální nastavitelný jas. Multiplexuje se "naruby" - v 8 krocích po 4 stejných segmentech (nejdříve čtveřice segmentů A, poté čtveřice segmentů B, atd.). Díky tomu postačují 4 odpory, není jich potřeba 8. Teploměr využívá vstup ADC0 (vývod 23) nesymetrického 10-bitového AD převodníku obvodu ATmega88PA (1024 čítání). Rozlišení AD převodníku je metodou převzorkování zvýšeno na 1500 čítání a tím je dosaženo rozlišení měření 0,1°C. Při každém obnovení hodnoty je vytvořeno 47 vzorků, ty jsou sečteny, osmina posledního vzorku je odečtena a výsledek je dělen 32. 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á, je použita vnější napěťová reference s IO3 - AP2138N-1.5, jejíž výstupní napětí 1,5V vstupuje do vývodu AREF IO1 (vstup externí napěťové reference). 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 pracuje s napájecím napětím do 2,5V omezeným pomocí obvodu TL431, aby s určitou rezervou nebylo překročeno maximální napětí superkondenzátorů, typicky 2,7 či 2,8V. Já jsem použil paralelní kombinaci osmi superkondenzátorů 60F na 2,8V (BUP002R8L606FC). Každý z nich má z bezpečnostních důvodů sériový odpor 47R pro omezení proudu v případě vnitřního či vnějšího zkratu. Bez toho je z důvodu malého vnitřního odporu zkratový proud superkondenzátorů velmi vysoký a představuje riziko požáru. Superkondenzátory jsou nabíjeny pomocí solárních panelů. Použil jsem panely s dostatečně velkou plochou a dostatečným počtem článků v sérii (10 či lépe 11), aby postačovalo rozptýlené světlo v interiéru, dokonce i když je oblačno. Není tedy třeba přímé sluneční světlo, teploměr funguje uvnitř místnosti. Odběr proudu je cca 4-5 mA při maximálním jasu za dne a napájecím napětí 2,5V. Jas lze nastavit v 5 krocích. Každý krok sníží šířku pulzu mitliplexu na polovinu předchozího a tím i jas na polovinu. V noci se jas sníží na čtvrtinu (při maximálním nastaveném jasu v noci je spotřeba cca 1-1,5 mA). Úroveň osvětlení je snímána pomocí vývodu 24 (vstup ADC1). 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í. Při napájecím napětí cca 1,9V je ještě displej čitelný za dne. Při 1,6V už je jas nízký a displej čitelný jen ve tmě.
    Měření:
Displej DISP1 zobrazuje aktuální teplotu ve stupních Celsia s rozlišením na jedno desetinné místo, v rozmezí -40,0 ... +99,9 °C. Obnovovací frekvence zobrazeného údaje je cca 1Hz.
    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 10s 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 5 krocích (následným stiskem TL1 nebo dlouhým stiskem TL2 se nastavení jasu uloží do EEPROM, aby mohlo být obnoveno po ztrátě napájení). Dlouhým stiskem TL2 (1s) lze teploměr vypnout. Zapnutí se provede stiskem TL1.

Program pro AVR teploměr ke stažení:
zdrojový kód v assembleru (ASM)
přeložený HEX soubor (1114 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 solárního LED teploměru s pamětí minima a maxima a nastavitelným jasem s AVR ATmega88PA.


Hotový solární LED teploměr.


Téměr hotový solární LED teploměr, pohled dovnitř


Hotový solární LED teploměr bez krytu


Hotový solární LED teploměr zevnitř


Solární LED teploměr - univerzální deska ze strany spojů


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



Přidáno: 10. X. 2023
zpět na úvodní stránku