BedsideTableDisplay czyli zegar na szafkę nocną mocno z InfluxDB korzystający opisywałem jakiś czas temu. Tym razem opiszę nieoczekiwane problemy z grzaniem się mikroprocesora, kwestię pomiaru temperatury „przy łóżku” oraz jak rozwiązałem kwestię jasności wyświetlacza.
Na pierwszy ogień sprawa temperatury. Pomiary były istotnie zawyżone. „Na oko” czyli obserwując pomiary sprawa wydała się podejrzana, więc dołożyłem obok termometr ze starej stacji pogody. Rozbieżność o kilka stopni. Czas na analizę danych w grafanie. Zdecydowanie w sypialni nie miałem cały czas powyżej 26 stopni.
Dalsze badanie zacząłem od pilnowania termometru w BTD i referencyjnego ze stacji pogody w jakkolwiek kontrolowanych warunkach.
Na początku w lodówce – tu brak odchyłów, choć można było zauważyć że niemal luzem ułożony chip DS28B20 bardzo szybko się ogrzewa od powietrza po otwarciu lodówki. Ciekawostka – ESP8266 w małą powierzchniowo lutowaną antenką Rainsun nie stracił sygnału WiFi.
Kolej na ułożenie w temperaturze lekko wyższej od pokojowej czyli na biurku. Tu znudzony czekaniem na wyrównanie temperatury schładzałem oba termometry sprężonym powietrzem odwróconym do góry nogami. Znowu BTD nagrzewał się dużo szybciej, ale tym razem różnica w pomiarze ustabilizowanym wynosiła 2-3 stopnie. Dużo.
Po zweryfikowaniu że jak każdy chip tak DS28B20 może mieć pewne odchyły spróbowałem go wymienić na zapasowy – dalej to samo. Wtedy dotarło do mnie że może któryś ze scalaków grzeje się nadmiernie i powoduje zwiększenie temperatury całego BTD. Pomiar „z palca” wydawał się potwierdzać teorię więc wyposażyłem się w pirometr – zakup kamery termowizyjnej do tego projektu byłby lekką przesadą 😉
Pomiary w izolowanej szafce w chłodnym pomieszczeniu potwierdziły że scalaki na Wemos D1 Mini Pro istotnie wpływają na temperaturę całości.
seria 1 pomiar A | seria 1 pomiar B | seria 2 pomiar A | seria 2 pomiar B | |
temp. otoczenia | 25°C | 25°C | 24°C | 25°C |
odczyt z DS18B20 | 25°C | 27°C | 24°C | 27°C |
ESP8266 | 31°C | 31°C | 29°C | 30°C |
CH2104 | 32°C | 35°C | 32°C | 34°C |
tranzystor zasilania | 25°C | 31°C | 34°C | 36°C |
wyświetlacz OLED | — | — | 25°C | 25°C |
Pomiar A to pomiar po około pół godziny od schłodzenia ciekłym powietrzem (do około -20°C) gdzie odczyt jest równy realnej temperaturze, pomiar B to odczyt po około godzinie kiedy się ustabilizował. Dla referencji link do strony producenta tej płytki wraz ze schematem – jest to wersja 1.1
Aż tak wysoka temperatura CH2104 kazała mi przemyśleć czy aby nie za dużo wypycham po porcie szeregowym. Sprawdziłem i okazało się, że wyłączenie wysyłania czegokolwiek nic nie daje. Ale chociaż kod źródłowy stał się czytelniejszy. Testując dla pewności jeszcze różne zasilacze USB znowu temperatura sekcji zasilania także nie uległa zmianie.
Jedyne co mogłem zrobić z grzejącymi się scalakami to zamontować aluminiowe radiatory, widoczne na pierwszym zdjęciu. Nie jestem pewien czy to coś dało, ale na pewno nie zaszkodziło elektronice chodzącej 24/7
Rozwiązanie problemu było w zasadzie oczywiste, ale unikałem go trochę by zachować zwartą konstrukcję BTD – wyprowadzić chip termometru na zewnątrz. Efekt natychmiastowy w postaci zrównania pomiarów z termometrem referencyjnym do pół stopnia i mniej więcej ćwierć stopnia z pomiarem powierzchni DS18B20 z pirometru.
Prowizorka jak zwykle okazała się najtrwalsza, więc sonda temperatury to teraz 2x 3 żyły przewodów połączeniowych (bo akurat nie miałem u siebie o odpowiednich końcówkach) połączone między sobą i DS18B20 rurką termokurczliwą.
Skoro termometr miał wrócić do sypialni to czas najwyższy zająć się jasnością OLEDowego wyświetlacza. Klasyczny model od Adafruit sterowanie podświetleniem teoretycznie ma dzięki driverowi SSD1306. Jednak zakres jasności jest tak beznadziejny że prawie zwątpiłem w swoją umiejętność sterowania układem przez I2C póki nie stworzyłem testowej pętli zwiększającej jasność krok po kroku, a potem migając wartościami MAX-MIN. Sterowanie napięciem wejściowym niewiele daje – póki jesteśmy w zakresie napięć SSD1306 to nie zmienia się nic – układ ma regulator napięcia. Schodząc poniżej ekran zaczyna zauważalnie migotać.
Jako że maksymalna jasność potrzebna jest i tak rzadko to dołożyłem mocno hardware’owe rozwiązanie – przyciemnioną plexi. Przy okazji całość trafiła do jakiegoś luźnego pudełka kuchennego – trochę jako stelaż dla plexi (odziedziczonego po innym projekcie więc nieco za dużego), trochę jako stabilizacja, bowiem BTD był tak mały że sztywny kabel zasilający powodował że ciężko było utrzymać go w pożądanym miejscu