Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 gru 2024, o 02:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 21 kwi 2015, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Jakiś czas temu wykonałem sterownik akwarystyczny o nazwie roboczej ‘SAKWA’ i postanowiłem go Wam przedstawić. Jest to moja pierwsza prezentacja tak dużego projektu (samodzielnie wykonanego) więc jeżeli zauważycie jakieś błędy to proszę o wyrozumiałość.

Obrazek

:arrow: Wstęp:
Z racji tej, że postanowiłem założyć akwarium słodkowodne potrzebowałem układu, który informowałby mnie o temperaturze wody, oraz sterował grzałką oraz oświetleniem – to jest główny powód wykonania tego układu.
Analizując działanie tego sterownika można powiedzieć, że jest to bardziej sterownik uniwersalny z programowalnymi 8 wyjściami, które mogą reagować na temperaturę, czas, oraz sygnał wejściowy (4 wejścia).

:arrow: Założenia:

Przed projektowaniem postawiłem sobie następujące założenia, które wykonywany sterownik powinien posiadać:
  1. sterowanie co najmniej 5 wyjściami;
  2. odczyt temperatury z 2 czujników temperatury – DS18B20;
  3. wykorzystanie zegara RTC;
  4. podtrzymanie czasu w zegarze RTC;
  5. interfejs użytkownika w postacie wyświetlacza LCD 2x16, oraz 4 przycisków;
  6. możliwość konfiguracji przy użyciu komputera PC – poprzez interfejs UART;
  7. elastyczne Menu;
  8. program czasu rzeczywistego;
  9. budowa modułowa.

:arrow: Budowa układu:

Układ sterownika został podzielony na następujące moduły:
  1. Moduł CPU;
  2. Moduł wejść;
  3. Moduł wyjść;
  4. Moduł zasilania;

oraz płytki pomocnicze:
  1. RS232;
  2. 1-wire;
  3. Przycisków;
  4. Zegar RTC z podtrzymaniem.

Na zewnątrz samego układu sterownika znajduje się moduł wykonawczy 230V.
Odpowiednie moduły posiadają niezbędne komponenty wymagane do prawidłowego działania. Połączenia pomiędzy odpowiednimi modułami odbywa się przy udziale przewodów przyłączeniowych. Każda płytka posiada złącze sygnałowe, które podłączane jest do modułu CPU, oraz złącze zasilające – w zależności od tego jaki napięcie jest wymagane na płytce, posiada ona jedno bądź dwa złącza zasilania (możliwość zasilenia napięciem o wartości 5VDC lub/i 12VDC).

Moduł CPU

Sercem całego sterownika jest moduł CPU wyposażony w mikrokontroler Atmega32. Układ taktowany jest zewnętrznym rezonatorem kwarcowym o częstotliwości 16MHz (na zdjęciu jest 4MHz ale został on zmieniony na 16MHz). Wszystkie piny są wyprowadzone na złączki o rastrze 2,54. Sterowanie wyjściami sterownika odbywa się poprzez cały port A. Wyświetlacz podpinany jest do pinów 2 do 7 portu C, natomiast sterowaniem podświetleniem odbywa się poprzez pin PD3. Stan wejść odczytywany jest na porcie D (piny od 4 do 7) natomiast stan przycisków na porcie B (piny od 1 do 4). Zostały również wyprowadzone piny do komunikacji poprzez UART. Interfejs 1-wire obsługiwany jest na pinie PB0.
Na płytce znajduje się miejsce do wpięcia płytki pomocniczej z zegarem RTC
Pozostałe nieużywane na chwilę obecną piny mikrokontrolera zostały również wyprowadzone na tzw. goldpiny.
Poniżej przedstawiam schemat ideowy modułu, oraz zdjęcie złożonego modułu.

ObrazekObrazek

Płytka drukowana została wykonana metodą przewlekaną. Druk jest jednostronny.


Moduł wejść


Sygnałem sterującym jest stan wysoki (poziom napięcia zasilającego VCC) układu. Na zewnątrz obudowy została wyprowadzona złączka 6 pinowa o rastrze 2,54. Na pinie pierwszym występuje masa, a na pinie ostatnim (szóstym) napięcie VCC. Na pinach 2 do 5 podawany jest sygnał wejściowy (wejścia od 1 do 4). Stan danego wejścia podawany jest pośrednio do mikrokontrolera poprzez transoptor LTV847. Został on zastosowany w celu optoizolacji sygnału wejściowego od sygnału trafiającego bezpośrednio do mikrokontrolera.
Poniżej przedstawiam schemat ideowy oraz zdjęcie złożonego układu.

ObrazekObrazek

Moduł wyjść

Drugim najważniejszym modułem (nie biorąc pod uwagę modułu zasilającego) w sterowniku jest moduł wyjść. Dzięki niemu możliwe jest sterowanie różnymi odbiorami (grzałka, oświetlenie) według preferencji które zostały ustawione w sterowniku.
Głównym i najważniejszym elementem tego układu jest transoptor (LTV847). Sygnał sterujący z mikrokontrolera podawany jest do transoptora. Stanowi on optoizolację układu wyjściowego.
Maksymalny prąd, jaki może pobierać odbiornik, na jedno wyjście wynosi 50mA.
Sygnały wyjściowe wyprowadzone są na złącze DB9.
Poniżej umieszczam schemat ideowy oraz zdjęcie złożonego modułu.

ObrazekObrazek

Jak widać na powyższych zdjęciach ostatnie 6 wyjść można ręcznie wyłączyć – został zastosowany do tego celu DIP SWITCH. Dzięki temu możliwe jest całkowite odłączenie wyjść, aby zminimalizować pobierany prąd przez ten moduł.
Zostanie (w niedalekiej przyszłości) dokonana zmiana modułu wyjść, polegająca na dodaniu tranzystorów, dzięki czemu wyjście układu sterującego będzie typu otwarty kolektor (bądź otwarty dren).

Moduł wykonawczy 230V

Moduł ten umożliwia sterowanie urządzeniami zasilającymi z sieci. Jedna płytka składa się z 3 wyjść. Sygnał ze sterownika podawany jest na układ optoizolacji wykonany z optotriaka, który z kolei steruje triakiem. Układ ten jest podłączany do sterownika poprzez złącze DB9.

Obrazek

Nie posiadam zdjęć jak wygląda w chwili obecnej ten moduł. Jak będę miał do niego dostęp i możliwość zrobienia zdjęcia to umieszczę je tutaj.

Moduł zasilania

Cały sterownik powinien zasilany być napięciem stałym 12V, natomiast wydajność prądowa zasilacza powinna wynosić minimum 1A.
Układ sterowania zasilany jest napięciem 5V, natomiast stan wysoki wyjść układu wynosi około 12V.
Konwersją napięcia zajmuje się popularny stabilizator liniowy LM7805. Na płytce moduły zasilającego znajdują się dwa gniazda bezpiecznikowe z wkładkami po 500mA. Gniazdo zasilające to popularne gniazdo DC 2,5. Polaryzacja styków we wtyczce w tym przypadku nie ma dużego znaczenia, dlatego że został zastosowany mostek greatza (brak konieczność uważania na polaryzacją kosztem obniżenia napięcia zasilającego o około 1,4V).

Obrazek

Zegar RTC

Za prawidłowe odmierzanie czasu odpowiedzialny jest układ PCF8563P. W przypadku zaniku napięcia zasilającego podtrzymaniem zasilania zajmuje się kondensator GOLD CAP o pojemności 0,47F.

ObrazekObrazek

Opis bibliotek do układu PCF8563P znajduje się na forum.

:arrow: Algorytmy działania:

Przedstawiam wam algorytmy działania poszczególnych fragmentów kodu. Powinny on Wam trochę nakreślić sposób oraz zasadę działania programu.

Algorytm główny sterownika:

Obrazek

Program pętli głównej jest bardzo krótki i wygląda następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak można zauważyć, większość programu oparta jest na zdarzeniach. Przed pętlą główną odbywa się natomiast rejestracja obsługi odpowiedniego zdarzenia.

Sterownik akwarystyczny umożliwia reagowanie na następujące parametry:
  1. Zmianę stanu wejścia;
  2. Zakres temperatury (ustawiana histereza);
  3. Załączenie oraz wyłączenie o określonej godzinie;
  4. Załączenie oraz wyłączenie o określonych czasach - dwa razy na dobę.


Obsługa reakcji wykonywana jest co około 3 sekundy – zmiana jakiegoś parametru zostanie dopiero uwzględniona po upływie tego czasu.

Algorytm główny obsługi reakcji:
Obrazek

Algorytm reakcji na ustawiony czas:
Obrazek

Algorytm reakcji na zadaną temperaturę:
Obrazek

Fragmenty algorytmu które zostało oznaczone tym samym kolorem są takie same, tzn. w programie jest to funkcja które jest wywoływana. Jeżeli występują drobne różnice, to funkcja taka posiada dodatkowy parametr wejściowy który powoduje odpowiednią zmianę wykonywanego programu.

W przypadku reakcji gdzie możliwe jest ustawienie załączenie i wyłączenie wyjścia dwa razy na dobę, algorytm działania jest ten sam co dla pojedynczego czasu. W przypadku gdy ustawione czasy się zazębiają, wyjście ustawiane jest dla czasu pierwszego.

:arrow: Obsługa sterownika:

Sterownik na panelu przednim posiada wyświetlacz LCD oraz 4 przyciski (ok/menu,
wyjście/anuluj, góra, dół). Wejście do menu, przejście do następnej pozycji (podczas
konfiguracji parametrów) oraz potwierdzenie wybrania odpowiedniej opcji dokonuje się przy użyciu przycisku ok/menu, natomiast wyjście oraz anulowanie danej czynności poprzez przycisk wyjście/anuluj. Poruszanie się po menu, oraz ustawianie parametrów dokonuje się za pomocą przycisków góra i dół.
Obrazek

Wyjścia podłączane są do złącza DB9. Maksymalne obciążenie wyjścia wynosi 50mA – zwiększenie obciążalności wyjścia dokonuje się poprzez dodatkowe moduły wykonawcze (np. moduł wykonawczy 230V). Możliwe jest podłączenie dwóch czujników temperatury DS18B20 – w tym celu na tylnim panelu wyprowadzone są dwa złącza 3 pinowe o rastrze 2,54. Na złączu 6 pinowym o rastrze 2,54 wyprowadzone są styki z których odczytywany jest stan wejściowy przez sterownik.

Obrazek

Ekranem początkowym jest ekran przedstawiający aktualny czas, odczytane temperatury oraz stan danego wyjścia. W miejscu prezentującym stan wyjść co określony czas pojawia się numer aktywnego wyjścia wraz z jego opisem.

Ekran początkowy:
Obrazek
Prezentacja opisu aktywnego wyjścia
Obrazek

Podczas wyświetlania ekranu głównego, aby przejść do menu sterownika należy wcisnąć przycisk ok/menu.

Struktura menu:
Obrazek

Konfigurację sterownika można również dokonać poprzez komputer PC łącząc sterownik przy pomocy przejściówki UART – RS232 (np. poprzez układ ft232). Komunikacja ze sterownikiem odbywa się po wcześniejszym wyborze polecenie Połącz z PC z menu sterownika (naciśnięcie dowolnego przycisku, bądź reset układu spowoduje przerwanie połączenia z komputerem PC). Ustawianie parametrów, oraz odczyt danych wykonuje się w terminalu (np. PuTTY) przy wykorzystaniu komend AT.

ObrazekObrazekObrazek

Uffff w końcu podsumowanie :D

:arrow: Podsumowanie:

Układ w chwili obecnej działa już jakiś okres czasu. Jak w każdym układzie pojawiły się i nadal czasem pojawiają się błędy, ale na bieżąco są one usuwane. Mogę powiedzieć, że założenia zostały całkowicie spełnione.
Już mam w głowie pomysł na drugą wersję sterownika. W następnej wersji mam zamiar podzielić wyjścia na kilka grup, które będą podporządkowane odpowiednim funkcją (np. grupa uniwersalnego sterowania – gniazda 230V, sterowanie oświetleniem LED, itp.). Będzie możliwość również podpięcia innych czujników (wilgotności, PH), oraz zostanie użyty inny wyświetlacz – zastanawiam się nad wyświetlaczem LCD 4x20 albo TFT z dotykowym ekranem.

Jest to mój pierwszy duży projekt wykonany od początku do końca – nie licząc projektów kilku układów, na których się uczyłem. Wykonanie go zajęło mi około 3 miesięcy, po kilka godzin na dzień – oczywiście pierwsza wersja.

Nie umieszczę na chwilę obecną programu ani plików z EAGLE. Jak ‘wypieszczę’ układ, oraz program postaram się uzupełnić wątek o te pliki.

I jeszcze zdjęcie jak to wszytko wygląda w środku:
Obrazek


P.S.
Dzięki Mirku za książki, moduły, oraz zaangażowanie.

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2015, o 17:38 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27319
Lokalizacja: Szczecin
Pomógł: 1041

ŁAŁ! że tak powiem .... jakże miło ogląda się takie projekty w DIY .... mniaaam ... schludnie wykonana obudowa, opisy, fajne sterowanie przez Putty ... nie no na prawdę jest na czym oko zawiesić. Gratulacje.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2015, o 19:27 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

Ale super projekt :) Kolego a ten panel przedni to wydruk kolorową drukarką na zwykłym papierze czy jakieś PCV? :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2015, o 19:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Wydrukowany na zwykłym papierze drukarką atramentową. Następnie użyłem laminarki - przydaje się nie tylko do termotransferu, czy wulkanizacji folii polimerowej.

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2015, o 22:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Kawał porządnej roboty, płytki, panel i wszystko zapakowane w zgrabną obudowe. Swietnie Ci wyszły płytki PCB, ja sie z tym mecze teraz ehh. Gratulacje :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 10:07 

Pomógł: 0

Świetny projekt.

Jedna maleńka uwaga, sterujesz wyłącznie obciążeniami bezindukcyjnymi ? żarówka?.

Bo nie zauważyłem snubberów (gasików) na Triakach.

Po za tym bezpiecznik na LM7805 powinien być przed stabilizatorem, bo one idą na zwarcie w przypadku uszkodzenia.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 19:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Dzięki za dobre słowa;)

rezasurmar napisał(a):
Bo nie zauważyłem snubberów (gasików) na Triakach.


Zapomniałem o umieszczeniu ich. W pierwszej wersji na płytce było miejsce przewidziane na gasiki, a w tej już całkowicie o tym zapomniałem. Przy okazji je tam zamontuję.
Steruję grzałką, oraz świetlówkami.
Dzięki za zwrócenie uwagi.

rezasurmar napisał(a):
Po za tym bezpiecznik na LM7805 powinien być przed stabilizatorem, bo one idą na zwarcie w przypadku uszkodzenia.


Pomocna uwaga. W następnych wykonaniu modułu tak zrobię.

Atmegowiec napisał(a):
Swietnie Ci wyszły płytki PCB, ja sie z tym mecze teraz ehh. Gratulacje :)


Dobrze mi wyszło, bo drukowałem na dobrej drukarce z oryginalnym tuszem (nie u mnie, ja mam atramentową - niestety). W chwili obecnej tuszu oryginalnego nie ma, tylko zamiennik i płytki tragicznie mi wychodzą (toner dobrze nie kryje i są podtrawienia).
Właśnie przechodzę na metodę fotochemiczną, przy wykorzystaniu folii światłoczułej (fotopolimeru). Już jestem po kilku udanych próbach (po dobraniu odpowiedniego czasu naświetlania oraz sposobie wulkanizacji folii) przy wydruku z drukarki laserowej powiem, że fajna i szybka metoda to jest (i powtarzalna). Teraz właśnie próbuję z atramentowym wydrukiem na kalce i powoli mi wychodzą płytki, ale nie za każdym razem.
Jak już ją opanuję to umieszczę mały poradnik (może za bardzo powiedziane) dotyczący fotochemii z folią fotopolimerową, bo widziałem na forum, że dużo osób miało z nią problem.

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2015, o 00:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2013
Posty: 288
Ostrzeżenia: -2
Pomógł: 23

Fajny projekt i ładnie udokumentowany od założeń po wykonanie:)
Gratulacje!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO