Elementy mechaniczne
Jako że klimatyzator, który ma być kontrolowany przez system jest dosyć stary, nie ma żadnej możliwości na jego cyfrową kontrolę. Zamiast tego zaprojektowano mechaniczny system przekręcania pokręteł w układzie, który sprzęgnięty jest z serwomotorem. System ten przełącza klimatyzator do różnych trybów pracy - wyłączony, tryb wentylatorowy oraz chłodzenie - niskiej i wysokiej mocy. Część mechaniczna została wydrukowana w technologii druku 3D z ABSu. Projekt został dostosowany do pokręteł klimatyzatora, jednakże powinien pasować do szerszej gamy systemów. Pliki z projektem można pobrać ze strony źródłowej
Mózg systemu (Arduino Uno)
Hardware
Projekt kontrolowany jest przez mikrokontroler na płytce Arduino Uno. Temperatura w pomieszczeniu mierzona jest z pomocą sensora DS18B20. Serwomechanizmy sterowane są z pomocą modułu Tower Pro MG995. Jako że serwomotor pobiera znaczny prąd na linii zasilania dodano kondensator o pojemności 4700 µF. Pozwoli to uniknąć zapadów zasilania, które mogły by powodować resetowanie mikrokontrolera.
Sensor DS18B20 podpięty jest do pinu 10 Arduino Uno. Potrzebuje on ponadto podłączenia do masy i zasilania 5 V oraz rezystora podciągającego pomiędzy linią zasilania, a danych. Serwomotor podpięty jest pod pin 9 Arduino Uno i oczywiście do masy i zasilania 5 V.
Software
Program który działa na Arduino Uno jest dosyć prosty. Temperatura odczytywana jest z sensora i jeśli jest wyższa niż zadany punkt kontrolny (plus wartość wynikająca z histerezy) to serwomotor zmienia ustawienia klimatyzatora na chłodzenie niskiej mocy. Gdy temperatura w pomieszczeniu spadnie poniżej ustalonego punktu (minus wartość wynikająca z histerezy) serwomotor wyłącza klimatyzator. Histereza dodana jest w układzie po to, żeby uniknąć częstego przełączania klimatyzatora i wpływu szumu na odczyt.
Oprócz podstawowej kontroli poprzez temperaturę w pomieszczeniu w układ wbudowano system kontroli poprzez zdalne komendy wydawane przez MegaunoLink. Komendy te pozwalają na konfigurację różnych ustawień, takich jak punkty kontrolne temperatury, histereza, położenie i opóźnienie serva itp. Parametry te zapisywane są w pamięci EEPROM Arduino, więc nawet po wyłączeniu są one zapamiętane.
Do konfiguracji punktów kontroli temperatury i serw stworzono specjalni interfejs w oparciu o MegaunoLink, Poniższa ilustracja pokazuje jak wyglądał interfejs na początki (po lewej) i w wersji finalnej (po prawej). Każdy przycisk wysyła zdefiniowaną informację do Arduino, pozwalającą kontrolować każdy z parametrów. Na przykład jeśli naciśnie się przycisk Set Temperature interfejs prześle po łączu szeregowym !SetTemperature 23\r\n. Arduino odbierze ten komunikat i ustawi nową temperaturę na 23°C. Oprócz wysyłania komunikatów interfejs oparty o MegaunoLink ma możliwość prezentowania danych, informacji o stanie kontrolera etc. Włączony Arduino przesyła do MegaunoLink następujące komunikaty:
{UI|SET|DisabledIndicatorPicture.Visible=false}
{UI|SET|EnabledIndicatorPicture.Visible=true}Te komendy kontrolują pojawianie się i znikanie symboli reprezentujących stan modułu.
Ustawianie pozycji serwa
Zanim kontroler rozpocznie poprawną pracę, koniecznie trzeba skonfigurować pozycję serwomotorów. W drugiej zakładce interfejsu jest szereg przycisków, pozwalających na zrobienie tego. Pozwala to na dostosowanie serwomotoru do wykorzystywanego klimatyzatora. Naciśnięcie każdego z przycisków umożliwia także przesunięcie serwa na zadaną pozycję. Pozwala to na łatwe dostosowanie jego ruchu do danego klimatyzatora. Dane przechowywane są w pamięci EEPROM układu.
Ostatnim parametrem jaki trzeba skonfigurować jest opóźnienie serwa, które to kontroluje opóźnienie pomiędzy każdym krokiem serwomotora. Pozwala to na zapewnienie cichej i płynnej jego pracy. Bez tego serwomotor porusza się głośno pomiędzy poszczególnymi pozycjami.
Dane o temperaturze
Finalnym komponentem systemu jest możliwość odczytu temperatury poprzez MegaunoLink. W tym celu system wykorzystuje możliwość MegaunoLink do rysowania tabel i wykresów, co pozwala na wyświetlanie aktualnej temperatury oraz historii temperatur. Realizowane jest to poprzez wysyłanie z poziomu Arduino komunikatów do portu szeregowego które odczytywane i interpretowane są przez MegaunoLink. Na przykład, aby wysłać wartość do tablicy Arduino wysyła:
{TABLE|SET|Target Temperature|23.00|}Rysowanie wykresu temperatury w funkcji czasu osiąga się następującą komendą:
{TIMEPLOT|data|Current Temperature|T|24.000}Oczywiście stworzono bibliotekę do Arduino, umożliwiającą łatwe generowanie tych komend.
Źródło:
http://www.megunolink.com/arduino-controlled-air-conditioner/
Fajne? Ranking DIY
