8 grudnia 2017

Cyfrowy termometr z quasi-analogową skalą

Jakiś czas temu rozbił mi się pokojowy termometr, taki klasyczny z kapilarą (na szczęście nie był rtęciowy, zatem wizyta straży pożarnej nie była konieczna ;-) ). Pozostała po nim drewniana deseczka-skala, której żal mi było wyrzucać. Postanowiłem tchnąć w nią nowe, cyfrowe życie. Nowy termometr został zbudowany na jednostronnej płytce drukowanej w technologii smd. Jedynym elementem przewlekanym jest cyfrowy czujnik temperatury DS 18B20.
Termometr z przodu
Ciekawostkę stanowi wyświetlacz wykonany z 36 diod LED, wskazujących temperaturę od 0-35 stC. Diody zostały rozmieszczone tak, aby pasowały do oryginalnej skali. Z uwagi na gabaryty tych diod zdecydowałem się na rozmieszczenie ich w dwu słupkach - lewy dla temperatur parzystych i prawy dla nieparzystych. Jak łatwo policzyć ilość portów mikrokontrolera jest niewystarczająca dla wysterowania takiej ilości diod. Nie chcąc jednak niepotrzebnie komplikować układu (bufory, rejestry przesuwne itp.) zastosowałem tzw. charliplexing. W skrócie polega to na tym iż w danym ułamku sekundy jedno z wyprowadzeń mikrokontrolera jest podciągane do plusa zasilania, drugie do minusa; podczas gdy pozostałe "wiszą" w stanie wysokiej impedancji. Liczba n wyprowadzeń procesora wystarcza do wysterowania (n^2-n) diod. Zatem aby niezależnie obsługiwać 36 diod (a nawet 42) wystarczyłoby tylko 7 pinów. W praktyce, aby nie osłabiać ich jasności zbyt krótkimi oknami czasowymi zastosowałem 3 niezależne kanały po 12 diod i 4 piny procesora każdy. Na jeden słupek przypada z tej grupy 6 diod, zatem każda świeci z wypełnieniem 1/6.
Schemat termometru
Termometr zasilany jest napięciem 3V z bateryjki CR2032 umieszczonej w koszyczku. Sercem urządzenia jest bowiem mikrokontroler Atmel ATtiny2313, który przez większość czasu pozostaje uśpiony, pobierając mikroampery prądu. Wybudzenie następuje po naciśnięciu monostabilnego przycisku, po czym następuje pomiar temperatury, wyświetlenie jej na ok. 5 sekund i ponowne uśpienie. W zależności od zmierzonej wartości temperatury - parzysta czy nieparzysta - zapala się tylko właściwy słupek - lewy lub prawy - z odpowiednią ilością diod.
Płytka od strony elementów
Płytka drukowana oraz koszyczek są przykręcone do drewnianej skali termometru od spodu. Na wierzch wystaje tylko przycisk wyzwalający pomiar. Diody świecą przez wywiercone w deseczce otworki o średnicy 2mm. Deseczka skali jest dość gruba - ok 1 cm, bezpośredni odczyt przez te otwory byłby zatem dość utrudniony. Dlatego w każdy z otworków został wsunięty krótki odcinek światłowodu. Dzięki temu wskazanie temperatury tworzy na powierzchni deseczki ciąg świecących punkcików - taka guasi-analogowa skala.
Termometr od tyłu
Płytka termometru została zaprojektowana w programie Eagle oraz wykonana metodą "żelazkową". Program napisany, jak zwykle, w C (AVR GCC) - pady do wlutowania programatora są obecne na płytce. Załączam materiały źródłowe - schemat i płytkę (Eagle) oraz kod programu i wsad (AVRGCC).

Na temat tej konstrukcji rozpocząłem wątek na forum DIY portalu elektroda.pl

Brak komentarzy:

Prześlij komentarz