Przedstawiam opis wykonanego przeze mnie podgrzewacza. Układ powstawał na szybko, nie jest w 100 % doskonały, jednak w 100 % spełnia swoje zadanie. W założeniach układ ma służyć do podgrzewania mleka (lub innego pokarmu) dla dziecka. Po podgrzaniu do zadanej temperatury (domyślnie jest to 38ºC, możliwość regulacji od 30ºC do 80ºC) temperatura jest utrzymywana aż do wyłączenia urządzenia. Urządzeniem wykorzystanym do podgrzewania jest zwykły bezprzewodowy (dowolnej mocy, ograniczonej prądem triaka) czajnik.
Schemat układu:
Krótki opis:
Jako czujnik temperatury został wykorzystany czujnik ds18b20 (1wire firmy Dallas). Czujnik został przylutowany do kabelka a następnie jego końcówki zostały zalane klejem na gorąco. Po nalaniu wody do czajnika wkładamy do niego czujnik i uruchamiamy układ.
Transformator T1 i układ Greatza to... ładowarka do Nokii (nic nie stoi jednak na przeszkodzie zrobić samemu taki zasilacz (po prostu mam trochę tych ładowarek, więc je wykorzystuję). Tranzystor T1 dołączony do wejścia INT0 (przerwanie zewnętrzne) mikrokontrolera 89c2051 to układ detekcji przejścia sinusoidy przez 0. Dioda D2 separuje układ detekcji od kondensatora na wejściu stabilizatora (kondensator wygładza napięcie tętniące - nie dałoby się wykryć momentu przejścia przez 0).Optoizolator MOC3023 jest sterownikem triaka (bez detekcji przejścia przez zero - gdyż triak steruje mocą grzałki korzystając z regulacji fazowej, czyli wycinania części sinusoidy). Sposób regulacji dostarczonej mocy do odbiornika wykorzystującej regulację fazową przedstawia rysunek poniżej - triak zostaje załączany z opóźnieniem. Im ono większe, tym mniej mocy jest dostarczanej do odbiornika (czas ten zawiera się w przedziale: 0 - 10 milisekund dla napięcia o częstotliwości 50 Hz).
(źródło: http://pl.wikipedia.org/wiki/Prostownik).
W początkowej fazie podgrzewania, gdy temperatura zadana jest o conajmniej 5 stopni wyższa od temperatury rzeczywistej wody, to grzałka pracuje prawie z pełną mocą. Gdy różnica temperatur zawiera się w przedziale 2 - 4 moc zostaje zmniejszona, przy mniejszej różnicy moc jest jeszcze mniejsza. Gdy temp. rzeczywista osiągnie temp. zadaną grzałka zostaje wyłączona całkowicie. W przypadku spadku temperatury grzałka zostaje znowu załączona itd.
Do wyświetlania aktualnej temperatury zostały użyte wyświetlacze LED (2 szt.) o wspólnej anodzie. W momencie, gdy temp. wody osiągnie ustawioną wartość do wyświetlanej aktualnie temperatury zostaje dodana kropka na wyświetlaczu.
A teraz trudności na jakie napotkałem. Magistrala 1wire jest wrażliwa na wszelkie przerwy w transmisji. Zastosowanie 2 przerwań (zewnętrzne INT0 i TIMER0 do odliczania czasu) spowodowało, że czasem układ odczytuje błędnie temperaturę (nie ma to jednak wpływu na działanie - żądana temperatura jest utrzymywana, więc nie mam zamiaru już tego poprawiać). Łatwiej byłoby to zrobić wykorzystując wyświetlacz LCD (wtedy odmierzanie czasu od TIMER0 nie musiałoby być "na okrągło", lecz tylko w momencie wyliczania czasu do załączenia triaka. Przy wyświetlaczach LED musi on pracować ciągle, gdyż wykorzystywane jest ono również do multipleksowania wyświetlaczy.
Cały układ wykonałem z "odzysku", czyli części, które już
miałem, więc trudno mi policzyć koszty. Myślę jednak, że spokojnie można się
zmieścić w 20zł. Układ zmontowałem w "pająku", bez płytki (brak czasu na jej
wykonanie) i włożyłem do potrójnego natynkowego gniazdka sieciowego
wymontowując ostatnie gniazdo i w to miejsce włożyłem cały układ elektroniczny.
Triak podłączony jest do pierwszego gniazdka a środkowe gniazdko ma cały czas
napięcie, dzięki czemu można tam podłączyć dedykowany zasilacz (ładowarka Nokii).
Wykonanie tego w ten sposób umożliwia podłączenie dowolnego czajnika
bezprzewodowego lub grzałki elektrycznej.
Oczywiście zasilacz (transformatorek z mostkiem Greatza) można ukryć we wnętrzu
gniazdka. Z tyłu zostały wyprowadzone 2 przyciski do ustawiania temperatury
zadanej.
Poniżej zamieszczam listing programu (Bascom):
UWAGA:
Na schemacie użyty jest kwarc 4MHz jednak docelowo użyłem kwarcu 12MHz. Poza tym użyty przeze mnie mikrokontroler miał uszkodzony port P3.0 więc w docelowym układzie pozmieniały się wyprowadzenia: LED z MOC3023 został podłączony do portu P3.1 i do tego samego portu został podłączony przycisk regulacji. Czujnik temperatury został podłączony do P3.3, drugi przycisk regulacji do P3.4. Wejście z T1 pozostało oczywiście bez zmian, gdyż wejście INT0 jest właśnie na tej końcówce. Jak będę miał trochę czasu to zmiany oczywiście wprowadzę na schemacie.
Układzik pracuje już parę tygodni i jak na razie nie sprawia problemów a wręcz ułatwia nam życie ;)