Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sterownik akwarium(ATmega32)

dejmos 16 Jul 2015 14:14 7077 19
IGE-XAO
  • Sterownik akwarium(ATmega32)
    Witam.
    Chciałbym zaprezentować moją najnowszą konstrukcję, którą jest sterownik do akwarium. Konstrukcja sterownika powstała na życzenie mojego szwagra, który postanowił stworzyć dość duże akwarium w swoim mieszkaniu (fotki poniżej).
    Prezentacja będzie zawierała dokumentację fotograficzną, opis funkcji oraz schematy poszczególnych płytek. Kodu źródłowego nie zamieszczam ze względu na dość znaczną ilość czasu i energii, którą musiałem poświęcić aby go stworzyć. Niemniej jednak może prezentowany układ stanie się podstawą do konstrukcji podobnych sterowników przez kolegów z forum elektroda.pl.
    Do budowy urządzenia użyłem poza oczywistą drobnicą elektroniczną procesora Atmega32, wyświetlacza LCD 2x16, obudowy (chyba Z39), zasilacza impulsowego 12V/36W (do zasilania wyjść 12 woltowych) Gniazd 230V panelowych i wszystkich innych rzeczy, które są potrzebne do poprawnego funkcjonowania urządzenia a które widać na załączonych zdjęciach. Płytki powstały metodą fotochemiczną. Cena wszystkiego to jakieś 300 może 400 zł z czego większość miałem w swoich zbiorach więc kwota jest tylko szacunkowa.
    Opis funkcjonowania i struktury menu:
    Funkcje:
    - Sterownie wyjściami 12V i 230V (opis niżej);
    - Pomiar temperatury;
    - Rejestracja zaniku zasilania dłuższa niż 30 min;
    - Rejestracja całkowitego czasu pracy grzałek;
    - Po zaniku zasilania powrót do zapamiętanych ustawień;
    Pozostałe funkcje poniżej w opisie.
    Struktura menu
    1. Data/Zegar :
    1.1. Ustaw datę – funkcja służąca do ustawienia aktualnej daty
    1.2. Ustaw godzinę – funkcja służąca do ustawienia aktualnej godziny
    2. Ustaw wejścia:
    2.1. Poprawka temperatury – funkcja służąca do wprowadzenia poprawki temperatury przypadku zafałszowywania wyniku przez czujnik.
    2.2. Alarm zewnętrzny – funkcja służąca do włączania/wyłączania alarmu z wejścia zewnętrznego. W przypadku wybrania opcji „ON” nastąpi włączenie alarmu po zwarciu wejścia. Dla opcji „OFF” sterownik nie będzie reagował na zwarcie wejścia.
    2.3. Alarm temperatury – funkcja służąca do ustawienia zakresu temperatury wody w akwarium, który jest akceptowany przez wszystkie żyjątka żyjące w nim.
    3. Ustaw wyjścia:
    3.1. Światło 1(wyjście 230V) – funkcja służąca do ustawienia czasu (w formacie gg:mm – gg-godzina, mm-minuta) włączenia i wyłączenia wyjścia oznaczonego „Światło 1” .
    3.2. Światło 2 (wyjście 230V)– funkcja służąca do ustawienia czasu (w formacie gg:mm – gg-godzina, mm-minuta) włączenia i wyłączenia wyjścia oznaczonego „Światło 2” .
    3.3. Światło 3 (wyjście 230V.– funkcja służąca do ustawienia czasu (w formacie gg:mm – gg-godzina, mm-minuta) włączenia i wyłączenia wyjścia oznaczonego „Światło 3” .
    3.4. Światło 4 (wyjście 230V)–funkcja służąca do ustawienia czasu (w formacie gg:mm gg-godzina, mm-minuta) włączenia i wyłączenia wyjścia oznaczonego „Światło 4”. Po zatwierdzeniu czasu włączenia i wyłączenia przechodzimy do ustawienia maksymalnej mocy z jaką ma świecić świetlówka wyposażona w wejście 1-10V (wyjście „Światło 4” i „1-10V” są ze sobą programowo połączone). Ustawienie mocy odpowiada proporcjonalnemu ustawieniu napięcia na wyjściu 1-10V narastającego od 1V do tego napięcia równego (10V-1V)*(Max_moc/100)
    np: dla 80% maksymalne napięcie jakie zostanie osiągnięte na wyjściu po czasie rise/fall będzie wynosiło 7,2V.

    Przykład działania wyjścia Swiatło4 i 1-10V
    Sterownik akwarium(ATmega32)

    3.5. Grzałka (2 x wyjście 230V)- funkcja służąca do ustawienia zakresu temperatury w którym wyjście „Grzałka” ma być aktywne.
    3.6. Wentylator (wyjście 12V) – funkcja służąca do ustawienia interwałów pracy wentylatora w celu przedmuchania pokrywy z pary oraz ustawienia temperatury przy której ma zacząć chłodzić akwarium.
    3.7. Napowietrzacz (wyjście 230V)- funkcja służąca do ustawienia interwałów pracy napowietrzacza.
    3.8. Nocne (wyjście 12V)- procedura ustawienia identyczna jak dla wyjścia „Swiatło 4” i „1-10V” przy czym w tym przypadku wszystko odbywa się na jednym wyjściu.
    3.9. Burza 1 (wyjście 12V) - funkcja pozwalająca wybrać dwie opcje: Symulację burzy i wyjście czasowe. W pierwszym przypadku ustawiamy jak dla napowietrzacza w drugim jak dla np. wyjścia Światło 1.
    3.10. Burza 2 (wyjście 12V) - identycznie jak wyżej
    3.11. Inne (wyjście 230V) – ustawiane identycznie jak Światła.
    4. Sterowanie ręczne:
    4.1. Światło 1 – funkcja pozwalająca włączyć lub wyłączyć w każdej chwili dane wyjście. Po wejściu do funkcji mamy trzy opcje do wyboru:
    1. MAN OFF – wyłączenie sterowania ręcznego – powrót do automatycznego sterowania wyjściem (do zadanych czasów, temperatur, interwałów i mocy).
    2. ON – ręczne włączenie danego wyjścia: cały czas włączone – niezależnie od ustawień czasowych, temperaturowych lub interwałowych.
    3. OFF – ręczne wyłączenie danego wyjścia: cały czas wyłączone niezależnie od ustawień czasowych, temperaturowych lub interwałowych.

    4.2. Światło 2 – j. w.
    4.3. Światło 3 – j. w.
    4.4. Światło 4 – j. w. plus wyjście 1-10V ustawiane jest na 10V (Maksymalna moc na 100%).
    4.5. Grzałka – j. w.
    4.6. Napowietrzacz – j. w.
    4.7. Wentylator – j. w.
    4.8. Nocne – j. w. plus Maksymalna moc ustawiana jest na 100%.
    4.9. Burza 1 – j. w.
    4.10. Burza 2 – j. w.
    4.11. Inne – j. w.
    5. Pokaż alarmy – funkcja pokazująca - w przypadku wystąpienia alarmu - co wywołało alarm. I mamy:
    1. „Temperatura poza dop. Zakresem”.
    2. „Alarm zewnętrzny aktywny”
    3. „Brak czujnika temperatury”
    4. „Zarejestrowano brak prądu” – układ rejestruje zanik prądu dłuższy niż 30 min.

    Naciśnięcie OK. spowoduje przejście do następnego alarmu lub w przypadku braku innych alarmów przejście do funkcji kasującej alarmy.
    6. Informuj o alarmach – funkcja pozwalająca wyłączyć sygnał dźwiękowy i świetlny w przypadku wystąpienia alarmu.
    7. Czas pracy grzałki – pokazuje całkowity czas pracy grzałki w minutach.

    Opis pracy dla przykładowego ustawienia wyjść: grzałka, wentylator i alarmu temperatury:


    Załóżmy, że punktem początkowym jest temperatura 27,0oC i powoli spada. W tym miejscu grzałka nie pracuje, wentylator nie pracuje (chyba że ustawienie interwałowe go włączyło), alarm jest wyłączony. Temperatura spadła do granicznej dla grzałki czyli 26,5 oC – w tym momencie następuje załączenie grzałek. Temperatura prawdopodobnie jeszcze przez chwile będzie spadać o kolejne kilka dziesiątych stopnia po czym zacznie powoli rosnąć. Gdyby grzałki były zepsute – temperatura dalej zacznie spadać aż do granicznej 25,0 oC przy której uruchomi się alarm temperatury – w takim wypadku akwarium będzie wymagało naszej interwencji. W przypadku sprawnych grzałek – temperatura zacznie powoli rosnąć i dojdzie do 27,5oC przy której grzałki zostaną wyłączone. Bezwładność akwarium prawdopodobnie spowoduje że temperatura jeszcze wzroście o kilka dziesiątych stopnia i gdy wszystko będzie sprawne zacznie powoli spadać aż do 26,5 oC kiedy to ponownie zostanie załączona grzałka. I cykl grzałki się zamyka. W przypadku gdyby grzałki po przekroczeniu 27,5oC dalej grzały lub temperatura wody rosła poprzez nasłonecznienie lub w wyniku innej nieznanej mi przyczyny i doszła do 28,3 oC następuje włączenie wentylatora, który ma za zadanie schłodzić wodę, jeżeli to nie pomoże i temperatura dalej rośnie przy 29,0oC włączy się alarm i akwarium będzie wymagało naszej interwencji. Jeżeli jednak wentylator zacząłby schładzać wodę to gdy temperatura spadnie do 27,7 oC wentylator się wyłączy (chyba że ustawienie interwałowe go włączyło). Temperatura wody dalej powinna spadać aż do 26,5 oC przy której grzałka zaczyna znowu pracować. I cały cykl grzałki, wentylatora i alarmu się zamyka.
    Sterownik akwarium(ATmega32)

    Panel tylny opis:
    Sterownik akwarium(ATmega32)

    1. Wejście alarmu zewnętrznego – wejście służące do podłączenia krańcówki np. pilnującej stałego poziomu wody. Wejście reaguje na zwarcie (możliwość wyłączenia w menu).
    2. 1-10V – wyjście napięcia do świetlówek sterowanych napięciowo – wyjście programowo sprzężone z wyjściem „Światło 4”.
    3. Wentylator – wyjście 12V, interwałowe + temperaturowe, przewidziane do podłączenia wentylatora. Oczywiście można podłączyć inny odbiornik na 12V.
    4. Nocne - wyjście 12V, czasowe-dobowe, PWM (z regulowaną szerokością impulsów) służące do podłączenia oświetlenia LED nocnego rozświetlanego i wygaszanego przez jakiś odcinek czasu.
    5. Burza 1 – wyjście 12V, interwałowe lub czasowe-dobowe. Wyjście symulujące błyski piorunów (przy opcji interwałowej) lub standardowe wyjście czasowe dla odbiornika 12V (LED, wentylator itd…).
    6. Burza 2 – j.w.
    7. Światło 1 – wyjście 230V, czasowe-dobowe, do podłączenia wszelkich odbiorników 230V których moc nie przekracza 400W (pewnie więcej też wytrzyma ale lepiej nie przesadzać). Przewidziane do podłączenia oświetlenia.
    8. Światło 2 – j.w.
    9. Światło 3 – j.w.
    10. Światło 4 – j.w. plus programowe sprzężenie z wyjściem 1-10V. Na wyjściu Światło 4 jest realizowana opcja czasowa zaś na 1-10V opcja mocy i czasu rise/fall.
    11. Napowietrzacz - wyjście 230V, interwałowe, do podłączenia wszelkich odbiorników 230V których moc nie przekracza 400W pracujących w trybie interwałowym. Przewidziane do podłączenia napowietrzacza.
    12. Inne - wyjście 230V, czasowe-dobowe, do podłączenia wszelkich odbiorników 230V których moc nie przekracza 400W. Przewidziane do dodatkowych celów.
    13. 230V – wyjście 230V, niesterowane, można wykorzystać do czegoś co ma pracować ciągle.
    14. RS232 – opis w rozdziale „Podłączenie do komputera”
    15. Grzałka - wyjście 230V, temperaturowe, wyjście zdublowane, do podłączenia dwóch grzałek pracujących równolegle.
    16. Zasilanie 230V – gniazdo zasilające.
    17. Czujnik – wejście służące do podłączenia czujnika temperatury.

    Opis płytki:
    Sterownik akwarium(ATmega32)
    1. 230V IN – wejście zasilania,
    2. RS232 – wyjście na złącze D’SUB-9 (port szeregowy),
    3. 12V IN – wejście napięcia 12 (zasilającego układ wytwarzający np. 1-10V)
    4. Alarm IN – wejście alarmu zewnętrznego,
    5. Czujnik IN – wejście czujnika temperatury,
    6. Kontrolki – wyjście na kontrolki na panelu sterownika,
    7. Stabilizator – układ stabilizatora 5V
    8. Potencjometr dostrojczy nap. 1-10V – potencjometr służący do wyregulowania nap na wyjściu 1-10V,
    9. Trymer układu zegarka – trymer regulujący częstotliwość taktowania układu zegarka
    10. Bateria układu zegarka – bateria zasilająca zegarek podczas braku zasilania,
    11. Buzzer – buzzer
    12. Zworki alarmu – pozwalają wybrać czy LED czy BUZZER czy to i to,
    13. Klawiatura – złącze klawiatury,
    14. LCD – złącze wyświetlacza
    15. Potencjometr kontrastu wyświetlacza – pozwala regulować kontrast wyświetlacza.

    Komunikacja z komputerem odbywa się przy pomocy łącza szeregowego RS232. Do komunikacji należy wykorzystać program Hyper Terminal z ustawieniami łącza:
    • Prędkość: 19200 b/s
    • Bitów danych: 8
    • Parzystość: Brak
    • Bit stopu: 1
    • Sterowanie przepływem: Brak
    Sterownik wysyła, co pełną minutę:
    • Aktualną godzinę,
    • Temperaturę wody,
    • Stan wyjść,
    • Ewentualne alarmy,
    • Czas pracy grzałki w minutach.
    Poniżej zrzut ekranu z programu Hyper Terminal.
    Sterownik akwarium(ATmega32)

    Po kilku tygodniach pracy w docelowym miejscu dodane zostały funkcje:
    1. Dla Światła 1 możliwość ustawienia dwóch czasów włączenia i wyłączenia podczas doby
    2. Manualne wyłączenie lub włączenie wszystkich wejść – przydatne podczas czyszczenia akwarium.
    3. Możliwość ustawienia innych interwałów dla dnia (od 7 do 20) i nocy (od 20 do 7) dla wyjść wentylator i napowietrzacz.
    Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32)
    Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32) Sterownik akwarium(ATmega32)

    Wieczorem postaram się dorzucić jeszcze kilka fotek samego akwarium.
    Przepraszam za chaotyczny opis i ewentualne błędy. Postaram odpowiedzieć na każde pytanie. Zapraszam do komentowania.

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    dejmos
    Level 23  
    Offline 
    dejmos wrote 446 posts with rating 156, helped 69 times. Live in city Nowa Dęba. Been with us since 2004 year.
  • IGE-XAO
  • #2
    ArturAVS
    Moderator of HydePark/Cars
    Co tu dużo mówić. Kawał solidnie wykonanej roboty. Tylko dlaczego zepsułeś panel? Mogłeś tak zaprojektować naklejkę aby było widać pole odczytowe wyświetlacza, a nie razem z ramką. Psuje to cały efekt.
  • IGE-XAO
  • #4
    dejmos
    Level 23  
    Dzięki za komentarze:)
    @arturavs
    Ten wyświetlacz nawet tak źle nie wygląda :D A poza tym sterownik i tak stoi zamknięty w szafce pod akwarium :D
    @tos18
    Cenna uwaga :D Tylko akurat nie miałem takiego pod ręką :)
    Co do gniazd to dość długo szukałem ale udało się. Możesz znaleźć je tutaj
    Gdy ja zamawiałem mieli tylko 7 czy 8 sztuk więc jak widać na zdjęciach dwa pochodzą z demontażu z jakiegoś amplitunera :D
  • #6
    dejmos
    Level 23  
    Wbrew pozorom klawiatura sprawuje się całkiem nieźle. Przy montażu należy tylko zwrócić uwagę żeby końcówki przycisków idealnie licowały z panelem przednim (czarnym panelem z obudowy) zaś sama zalaminowana część panelu jest przyklejona w kilku miejscach na dwustronną taśmę piankową do czarnego panelu. Dzięki takiemu rozwiązaniu uzyskałem niewielki dystans i elastyczność które są niezbędne żeby to fajnie funkcjonowało.
    Co do drugiego pytanka.
    Jest na schemacie o nazwie Płytka_CPU ( w załączniku) taki blok, który nazywa się "VOLTAGE CONTROL" zrealizowany na LM358. Na wejście układu podawany jest sygnał PWM z wyjścia PD4(OC1B) procesora. Zależnie od wypełnienia na kondensatorze C5 płynnie się zmienia napięcie w moim przypadku od 1 do 10V ale układ zdolny jest podawać napięcie od 0 do 12V (ja ograniczyłem to programowo bo takie było założenie układu).
  • #7
    dan50
    Level 11  
    Super projekt, wykonany estetycznie.

    Mam pytanko dotyczące gniazd 230VAC - gdzie je kupiłeś.

    Czy oprócz podłączenia czujnika temperatury DS18B20 (zakładam że takiego używasz) możesz podłączyć czujnik wilgotności (np DHT11) . Widziałem takie rozwiązanie u kolegi, który mierzył temperaturę i wilgotność pod pokrywą.
    Oraz czy jest możliwość podłączenia kilku czujników temperatury?
  • #9
    dejmos
    Level 23  
    @dan50
    Do sterownika można podłączyć tylko jeden czujnik DS18B20 i nie ma możliwości podłączenia czujnika wilgotności. Możliwość podłączenia kilku czujników różnych parametrów to bardzo dobry pomysł... ale, dostałem dokładne wytyczne od szwagra, punkt po punkcie z dokładnymi wymaganiami co do każdego z wejścia i wyjścia i tego się sztywno trzymałem (z własnego niewielkiego doświadczenia wiem, że dodawanie "bajerów" lub dodatków od siebie nie zawsze jest wskazane). Sterownik spełnia w (mam nadzieję :D) 100% to co było zakładane. Po kilku tygodniach testów został tylko w niewielkim stopniu zmieniony program w celu dodania paru funkcji - opis w pierwszym poście. Podsumowując: dodanie proponowanych przez Ciebie funkcji nie byłoby skomplikowane ale nie było tego w wytycznych do projektu:)
    Co do gniazd link w #4 i #8 poście.
  • #10
    qazqaz12
    Level 10  
    Witam mam kilka pytań do autora sterownika
    1 Na jakim programatorze programowałeś atmege bo Ja mam problem z zaprogramowaniem ,ponieważ nie mogę ustawić fusbitów ja programuje MKavr Calculator i za skarby nie mogę ustawić .
    Czy masz jakąś procedurę uruchamiania tego sterownika i jeszcze jedno pytanko sterownik będzie działał bez płytki wykonawczej.
  • #13
    Gienek
    Level 36  
    Nie mam wsadu do tego sterownika i nie wiem jakie fuse bity autor ustawił.
    W MKavrCalculator ustawiam tak (przykład):
    1. Ustawienia fabryczne są pokazywane po wybraniu typu procesora:
    Sterownik akwarium(ATmega32)
    2. Ustawienia dla konkretnego przypadku (kwarc zewnętrzny 16MHz):
    Sterownik akwarium(ATmega32)


    Po wpisaniu w okienkach FF 99 klikam USTAW i wtedy mogę je zaprogramować wybierając: ZAPIS > Fuse bity > Wykonaj.
  • #14
    qazqaz12
    Level 10  
    Może robię jakiś błąd nie wiem dlatego spytałem Autora w załączniku wysyłam 3 wersje oprogramowania hex proszę o pomoc w ustawieniu tych fusów
  • #16
    qazqaz12
    Level 10  
    Super tylko po pierwsze niema tam żadnej wykrytej atmegi 32 i fusy są nie zapisane pokaż mi fusu po zapisaniu i zakładkę fusy manualne i uprozsczone

    Dodano po 7 [minuty]:

    w ten sposób Ja też ustawiłem nawet 3 wersje choć też tego nie rozumiem Pozdrawiam
  • #18
    qazqaz12
    Level 10  
    Atak poza tym to dzięki że się tym zainteresowałeś ale próbowałem na różne sposoby i nic to nie daje
  • #20
    qazqaz12
    Level 10  
    Ok spróbuje według twoich wskazówek jeszcze raz dzięki

    Dodano po 5 [minuty]:

    Programator mam sprawny tylko nie odwracałem tych fusów Jak mi się uda zaprogramować to dam znać dzięki