Użyty model wyświetlacza to 3,5-calowy ekran dotykowy TFT 320×480 firmy ADAFRUIT model 2050 ze sterownikiem HXD8357D. Można było oczywiście skorzystać z innego bardziej nowoczesnego, szybszego jednakże ja osobiście mam wielki sentyment do niego ponieważ otrzymałem go na Walentynki od bliskiej mi osoby i w zasadzie to zdecydowało o jego wykorzystaniu, a także kształcie oraz wyglądzie obudowy czy elektroniki sterującej. Ten moduł wyświetlacza nie posiada sprzętowego sterownika touch-panela, dlatego zastosowałem układ STMPE811 firmy STMicroelectronics. Na PCB sterownika jest jeszcze jeden mały układ tego producenta – mianowicie stabilizator LDO: LD1117AS33TR dający napięcie 3,3V dla części logicznej urządzenia.

Za pomiar temperatury odpowiada znany powszechnie i lubiany wśród hobbystów czujnik DS18B20. Zazwyczaj korzystam z innych czujników, zdecydowanie według mnie lepszych, szybszych i dokładniejszych, jednakże w tym projekcie został użyty ten model ponieważ można go otrzymać jako moduł modDS18B20 w sklepie KAMAMI w specjalnej wodoodpornej obudowie ze stali nierdzewnej, który wręcz idealnie nadaje się do użycia dla budowy „wytrawiarki” (ja jeszcze go dodatkowo zabezpieczyłem koszulka termokurczliwą z klejem). Dodatkowo w przypadku jakiejkolwiek jego awarii wg. mnie jest on nie drogi i nawet na szybko do ewentualnego zastąpienia własną „samoróbką”.

Za komunikacje z telefonem odpowiada moduł ATNEL-WIFI232-T firmy ATNEL, użyty w jego podstawowej aplikacji komunikujący się z mikrokontrolerem za pomocą UART. Zdecydowałem się na niego ponieważ dzięki wsparciu producenta, a zwłaszcza dedykowanemu oprogramowaniu jest łatwy w konfiguracji, zarządzaniu oraz obsłudze i tak naprawdę problematyka jego używania sprowadza się do uruchomienia obsługi UART.

Dodatkowo na płycie sterownika znalazł się jeszcze BUZZER informujący o wciśnięciu danego klawisza jak i dioda informacyjna LED pierwotnie służąca do debugowania aplikacji, a finalnie informuje dodatkowo o pracy urządzenia przy otwartej obudowie.

 

PCB zasilania i triaków

Płyta sterownika łączy się z drugą płytką, która stanowi moduł zasilania wraz z triakami wykonawczymi. Napięcie 230V jest podawane na uzwojenie pierwotne transformatora o napięciu wtórnym 9V, a po wyprostowaniu trafia na moduł przetwornicy ATB-PWR-3 firmy ATNEL, która daje 5V na wyjściu. Dzięki jej wykorzystaniu w obudowie nie podnosi się temperatura, natomiast dodatkowa jej funkcjonalność wykorzystywana jest do załączania urządzenia przez przełącznik na przednim panelu. Do załączania grzałki i napowietrzacza służą triaki firmy BTA08-600C o wydajności prądowej 8A więc ze sporym zapasem mocy. Mikrokontroler komunikuje się z nimi przez optotriaki MOC3043 firmy Fairchild Semiconductor z wbudowanym układem detekcji przejścia przez zero.

Zastanawiałem się pierwotnie czy nie zrobić własnego pomiaru tego przejścia oraz dać inne optotraki, by sterować intensywnością napowietrzania, ale mam takowe wbudowane już w napowietrzacz ACO-9602 firmy HAILEA, a z mojego doświadczenia wynika, że używam praktycznie jednej nastawy bliskiej pełnej mocy więc zrezygnowałem z tego pomysłu. Dodatkowo dodałem kondensator filtrujący na wejściu do transformatora oraz w ramach zabezpieczenia w urządzeniu występują dwa bezpieczniki: 6A znajdujący się w gnieździe wprowadzającym zasilanie 230V i 1A dla części logicznej. W całej sekcji zasilania jak i na PCB sterownika występują kondensatory tantalowe i ceramiczne MLCC, by zapewnić jak najlepszą filtracje zasilania dla mikrokontrolera. Warto też wspomnieć, że przy triakach znajdują się 1W metalowe rezystory pracujące w roli gasików. Płytki zaprojektowałem w programie Eagle w wersji 7.6 Maker firmy Autodesk Inc.

 

Opis programu

Program dla mikrokontrolera został napisany w języku C w środowisku TrueSTUDIO w wersji 5.5.2 Lite firmy ATOLLIC z wykorzystaniem bibliotek HAL i uprzednio wygenerowanym kodem konfiguracyjnym w STM32CubeMX. Zegar STM32F11RET6 pochodzący z PLL rezonatora kwarcowego 8 MHz skonfigurowany jest na 100 MHz. Do odliczania czasu wykorzystywany jest również zewnętrzny rezonator dla RTC 32,768 kHz.

W CubeMx zostały skonfigurowane takie peryferia mikrokontrolera jak RTC, TIM2, TIM10, I2C1, SPI1 oraz USART2 oraz odpowiednie przerwania i porty GPIO dla poszczególnych wyjść wg. dołączonego schematu. Plik wynikowy konfiguracji z programu CubeMX dołączam również do wglądu podobnie jak plik main.c, który teraz skrótowo omówię.

 

Program działa w następujący sposób, iż po załadowaniu i skonfigurowaniu zegarów oraz poszczególnych peryferii mikrokontrolera inicjalizuje wyświetlacz po SPI oraz uruchamia kontroler touch-panela STMPE811 na I2C1. Następnie po przywitaniu się krótkim „intro” i wydaniu komunikatu dźwiękowego załącza menu główne i w tym momencie mikrokontroler zaczyna oczekiwać na przerwanie EXTI9_5_IRQHandler zgłaszane przez dotknięcie ekranu. Następnie po przeanalizowaniu danych odebranych z STMPE811 wylicza miejsce dotknięcia i na tej podstawie załącza wybraną opcję. W tle na przerwaniach wykonuje się cały czas pomiar temperatury oraz odbieranie i wysyłanie danych przez WiFi za pomocą UART dla telefonu – o ile jest włączony – a jego podłączenie sygnalizowane jest zmianą stanu ikony w menu głównym. Za odliczanie czasu dla timeraa po wciśnięciu klawisza „AIR” odpowiedzialny jest układ RTC i wykorzystanie z niego przerwania RTC_WKUP_IRQHandler, w nim również znajduje się obsługa animacji termometru wówczas gdy pracuje grzałka. SysTick_Handler używany jest dla wydawania komunikatów dźwiękowych po wciśnięciu klawisza przez BUZZER, a w momencie wybrania klawisza „HOT” czyli uruchomienia grzania dla dwustopniowej histerezy.

Po wybraniu menu „SETUP” dostajemy możliwość ustawienia temperatury w zakresie 20-60 stopni (domyślnie po włączeniu na 40 stopni) oraz wybrania funkcji pracy TIMERa, jako zwykły zegar odmierzający czas, a także odmierzający czas w dół w ustawionym zakresie od 1 do 90 minut po którym to nastąpi wyłączenie zarówno grzania jak i napowietrzania.

Osobną nastawą jest załączanie sekwencyjne napowietrzania w zakresie 2-9 sekund, przydatne podczas podgrzewania B327. Klawiszem „BACK” wracamy z powrotem do menu głównego. W zależności od wybranych ustawień w menu setup zmienia się na nim opis i sposób pracy TIMERa. Po włączeniu klawiszy „HOT” czy „AIR” oprócz zmiany ich kolorów dodatkowo podawany jest stan pracy zmiennymi ON/OFF. Gdy temperatura osiągnie zadany próg, termometr zmienia kolor na zielony i wyświetlany jest napis OK.