Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*

bobeer 07 Jul 2020 17:17 3897 4
Automation24
  • Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*

    *Icebox thermostat* jest termostatem do lodówki zawierającym mniej i bardziej wymyślne funkcjonalności, przy czym większości z nich z pewnością nie znajdziecie w pospolitych termostatach. Zostały uznane za całkowicie zbędne i pozbawione sensu ;)

    Konfiguracji termostatu dokonuje się bezprzewodowo z użyciem BlueTooth oraz konsoli VT100.
    Termostat posiada dwa kanały pomiaru temperatury. Każdy kanał może obsługiwać 4 typy czujników (KTY152 DS18B20, DS18S20, DHT11/DHT22).
    Zakres temperatur to od -50 do 99 stopni C, przy czym zakres wizualizowany na konsoli wynosi zawsze 20 stopni, minimalna histereza to 2 stopnie celcjusza.
    W przypadku gdy w którymś kanale podłączony jest czujnik DHT11 dodatkowo jest wyświetlana i logowana informacja o wilgotności.
    Dla każdego czujnika jest możliwość dokładnej regulacji offsetu. W przypadku analogowych dodatkowo występuje parametr wzmocnienia (dokładna kalibracja dwu punktowa jest możliwa, ale dosyć uciążliwa).
    Jest opcja do kilku bitów histerezy dla mierzonych wartości. (nie tyczy czujników DS16S20 oraz DHT11 które mają zbyt niską wyjściową rozdzielczości).
    Ponowne załączenie silnika jest poprzedzone czasem 'relaksacji' która domyślnie wynosi 3 minuty. Jak wiadomo kompresor załączony wkrótce po wyłączeniu najczęściej zostaje zablokowany i odłączony bezpiecznikiem termicznym. Dodatkowo w tym czasie marnuje z 200W mocy. Nie ma sensu fundować mu takich atrakcji.
    Termostat posiada wbudowany czujnik światła który służy włączeniu alarmu otwartych drzwi, po zadanym czasie.
    Dostępna jest regulacja głośności sygnalizacji alarmu, oraz czasu opóźnienia zadziałania.

    Interfejs użytkownika jest tekstowy z elementami semigrafiki dla temperatur z obu czujników.
    Składa się z 5 stron wybieranych klawiszami F1-F5, każda odpowiada konfiguracji osobnych parametrów, wyświetlaniu dobowego logu, lub liczników czasu pracy, połączenia BT etc.
    Zmiany parametrów dokonuje się jedynie z użyciem strzałek kursora. Jest to celowe ze względu na potencjalną adaptację kodu pod 4 przyciski lub enkoder.

    F1 - Strona główna
    Możliwa zmiana temperatur oraz czasu z jakiego liczone średnie etc.
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*
    Zawiera kolejno zegarek, kontrolki: otwartych drzwi, szczęśliwej godziny, aktywnej sprężarki, oraz wystąpienia błędu.
    Następnie wyświetlane są średnie temperatury z ostatnich 3 lub 24h pracy, oraz wilgotność.
    Kolejna linia zawiera bargrafy średniego czasu otwartych drzwi oraz użycia sprężarki.
    Poniżej znajdują się wskaźniki temperatury z możliwością konfiguracji za pomocą strzałek kursora.
    Za napisem ICEBOX znajduje się przybliżone dobowe zużycie energii jaką lodówka zjadła w ciągu ostatnich 24h.
    Ewentualnie planuje zjeść na podstawie danych z ostatnich 3h pacy.

    F2 - Strona z logiem dobowym
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat* Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*
    Log zawiera zapisane średnie godzinowe temperatury ostatniej doby z maksimami i minimami, dla każdego czujnika, Dostępny jest też zapis użycia silnika w każdej godzinie, czasu otwarcia drzwiczek oraz wilgotności.

    F3 - Podstawowa konfiguracja
    Możliwa jest zmiana wszystkich parametrów.
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*

    RTC clock 01:03:14 Aktualny czas
    Happy Hour 02:00 Wymusza wyłączenie kompresora
    Happy Time 4h Czas wyłączonej sprężarki
    BT PowerOff 1m Czas po jakim BT zostanie wyłączony liczony od otwarcia drzwiczek
    #1 On Thrs +32C Temperatura załączenia kompresora
    #1 Off Thrs +28C Temperatura wyłączenia
    #2 On Thrs +13C
    #2 Off Thrs +06C
    #1 Offset 00.0C Offset temperatury wyświetlanej
    #2 Offset 00.0C
    #Priority #1 & #2 on Warunki logiczne kanałów w sterowaniu załączeniem sprężarki*
    Filtr delay 10s Czas opóźnienia zadziałania przekroczenia progu temperatury
    Alarm delay 10s Opóźnienie sygnalizacji dźwiękowej
    Door 100% 100s Czas w sekundach odpowiadający 100% użycia drzwiczek w godzinie
    BT password 1111* Hasło parowania BT


    *Parametr #Priority umożliwia wybór warunków załączenia i wyłączenia przekaźnika dla czujników działających wspólnie.
    #1 & #2 on Wymuszenie załączenia kompresora, stan termometrów nieistotny
    #1 #2 dis Wymuszenie wyłączenia
    #1 OR #2 załączenie lub wyłączenie w przypadku przekroczenia zakresu przez jeden z czujników. W przypadku gdy w kanałach spełnione są przeciwnie skrajne warunki, stan załączenia nie jest zmieniany.
    #1 AND #2 W celu włączenia lub wyłączenia konieczne jest przekroczenie zakresu w obu czujnikach, w przypadku gdy w kanałach spełnione są przeciwnie skrajne warunki, stan załączenia nie jest zmieniany.
    (Z tego powodu powstały opcje z priorytetem kanału).
    #1 Priori Jak dla #1 OR #2 z tym że w przypadku konfliktu priorytet ma kanał 1
    #2 Priori Jak dla #1 OR #2 z tym że w przypadku konfliktu priorytet ma kanał 2
    #1 only Sterowanie wyłącznie przez kanał 1
    #2 only Sterowanie wyłącznie przez kanał 2

    F4 - Ustawienia zaawansowane
    Możliwa jest zmiana wszystkich parametrów.
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*
    #1 Sensor DHT11+ Wybór czujnika #1
    #1 AMP adc 00* Współczynnik wzmocnienia jeśli użyty analogowy czujnik
    #1 OFS adc 00* Precyzyjny offset dla ADC
    #1 OFS bar -20C Przesunięcie skali wyświetlanej w konsoli na interesujący nas termostatowany zakres
    #2 Sensor Disable Wybór czujnika #2
    #2 AMP adc 00*
    #2 OFS adc 00*
    #2 OFS bar 00C
    Hysteresis 0LSb Histereza wartości temperatury z czujników
    Log offset 0h Od jakiej godziny ma się zaczynać wyświetlany log na stronie statystyk.
    Motor relax 3m Czas odpoczynku kompresora po wyłączeniu
    Door thresh 220* Parametr czułości czujnika oświetlenia.
    Power rate 80W Wartość poboru mocy przez załączony kompresor.
    Audio vol 16* Głośność dźwięku.
    Action <-> Akcje dodatkowe – reset, ustawienia domyślne, kasowanie liczników wszystkich, kasowanie tylko liczników błędów, wejście w bootloader (zmiana firmware)


    F5 - Różne liczniki
    Możliwe skasowanie wszystkich lub tylko błędów.
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*

    Sys starts 2* Licznik startów systemu
    Work time 21h Sumaryczny czas pracy systemu
    BT connect 1340m Czas połączeń BT
    Motor cycl 3* Ilość włączeń sprężarki
    Motor time 18h Czas pracy sprężarki
    Door open 0m Czas otwartych drzwi
    ADC err #1 9* Błąd ADC (dla użytego analogowego czujnika)
    ADC err #2 0*
    1W PRS err #1 0* Błąd zwarcia lub braku czujnika cyfrowego
    1W CRC err #1 0* Błąd sumy kontrolnej czujnika cyfrowego
    1W PRS err #2 0*
    1W CRC err #2 0*
    RELAY error 4* Błąd czasu zadziałania przekaźnika*
    EEPROM error 0* Błąd zapisu /odczytu eeprom
    SYSTEM error 0* Błąd systemu (zadziałania watchdoga procesora)

    Do CPU sterującego doprowadzony został sygnał AC zza transformatora. Służy on nie tylko synchronizacji zegara systemowego do częstotliwości 50Hz, ale również załączaniu silnika synchronicznie z przejściem napięcia sieci przez 0. Funkcjonalność taka użyta wraz z gasikiem RC sprawdza się znakomicie oszczędzając miniaturowy przekaźnik oraz minimalizując emisje zakłóceń radiowych. Błąd przekaźnika wystąpi w momencie gdy z jakiegoś powodu, nie zostanie załączony lub wyłączony synchronicznie z napięciem zasilającym 240V. Może to nastąpić wskutek błędu w programie lub chwilowego zaniku sygnału synchronizacji 50Hz.

    F9 - Strona powitalna (brak obrazka)
    Wyświetlana też po restarcie systemu dla pierwszego połączenia przez BT

    F11, F12 - Test sygnalizacji dźwiękowej


    Ze względu na udostępnienie źródeł, części programowej nie będę zbyt szeroko opisywał.
    Wielokrotnie ulepszane biblioteki zawierają min.
    Obsługą ADC z oversamplingiem i generatorem szumu, użyte również w zasilaczu który jakiś czas temu prezentowałem.
    Bootloader, który w tej wersji obsługuje dwa usarty (jeden programowy), z ładowaniem kodu przez Xmodem. Na wstępie synchronizując zegar systemowy do 50Hz (trwa to 1.5 s na starcie).
    Obsługa nvram –zapewnia automatyczne kopiowanie w tle wybranego obszaru ram do eeprom z naprawą błędów.
    Można też skorzystać z biblioteki do obsługi termometrów, lub tablicowej linearyzacji KTY182, który po kalibracji wydaje się działać niewiele gorzej od DS18B20.
    Na pokładzie jest też odtwarzacz próbek dźwiękowych, tak więc jeśli lodówka zacznie do Was gadać , to się nie zdziwcie ;)

    Jak już wspomniałem, program termostatu oblicza pobór energii na podstawie dobowego czasu załączenia sprężarki oraz zręcznie ustawianej wartości 'Power rate'. Wartość ta powinna być zmierzona z użyciem miernika mocy i uśredniona dla przeciętnego cyklu załączenia kompresora. Pobór mocy przez silnik jest zmienny w czasie, i w moim przypadku wynosił po starcie 90W, by po pół godziny spaść do70W.

    Na zakończenie kilka słów o hardware, który jest tu właściwie na dokładkę ;) . Ze względu na możliwość umieszczenia czujników we wnętrzu lodówki zamysłem było użycie transformatora. Chciałem aby pobór mocy nie przekraczał 0.5W.
    W związku z tym, w prototypie został użyty transformator zalewany 0.5VA dostarczający 12V~ ( 230V / 2x6V 0.5VA EI30/10,5). Sprawność jego jest marna, ale nie tak marna jak pierwotnie planowanego transformatora 0.25W, który na biegu jałowym pobierał 2W! mocy.

    Pobór mocy zależnie od aktywności BT oraz przekaźnika wynosi 0.5W -– 0.9W. Jak wspomniałem połowa to straty transformatora. W celu optymalizacji zużycia prądu, było by zasadne użycie zasilacza beztransformatorowego i sprawnej przetwornicy z np. 24V na 3V.

    Pierwotnie do zasilania przetwornicy i przekaźnika planowałem napięciem 24V, ale trafo 230V / 2x 15V 0,25VA okazało się porażką. Stąd obecnie praca przy 15V które następnie zamieniane są na 3VDC przez prymitywną samowzbudną przetwornicę. Ma ona sprawność na poziomie 50% i jej napięcie mocno zależy od temperatury, ale do tego zastosowania jest wystarczająca.

    Ze względu na użycie 50R głośnika, nie ma potrzeby używania dodatkowego wzmacniacza. Porty procesora dostarczają wystarczającej mocy. Z głośnikiem 16R również nie było problemów. Warto pamiętać, aby w takich rozwiązaniach, pasmo odtwarzanie przez głośnik nie zawierało częstotliwości nie przetwarzanych. Umożliwi to podniesienie względnego poziomu głośności i ograniczenie poboru mocy, również ze względu na niezbyt wydajny zasilacz. (max moc oddawana na 50R głośniku to max 100mW).

    Wspomnę jeszcze o próbkowaniu czujników analogowych, gdyż użycie ich w projekcie było pewnym wyzwaniem i próbą dla wbudowanego adc oraz technik zawężania pasma. Ponieważ pomiary analogowe nie trwają zbyt długo, bo 50ms na czujnik w każdej sekundzie. Można więc minimalizować samonagrzewanie 1k PTC, które w przypadku 3V i dzielnika 1k + 1k wynosi aż 15mW mocy, co daje zauważalne podniesienie temperatury. Pierwsza próba niwelacji zjawiska polegała na kluczowaniu zasilania tranzystorem. Okazało się jednak, że oporność załączonego tranzystora ma zbyt duży wpływ na pomiary tak zasilanego dzielnika napięcia. W każdym razie lepsze rezultaty można osiągnąć podając stałe zasilanie i ściągając napięcie na czujniku do masy przez port procesora na czas oczekiwania na pomiar przez ADC. W prawdzie nie osiągniemy zerowego napięcia podczas nieaktywności czujnika, ale za to pozbędziemy się problemów z wpływem oporności mosfeta. ADC pracuje w konfiguracji z napięciem odniesienia na poziomie zasilania CPU (ratiometric), co pozwala nie przejmować się rozrzutem wbudowanego w ukontroler napięcia odniesienia.
    W takim układzie pomiarowym, zmiana napięcia CPU między 3 a 4V dawała zmiany pomiaru temperatury w zakresie 0.2C, co jest wartością zupełnie wystarczającą, w przypadku stabilizacji nie gorszej w naszym przypadku od 100mV.
    Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat* Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat* Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*Termostat do lodówki z wieloma zbędnymi funkcjonalnościami *Icebox thermostat*

    W załączniku znajduje się cały kod źródłowy (asembler avr studio 4) wraz z programem (hex2bin) do tworzenia obrazów wgrywanych bootloaderem, oraz krótkim opisem.
    Attachments:

    Cool? Ranking DIY
    About Author
    bobeer
    Level 28  
    Offline 
  • Automation24
  • #2
    aadeer
    Level 14  
    Projekt na wysokim poziomie, a brak komentarzy. Interfejs i kod kojarzy mi się trochę z demosceną :) Używasz tego w praktyce, czy projekt robiony jako wyzwanie?
  • Automation24
  • #3
    bobeer
    Level 28  
    Korporacje nie potrzebują konstrukcji optymalnych i niezawodnych.
    Wystarczają im te, które się nie psują w okresie gwarancji.
  • #4
    excray
    Level 40  
    Czy jest jakiś schemat do tego? Bo nic nie ma w załączniku.
  • #5
    bobeer
    Level 28  
    excray wrote:
    Czy jest jakiś schemat do tego? Bo nic nie ma w załączniku.

    Zobacz na ostatni, najciemniejszy obrazek.