
Układ nadążny za słońcem- inaczej układ śledzący, jest rodzajem układu sterowania, który umożliwia automatyczne lub półautomatyczne wodzenie za Słońcem. Układy tego typu wykorzystuje się najczęściej w celu znacznego podniesienia wydajności baterii fotowoltaicznych lub kolektorów słonecznych.
Podstawowym założeniem projektu jest realizacja układu nadążnego za słońcem, czyli możliwość wykrycia słońca oraz odpowiednie wysterowanie silników DC w taki sposób, aby płaszczyzna odbiorników solarnych była ustawiana w kierunku prostopadłym do promieni słonecznych.
Założenia w skrócie:
-układ nadążny za słońcem;
-możliwość pomiaru temperatury służących do kontrolowania przepływu czynnika cieplnego;
-podstawowe alarmy, konfiguracja ich;
-interface LCD + 4 klawisze.
Program wykonany w AtmelStudio w C.
No to prezentacja:
1. Hardware
1.1 mózg
Projekt układu nadążnego oparty jest na ośmiobitowym mikrokontrolerze Atmega16P. Zasilany zgodnie z kartą katalogową.
1.2 Interfejs wejściowy
Wejściowy interfejs użytkownika zrealizowałem za pomocą czterech, popularnie używanych w dziedzinie elektroniki, monostabilnych mikroprzycisków.

Obsługa przycisków zrealizowałem za pomocą pinów 0, 1, 2, 3 portu C w taki sposób, że przy wciśnięciu zwierają dany pin portu C z masą, podając w ten sposób stan niski. Przy takim połączeniu linie wejścia/wyjścia pinów 0, 1, 2, 3 portu C zostały skonfigurowane jako wejścia z podciągnięciem do VCC. Drgania przycisków są obsłużone softwarem.

1.3 Interfejs wyjściowy
Wyjściowy interfejs użytkownika zrealizowałem za pomocą alfanumerycznego wyświetlacza LCD HD44780, podłączonego do pinów 0-7 portu B.

Jako wizualny, pomocniczy wskaźnik stanów sterownika wykorzystałem elektroluminescencyjne diody LED.
Obsługę diod LED zrealizowałem pomocą pinów 6, 5 i 4 portu C oraz pinu 6 portu D, które skonfigurowałem jako wyjście. Gdy na którymś z pinów ustawiony zostanie stan wysoki, będzie to zasygnalizowane świeceniem diody. Za pomocą zielonej diody LED1 sygnalizuje się poprawną pracę sterownika. Gdy dioda mruga z częstotliwością 3Hz, sterownik działa poprawnie, gdy dioda LED1 świeci bądź jest zgaszona, sterownik jest w stanie zawieszenia i konieczne jest przeprowadzenie zerowania. Czerwone diody LED2, LED3 i LED4 służą do sygnalizacji aktywnych alarmów temperatury. Jeżeli któryś z alarmów zostanie aktywowany, odpowiednia dioda zostanie zapalona (alarmy temperatury zostały opisane niżej).

Jako dźwiękowy wskaźnik stanów sterownika użyłem brzęczyka z generatorem.
Obsługa brzęczyka zrealizowałem za pomocą pinu 7 portu D, który skonfigurowany jest jako wyjście. Gdy na pinie 7 portu D ustawiony zostanie stan wysoki, spowoduje to wygenerowanie sygnału dźwiękowego. Brzęczyk może być wykorzystywany przy obsłudze przycisków - ustawienie to można włączyć lub wyłączyć, każdorazowe wciśnięcie któregoś z przycisków może być dodatkowo sygnalizowane krótkim dźwiękiem. Drugą funkcją, gdzie wykorzystuje się sygnał dźwiękowy jest sygnalizacja aktywnych alarmów. Jeżeli któryś z alarmów zostanie aktywowany, zasygnalizowane zostanie to przerywanym sygnałem.

1.4. Układ sterowania silnikami DC
Układ sterowania silnikami DC jest oparty na układzie L298, który realizuje dwa układy mostka typu H. Może być zasilany napięciem stałym o wartości nieprzekraczającej 40V. Posiada cztery wejścia, za pomocą których możliwe jest sterowanie 2 silnikami DC. Sterowanie realizuje się poprzez ustawienie stanu niskiego lub wysokiego na jedno z wejść INPUT.
Układ wyposażony jest również w wejście ENABLE służące do włączenia lub wyłączenia któregoś z silników. Odpowiednie ustawienie prędkości silnika realizowane jest za pomocą techniki modulacji szerokością impulsu PWM. Dwa wejścia CURENT SENSING podłączone do masy służą do kontroli prądu obciążenia – w razie przekroczenia 4A układ zostanie wyłączony. Obsługa układu L298 zrealizowałem za pomocą pinów 0, 1, 2, 3, 4 i 5 portu D.

1.5. Układ pomiarowy natężenia oświetlenia
Układ pomiarowy zrealizowałem za pomocą czterech zestawów fotorezystora RPP130 wraz z potencjometrem dopasowującym 10kΩ, połączonych w typowy układ dzielnika napięcia. Oporność fotorezystora jest ściśle związana z natężeniem światła, które pada na niego i zmienia się z przedziału od 1Ω do 10MΩ. Im większe jest natężenie światła, tym mniejszą oporność ma fotorezystor.

Potencjometr jest wykorzystywany jako opornik dopasowujący. Dzięki niemu możemy przesuwać krzywą zależności między Uwy i R2, a co za tym idzie - między Uwy i natężeniem światła padającego na fotorezystor.
Tak skonstruowane cztery zestawy dzielnika napięcia podłączone są do wejść analogowo-cyfrowych mikrokontrolera Atmega16, gdzie Uwy odpowiednio podłączone są do pinów 0, 1, 2, 3 Portu A, a Uwe jest równe 5V. Przy takim połączeniu linie wejścia/wyjścia pinów 0, 1, 2, 3 portu A skonfigurowałem jako 10-bitowe wejścia przetwornika analogowo-cyfrowego.

1.5. Układ pomiaru temperatury
Do pomiaru temperatury wykorzystałem piny 4 i 5 portu A oraz termometr cyfrowy DS18B20 firmy Dallas. Układ scalony DS18B20 jest czujnikiem cyfrowym, który komunikuje się z mikrokontrolerem za pomocą popularnego interfejsu 1-wire, mikrokontroler komunikuje się z DS18B20 wykorzystując tylko jedną linię we/wy.

2. Software
Do realizacji tego założenia wykorzystałem układ mierzący natężenie oświetlenia, układ sterowania silnikami DC oraz odpowiedni algorytm opisany w dalszej części. Dzięki układowi mierzącego natężenia oświetlania oraz wykorzystaniu odpowiednich przesłon, można określić, w jakiej pozycji płaszczyzna, na której znajdują się czujniki znajduje się w stosunku do źródła światła. Jeżeli źródło światła nie znajduje się w pozycji prostopadłej do płaszczyzny z czujnikami, przesłony znajdujące się na płaszczyźnie rzucają cień na niektóre czujniki.
Jeżeli źródło światła znajduje się z lewej strony, czujniki będące po stronie prawej znajdują się w cieniu. Odpowiednio, jeżeli źródło światła znajduje się z prawej strony, czujniki będące po lewej stronie znajdują się wówczas w cieniu, jeżeli źródło światła znajduje się z dołu lub z góry, odpowiednie pary czujników dolne lub górne znajdują się w cieniu. Dzięki pomiarowi napięcia Uwy można określić, czy czujnik jest oświetlony, czy znajduje się aktualnie w cieniu, a co za tym idzie - możemy określić położenie źródła światła w stosunku do płaszczyzny, na której umiejscowione są czujniki.

W pierwszej kolejności wyniki są odpowiednio grupowane i liczone są średnie arytmetyczne. Jeżeli średnia z dwóch czujników górnych (PA01) jest niższa od średniej z dwóch czujników dolnych (PA23). Oznacza to, iż na czujniki dolne pada więcej światła niż na górne. Dodatkowo, jeżeli ta różnica jest większa od stałej T – tolerancja, wykorzystany jest układ L298, który sterując silnikiem M2 porusza 1-krok płaszczyznę odbiornika solarnego w dół. Odpowiednio, jeżeli te zależności są odwrotne, układ sterując silnikiem M2, porusza płaszczyznę odbiornika solarnego 1-krok w górę. Jeżeli średnie są sobie równe lub ta różnica jest mniejsza niż stała T, wówczas silnik zachowuje swoją pozycję. Analogicznie operacja przeprowadzona jest dla średnich wyliczanych przez grupowanie czujników z lewej (PA02) i prawej (PA13) strony. Jeżeli występuje różnica w którymś z przypadków i ta różnica jest większa od stałej T, silnik porusza płaszczyznę odbiornika solarnego odpowiednio w prawo lub w lewo. W ten sposób jest zrealizowana funkcja układu nadążnego za słońcem. Proces jest powtarzany co 0,5s.
3. Menu - opis funkcji sterownika
Menu sterownika jest wielopoziomowe. Niektóre funkcje są niedostępne, zostaną one uaktywnione w miarę dalszego rozwijania projektu. Do poruszania się po menu sterownika wykorzystałem 4 mikroprzyciski: S2, S3, S4, S5.
S2 „BACK” poruszanie się w tył po poziomie menu, wyłączanie edycji zmiennych;
S3 „LEWO” poruszanie się po funkcjach danego poziomu menu, zmiana wartości zmiennych o jednostkę w dół;
S4 „PRAWO” poruszanie się po funkcjach danego poziomu menu, zmiana wartości zmiennych o jednostkę w górę;
S5 „ENTER” poruszanie się w przód po poziomie menu, wyłączanie edycji zmiennych.
4. Włączamy
Po włączeniu zasilania układ kalibruje się ok. 2ms i zostają wgrane ustawienia domyślne, a na wyświetlaczu LCD zostaje wyświetlony ekran powitalny.

Ekran powitalny jest zarazem ekranem, który wyświetla się podczas działania funkcji STAND_BY. Funkcja ta jest aktywowana samoistnie, gdy sterownik przez 30s. nie jest używany przez operatora tzn. żaden z przycisków nie został wciśnięty przez 30s. a po upływie 40s. wyłączane jest oświetlenie wyświetlacza LCD. Gdy któryś z przycisków zostanie wciśnięty, funkcja STAND_BY zostaje przerwana, a sterownik przechodzi do głównego poziomu menu. Główny poziom menu składa się z 4 pozycji, pomiędzy którymi przełącza się za pomocą przycisków S3 „LEWO” oraz S4 „PRAWO”.

Wybór sterowania
W oknie „Wybór sterowania” użytkownik może wybrać jedną z dwóch metod pozycjonowania odbiorników solarnych. Pierwsza z nich jest to sterowanie nadążne, druga sterowanie czasowe. Sterownik nie posiada układu zegara czasu rzeczywistego RTC (z ang. Real Time Clock), dlatego też wybór sterowania czasowego nie jest możliwy. Ewentualnie do dalszej rozbudowy.

Pomiar temperatury
W oknie „Pomiar temperatury” użytkownik może odczytać wartość temperatury mierzonej przez dwa czujniki Dallas DS18b20 oraz skalibrować dwa typy alarmu temperatury.

Pierwszy typ alarmu temperatury określa się dla czujnika pierwszego i/lub drugiego. Ustawienie alarmu polega na ustawieniu wartości granicznej dla mierzonej temperatury. Jeżeli ta wartość zostanie przekroczona dla któregoś z czujników, alarm zostaje uaktywniony. Drugi typ alarmu określa się dla obu czujników. Kalibracja tego typu alarmu polega na ustawieniu wartości granicznej, o którą mierzona wartość temperatury czujnika drugiego jest większa od mierzonej temperatury czujnika pierwszego. Jeżeli różnica między temperaturą mierzoną przez czujnik drugi, a temperaturą mierzoną przez czujnik pierwszy będzie większa od ustawionej wartości granicznej zostanie uaktywniony alarm.

Pomiar napięcia
Pomiar napięć jest opcjonalny i można go zrealizować zamiast pomiaru temperatury w zależności, czy to ma być sterownik do kolektorów czy baterii solarnych.
Ustawienia
Okno ustawienia składa się z trzech pozycji. Pierwsza z nich służy do włączenia lub wyłączenia dźwięku podczas obsługi klawiszy. Druga pozycja służy do ustawienia zegara RTC (sterownik opisany tu nie posiada jeszcze układu RTC, a więc ta opcja nie jest dostępna). Trzecia pozycja służy do kalibracji układów dzielnika napięcia służących do określenia pozycji słońca względem płaszczyzny, w której znajdują się fotorezystory - czujniki. Kalibracja polega na ustawieniu płaszczyzny pomiarowej w kierunku prostopadłym do padających promieni słonecznych. Wskazania dla wszystkich czujników powinny być zbliżone i wartości oscylować wokół 800, a różnica między poszczególnymi układami dzielników napięcia nie powinny przekraczać 50. Wartości mierzone na ADC są w granicach <0; 1024>.

Przykładowe zastosowanie powyżej opisanych alarmów dla odbiornika solarnego typu kolektor słoneczny

Czujnik T1 jest umieszczony przy ujściu z kolektora słonecznego. Czujnik T2 zamieszczony jest przy ujściu z bojlera, wówczas alarmy można skonfigurować w poniższy sposób:
Konfiguracja ALARM1- Jeżeli woda w kolektorze wzrośnie do np. 100st., włącza się alarm oraz zawór bezpieczeństwa Z1.
Konfiguracja ALARM2 - Jeżeli woda w bojlerze wzrośnie do np. 100st., włącza się alarm oraz zawór bezpieczeństwa Z2.
Konfiguracja ALARM 1-2 - Jeżeli różnica temperatury między czujnikiem T1 a T2 jest większa niż 50st., oznacza to np. awarię pompy wymuszającej obieg. Włącza się alarm i zawór bezpieczeństwa.
Alarm ten można wykorzystać jako sterowanie wł./wł. pompę obiegową, jeżeli nie jest to rozwiązane - w inny sposób. Do sterownika można podłączyć dowolną ilość termometrów poprzez zastosowanie multiplexera. Jednak jest to już rozwiązanie pod konkretny układ.
A teraz najlepsze, czyli prototyp
Głowica pomiarowa została wykonana z atrapy kamery, która, o dziwo, posiada w sobie ruchomą platformę w jednej osi, co ułatwiło sprawę. Obrotu wykorzystano serwa modelarskie przerobione na silniki DC.
Tak prezentuje się głowica w całości:




Część obliczeniowa wraz z interfejsem została wykonana za pomocą uniwersalnej płytki testowej.

Filmy:
Menu + alarm
Głowica
To jest mój 2. projekt z wykorzystaniem mikrokontrolera, wykonałem go na bazie ogólnodostępnych przykładów z internetu i kart katalogowych.
Zdecydowałem się go Wam przedstawić ze względu na to, iż zawiera w sobie większość funkcji wykorzystywanych przez początkujących programistów (tytuł).
Czemu ma taką postać? Projekt uważam jako skończony i nie potrzebuję go w lepszej wersji.
Dla wszystkich użytkowników którzy mi pomagali download bez punktów.
Download zawiera cały folder projektu z AtmelStudio i schemat w PDF.
Pamiętaj - kod, program zawsze da się zoptymalizować, dlatego proszę bez zbędnych uwag.
Wbrew pozorom najwięcej problemów mi zrobiło zrobienie wielopoziomowego menu.

Cool? Ranking DIY