Serwisy partnerskie:
Close icon
Serwisy partnerskie

Jak zbudować kalibrowany termometr kąpielowy wykorzystujący Arduino?

Prezentowane urządzenie to termometr kąpielowy dla mojego synka, któremu dedykuję ten artykuł. Obecnie na rynku jest cała gama termometrów do wanienek, a i same wanienki wyposażone są w termometr – naklejkę. Mają one wspólną cechę: nie są kalibrowane.
Article Image

Zmierzony rozrzut dla trzech takich samych sztuk wyniósł aż około 5°C. Jest to zdecydowanie zbyt duży rozrzut pomiarowy, biorąc pod uwagę, że optymalna temperatura wody do kąpieli niemowląt wynosi 37–39°C.

Niestety na rynku dominują termometry o niskiej jakości wykonania. Głównym mankamentem jest niedopasowanie kapilary do skali, które bywa niestabilne – przykład na fotografii 1.

Takie były impulsy do budowy całkowicie wodoodpornego termometru z czytelnym wyświetlaczem, który w odróżnieniu od komercyjnych rozwiązań umożliwia precyzyjną kalibrację czujnika temperatury.

Efekt finalny można zobaczyć na okładce oraz tutaj https://youtu.be/fTW-SM2122g.

Zanim jednak powstała ostateczna wersja termometru prezentowanego na fotografii tytułowej, należało przejść drogę od idei do schematu. W tym celu przyjąłem trzy założenia, które stały się fundamentem do opracowywania projektu.

Termometr kąpielowy powinien cechować się:

  • bezpieczeństwem użytkowania,
  • dokładnością pomiarową,
  • atrakcyjnością wizualną.

Zgodnie z założeniem dotyczącym bezpieczeństwa dziecka, jako kształt termometru została wybrana kula, gdyż pozbawiona jest ostrych krawędzi. Eliminuje to ryzyko skaleczenia dziecka. W kontekście bezpieczeństwa trzeba również pamiętać o zabezpieczeniu elektroniki przed szkodliwym działaniem wody. Z tego względu elektronika została zalana w transparentnej żywicy, czyniąc układ całkowicie wodoodpornym, o klasie szczelności IP68.

Dodatkowo żywica spaja wszystkie elementy w odporny na upadek termometr. Aby osiągnąć założony kształt, wykorzystano kuchenną formę do lodów (o średnicy 50mm), która posłużyła jako forma do odlewu. Przedstawia ją fotografia 2. Nie stanowiła ona części składowej obudowy produktu finalnego. Urządzenie nie ma żadnych złączy ani przycisków. Jest zasilane z wbudowanego akumulatora, a ten ładowany jest bezprzewodowo (indukcyjnie).

Fot.2 Forma do odlewu termometru kąpielowego

Kolejnym założeniem jest dokładność pomiarowa. Pierwszą możliwością był często prezentowany na łamach gazety analogowo-cyfrowy DS18B20, niewymagający kalibracji. Jednak zastosowanie go wiązałoby się z bardziej skomplikowanym oprogramowaniem niż w przypadku obsługi równie popularnego LM35D. LM35 jest czujnikiem analogowym, umożliwiającym dokładny pomiar temperatury do 100℃, co w tym przypadku jest więcej niż wystarczające.

Czujnik ten charakteryzuje się współczynnikiem przetwarzania na poziomie 10mV/°C. Dla przykładu przy temperaturze 25°C napięcie wyjściowe wynosi 0,25V i to napięcie podawane jest bezpośrednio do przetwornika ADC mikrokontrolera. Kolejną zaletą czujnika jest pożądana dokładność na poziomie 0,5℃ i szybki czas reakcji na zmiany temperatury. Ze względu na omówione zalety w opisywanym termometrze kąpielowym został wykorzystany układ LM35.

Fot.3 Dioda RGB informująca o potencjalnym zagrożeniu

Zgodnie z ostatnim punktem założeń istotne jest, aby urządzenie przyciągało uwagę nie tylko dziecka, lecz wszystkich osób potencjalnie korzystających z urządzenia, np. rodziców. W tym celu elementy elektroniczne przed przystąpieniem do ich łączenia zostały odpowiednio spreparowane. Kondensator elektrolityczny został pozbawiony etykiety tak, aby metaliczny kolor komponował się ze srebrzanką.

Wszystkie elementy układu zostały luźno rozlokowane w przestrzeni kuli. W połączeniu z transparentną żywicą, w której zostały umieszczone, umożliwiają identyfikację każdego z nich każdemu ciekawskiemu obserwatorowi. Dodatkowo termometr został wyposażony w diodę RGB, która swoim zmieniającym się w zależności od temperatury kolorem może informować użytkownika o potencjalnym zagrożeniu, co prezentuje fotografia 3. Diody rozświetlają transparentną kulę, eksponując znajdujące się wewnątrz komponenty.

Opis układu - kalibrowany termometr wykorzystujący Arduino

Dla lepszej przejrzystości schemat ideowy został podzielony. Wyodrębnić można część zasilania – rysunek 1 i fotografia 4, oraz część odczytu i prezentacji wyniku – rysunek 2. Sercem układu zasilania (rysunek 1) jest akumulator (LIP 501745) Li-Pol 3,7V o pojemności 360mAh z zabezpieczeniem napięciowym. Fotografia 5 prezentuje akumulator ładowany za pomocą ładowarki indukcyjnej, stosowanej do ładowania szczoteczki elektrycznej.

Rys.1 Schemat ideowy (część zasilania)  - kalibrowany termometr kąpielowy

Ponieważ układ termometru musi być i jest hermetyczny, wymusiło to zastosowania ładowania indukcyjnego. Inspiracją, a zarazem układem testowym była stara szczoteczka elektryczna. Szybko okazało się niemożliwe wykorzystanie oryginalnego modułu ładowania. Otóż oryginalna ładowarka została zaprojektowana do ogniw Ni-MH o napięciu 1,2V. W związku z tym w opisywanym układzie wykorzystano samą cewkę ze szczoteczki, która jest częścią wtórną transformatora powietrznego (odbiornik). Częścią pierwotną transformatora jest fabryczna stacja dokująca (nadajnik).

Fot.4 Kalibrowany termometr kąpielowy - część zasilania

Pozyskana cewka ze wspomnianej szczoteczki to element L1 (H = 0,12mH i R = 2,6W). Do prawidłowej pracy transformatorów powietrznych konieczne jest dodanie kondensatora w celu zbudowania obwodu rezonansowego. Oryginalna ładowarka została zaprojektowana do ogniw Ni-MH o napięciu 1,2V. Z kolei aby napięcie było wystarczające do ładowania ogniwa Li-Pol należało dobrać pojemność C1 w celu zwiększenia napięcia wyjściowego

Rys.2 Odczyt i prezentacja wyniku - kalibrowany termometr kąpielowy

Zmierzone napięcie na mostku D1 przy nieobciążonym wyjściu wyniosło 13,2V, dlatego dodano rezystor R2 oraz diodę Zenera D2. Podczas ładowania rozładowanego akumulatora napięcie spada do 5,4V. Za mostkiem tętniące napięcie jest magazynowane w kondensatorze C1, gwarantując poprawną pracę modułu ładowania ogniwa M1. TP4056 to ładowarka Li-Pol o wydajności do 1A.

W prezentowanym układzie prąd ładowania jest ograniczony i nie przekracza 38mA. Tym samym nie występuje efekt nagrzewania się ogniwa, co jest bardzo ważne w szczelnej obudowie. Czas ładowania Li-Pol to około 20h, a czas pracy termometru po pełnym naładowaniu to 35min. Czas pracy jest w zupełności wystarczający. Złożona część zasilania przedstawiona jest na fotografii 2, gdzie widać również diody LED sygnalizujące proces ładowania.

Fot.5 Akumulator ładowany za pomocą ładowarki indukcyjnej

Uruchomienie termometru odbywa się poprzez obrót kuli, przez co aktywowany jest wbudowany mechaniczny czujnik przechyłu S1. Powstały spadek napięcia na R3 otwiera tranzystor T1. Wskutek tego startuje przetwornica Step Up zasilająca peryferia. Wzbudzony procesor wystawia stan wysoki, otwierając T2 dla dalszego podtrzymania zasilania. Termometr wyłącza się po 10 sekundach od momentu, gdy temperatura spadnie poniżej 28°C Zastosowanie scalonego kontrolera napięcia baterii nie tylko chroni ogniwo, odcinając zasilanie w przypadku rozładowania, dodatkowo spowoduje też reset procesora w przypadku utraty funkcjonalności.

Schemat ideowy części logicznej pokazany jest na rysunku 2. Sercem układu jest ATmega328P zaprogramowana w środowisku Arduino IDE na płytce UNO, z której został wyciągnięty mikrokontroler U1, a następnie wlutowany do termometru.

Program to zmodyfikowana wersja kodu z „kursu Arduino” odcinek 2 (kwiecień 2018). Aby nie dublować informacji, gorąco polecam wspomniany kurs dla początkujących autorstwa Piotra Góreckiego.

Wykorzystana w projekcie ATmega328 musiała być wcześniej przygotowana wspomnianym środowiskiem Arduino, ponieważ nowa „czysta” ATmega nie przyjmie programu po liniach Rx/ Tx.

W tym celu należy wgrać bootloader na nowy procesor, wykorzystując płytkę Arduino UNO w roli programatora ISP. Pierwszym krokiem będzie załadowanie programu o nazwie ArduinoISP do Arduino. Dzięki temu Arduino stanie się programatorem. Następnie w środowisku Arduino IDE wybrać zakładkę Plik / Przykłady / ArduinoISP i kliknąć wgraj. Kolejnym krokiem jest połączenie nowej ATmegi328 z płytką Arduino według tabeli 1.

Warto dwukrotnie sprawdzić połączenia elektryczne, gdyż jest to najczęstsza przyczyna problemów z zaprogramowaniem. Trzeba pamiętać o podłączeniu zasilania i podłączeniu rezonatora kwarcowego 16MHz, ponieważ platforma wykorzystuje zewnętrzne taktowanie. Zanim zostanie wypalony bootloader, trzeba zmienić typ programatora.

Aby tego dokonać, należy w środowisku Arduino IDE wybrać zakładkę Narzędzia / Programator i zaznaczyć Arduino as ISP. Tak przygotowana ATmega jest gotowa do wypalenia bootloadera, którego ikona znajduje się w zakładce Narzędzia. Po poprawnym wypalaniu mamy procesor, który w razie potrzeby możemy dowolnie wykorzystać. Do jego poprawnej pracy wymagany jest zewnętrzny kwarc, a program wgrywamy przez linię sygnałową Rx i Tx, co pokazuje fotografia 6.

Fot.6 Wgrywanie programu przez linię sygnałową Rx i Tx

Na etapie projektowania należało przede wszystkim uwzględnić aspekt termodynamiki, ponieważ energia cieplna wody oddziałuje na wszystkie elementy układu, a one wzajemnie na siebie. Zakładając, że temperatura ciepłej wody użytkowej w momencie nalewania może osiągnąć 50°C, to taką samą temperaturę będą miały elementy. W związku z tym nasuwają się pytania, czy nie uszkodzi się akumulator albo czy procesor nie będzie się zawieszał?

Czy nagrzewanie obudowy przez elementy nie zaburzy odczytu temperatury? Jak wpływ dużej masy żywicy przełoży się na tempo odczytu temperatury wody oraz co najważniejsze, czy gwałtowne zmiany temperatury elementów takich jak ogniwo i przetwornica podczas ładowania-rozładowywania mogłyby doprowadzić do eksplozji?

Z elementów wrażliwych na temperaturę najważniejsze są półprzewodniki w tym procesor, który według producenta stabilnie pracuje w temperaturze <120°C. Niewiele mniejszą wartość graniczną mają elektrolity, bo 105°C. Gorzej wygląda sytuacja ogniwa Li-Pol. Według specyfikacji żywotność ogniwa jest o 15% krótsza podczas pracy w temperaturze 40°C niż w temperaturze pokojowej 25°C.

Niemniej jednak producent zezwala na pracę (rozładowywanie) w temperaturze do 60°C. Tymczasem dla Li-Pol istotniejsza jest temperatura w procesie ładowania i przechowywania, która w prezentowanym projekcie jest optymalna i wynosi 25°C. W omawianym przypadku stosunkowo wysokie ciepło właściwe wody wynoszące 4190J/Kg*K korzystnie wpływa na możliwość odczytu temperatury. Żywica i czujnik temperatury mają niższe ciepło właściwe niż woda, przez co proces konwekcji jest ułatwiony.

Odczyt temperatury odbywa się poprzez czujnik LM35, który jest częściowo wysunięty poza obrys kuli. Sensor LM35 podaje napięcie proporcjonalne do temperatury na wejście przetwornika ADC. Odczytana wartość jest uśredniana przez program i prezentowana na trzech wyświetlaczach 7-segmentowych. Dla lepszej czytelności dwa pierwsze znaki mają wysokość 0,39 cala, a części dziesiąte 0,3 cala. Dodatkowo diody wyświetlaczy sterowane są osobno, dzięki czemu wyeliminowano problem migotania cyfr występujący w przypadku sterowania multipleksowego.

Taki zabieg pozwolił też uprościć kod programu. Największą korzyścią płynącą z tego rozwiązania jest uproszczenie połączenia procesora do wyświetlacza. Wadą tego typu metody jest konieczność gospodarowania większej liczbą wyprowadzeń niż ma ATmega. Rozwiązaniem było zastosowanie jednego pinu do sterowania dziesiątkami. Ponieważ termometr mierzy temperaturę w zakresie 30÷49,9°C, tym samym liczbę 3 wyzwala stanem wysokim, a 4 niskim. Odbywa się to poprzez załączenie segmentów A i D dla cyfry 3 i aktywację segmentu F dla cyfry 4, z kolei B, C i G są stale zaświecone. W przypadku wartości spoza zakresu: dla wartości <30°C jest wyświetlane [3-,-] a dla >=50°C [4-,-].

Dla oszczędności energii wartość prądu ustawiono na 5mA dla jednej diody wyświetlacza, co okazało sie wystarczające, nawet w przypadku silnej ekspozycji świetlnej.

Dodatkowa dioda RGB pełni funkcję wielobarwnego wskaźnika i alarmu. Ulokowana pod wyświetlaczem daje poświatę, której kolor ściśle odpowiada zaprogramowanym przedziałom temperatury. Przykładowo kolor niebieski oznacza zbyt zimną wodę, a mocna czerwień alarmuje o gorącej wodzie zagrażającej dziecku.

Kalibracja. Kalibracja czujnika jest istotnym etapem prac w celu uzyskania jak najlepszej dokładności. W omawianym projekcie z uwagi na wąski zakres pomiarowy zastosowano kalibrację jednopunktową. Czujnik został zanurzony w mieszaninie wody z lodem w plastikowym woreczku. Za pomocą drugiego termometru wzorcowego skalibrowano termometr kąpielowy poprzez dodanie w kodzie programu mnożnika wartości wynikowej.

Montaż i uruchomienie - kalibrowany termometr wykorzystujący Arduino

W prezentowanym projekcie sztuka nowoczesna wdarła się na dobre do elektroniki, co prezentuje fotografia 7. W kulistej bryle połączenia należy wykonywać przestrzennie, aby najoszczędniej zagospodarować miejsce. Tym samym połączenia elektroniczne zostały wykonane bez użycia PCB, metodą na pająka czyli w powietrzu. Zanim jednak powstały pierwsze połączenia lutowane, należało dobrać wielkość elementów i rozplanować ich położenie oraz ustalić kolejność połączeń. Konieczne było posiłkowanie się formą.

Równolegle testowano różne formy do odlewów. Na pierwszy ogień sprawdzana była forma do świec. Niestety była wykonana z twardego plastiku, a żywica trwale przywarła do tego tworzywa. Ostatecznie sprawdziła się forma na lód, która ma otwór wlewowy i jest otwierana, co ułatwia wyciągnięcie odlewu. Do odlewu idealnie sprawdziła się żywica epoksydowa Crystalline® 940. Jest transparentna i po utwardzeniu bezzapachowa, co jak się okazało, nie jest oczywiste dla żywic. Podczas prób z innymi typami żywic ich nieprzyjemny zapach utrzymywał się długo po stwardnieniu odlewu.

Fot.7 Praktycznośc i estetyka - kalibrowany termometr kąpielowy

W tym miejscu należy przestrzec osoby, które planują wykonać podobne odlewy z żywicy. Należy pamiętać, że podczas wiązania żywicy dochodzi do reakcji egzotermicznej, w której wydziela się ciepło. Temperatura w zależności od zastosowanej żywicy może nawet przekraczać 100°C! Dlatego przed przystąpieniem do prac należy obowiązkowo zapoznać się z instrukcją i kartą charakterystyki. W prezentowanym projekcie twardniejąca żywica była utrzymywana w niższej temperaturze, co wydłużyło czas twardnienia, ale podniosło bezpieczeństwo.

Lutowanie na pająka warto rozpocząć od elementu największego, który będzie stanowił trzymak i bazę dla kolejnych mniejszych komponentów.

Do połączeń wykorzystano srebrzankę o trzech średnicach 1; 0,7; 0,4 mm. Grubsza srebrzanka stanowi szkielet i wzmacnia całość podczas odlewu, ale konieczne było użycie cieńszych do prowadzenia sygnałów. Cewka została umieszczona współosiowo na wysokości dobranej eksperymentalnie tak, aby rdzeń stacji dokującej umożliwiał skuteczne przekazywanie energii. Wokół cewki umieszczono elementy zasilania, w tym akumulator, wypełniając przestrzeń dolnej półkuli. Przeciwna półkula została wykonana osobno. Zaprogramowany i przetestowany mikrokontroler z wyświetlaczem został umieszczony blisko sklepienia.

Fot.9 Zmontowany układ termometru kąpielowego

Podczas tworzenia takiej budowli należy każdorazowo przymierzać szkielet do formy, dzięki czemu oszczędzimy czas w przypadku poprawek. Fotografie 8 i 9 przedstawiają końcowy etap po połączeniu obydwóch sfer i sprawdzeniu jakości połączeń. Na tym etapie należy ostatecznie wykryć ewentualne błędy oraz sprawdzić funkcjonalność. Po zalaniu formy zmiany będą niemożliwe. Na fotografii 10 widać efekt końcowy. Aby edytować program po zalaniu, konieczne będzie wcześniejsze dodanie modułu komunikacji bezprzewodowej, na przykład Bluetooth.

Fot.10 Zmontowany układ termometru kąpielowego - po zalaniu formy

W Elportalu wśród materiałów dodatkowych są umieszczone trzy dodatkowe fotografie.

Gorąco zachęcam do budowania ciekawych układów, nawet prostych, ponieważ rozwijają umiejętności manualne i kreatywne myślenie, co jest cenione na rynku pracy. Doskonałą bazą do działania jest udział w Szkole Konstruktorów.

Do pobrania
Download icon Jak zbudować kalibrowany termometr kąpielowy wykorzystujący Arduino?
Tematyka materiału: LM35, termometr, ATmega3288
AUTOR
Źródło
Elektronika dla Wszystkich grudzień 2019
Udostępnij
UK Logo