| Author |
Message
|
Karol966 Poziom 21

Joined: 30 Jul 2006 Posts: 1486 Location: Obecnie Poznań
|
#1
16 May 2010 11:00 Programowalny sterownik oświetlenia DC |
|
|
|
Witam
Chciał bym przedstawić sterownik, który poczyniłem kilka miesięcy temu. Sterownik posiada 6 kluczy tranzystorowych na napięcie 200V, prąd do 6A oraz 2 gniazda 230V sterowane przekaźnikiem o obciążalności prądowej do 10A. Zadaniem tegoż urządzenia jest sterowanie poziomem światła zachowującego się w sposób naturalny, zbliżony do trybu oświetlenia słonecznego. W konfiguracji sterownika ustawiamy miedzy innymi:
- godzinę rozpoczęcia trybu rozjaśniania „wschód słońca”
- wartość początkową poziomu światła ( podawana w [%])
- czas między kolejnymi inkrementacjami/ dekrementacjami (podawany w [min])
- krok inkrementacji/ dekrementacji (podawany w [%])
- wartość końcową poziomu oświetlenia ( podawaną w [%])
- godzinę rozpoczęcia trybu ściemniania „ zachód słońca”
Sterownik umożliwia również sterowanie ręczne poziomem jasności po wejściu w MENU bądź bezpośrednio po naciśnięciu klawiszy +/-.
W momencie osiągnięcia zerowego poziomu oświetlenia przekaźniki zostają rozłączone wyłączając zasilacze prądu stałego pierwotnie zasilające lampy. Zostają one załączone dopiero następnego dnia podczas rozjaśniania. Krótko pisząc są one włączone dla dowolnego poziomu jasności większego od 0 %)
Generalnie ten sterownik jest przeznaczony właśnie do „wpięcia” między istniejący zasilacz DC a odbiornik będący w tym przypadku diodami LED 1W połączonymi po 40 sztuk szeregowo. Jednakże nie ma problemu w przerobieniu jego na regulator fazowy prądu zmiennego z triakiem jako elementem wykonawczym.
Kilka fotografii:
Z tego co pamiętam schemat nawet nie powstał. Czasami z lenistwa przy tak mało skomplikowanych urządzeniach od razu projektuje płytkę ;)
Program niestety został napisane w BASCOM’ie. Jeszcze wtedy nie wiedziałem, że obsługa i2c jest równie prosta w C jak i w BASCOM’ie. Zajmuje on niemalże całą dostępną pamięć atmegi8 nawet przy włączonej optymalizacji kody także to był wystarczający demotywator do dalszego użytkowania tegoż ‘języka’. Reasumując, odradzam programowania w Bascomie na koszt [C] wszystkim osobom, które myślą o poważniejszym programowaniu. Sam sposób pisania w czystym [C] jest dużo przyjemniejszy od bascoma a wcale nie jest ciężki do nauki ;)
Z powodu braku wolnej pamięci nie zdołałem dorobić obsługi termometru DS1820. Wydaje mi się, że wystarczyło by tej pamięci na obsługę LM35 jednakże nie podjąłem już takiej próby więc temperatura widoczna na wyświetlaczu LCD jest tylko tekstem.
Kodu źródłowego nie chciał bym udostępniać jednakże w przypadku zainteresowania mogę dokładnie opisać działanie interesującej funkcji lub ewentualnie wkleić wybrane funkcje.
|
|
| Back to top |
|
 |
nico41 Poziom 11

Joined: 25 Jul 2005 Posts: 65 Location: kraków
|
#2
16 May 2010 14:38 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Urządzenie ciekawe. Wykonanie ok. Mogłeś tylko wyprowadzić złącza zamiast lutować kable w płytkę było by łatwiej podpinać.
|
|
| Back to top |
|
 |
wojtek_cyru Poziom 8

Joined: 28 Sep 2006 Posts: 29 Location: Mielec
|
#3
16 May 2010 16:14 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Projekt super :) A mógł byś mniej więcej opisać jak zrobiłeś tryb ściemniania i rozjaśniania, chodzi mi zarówno o stronę programowa i wykonawczą
|
|
| Back to top |
|
 |
Google

|
#
16 May 2010 16:14 |
|
|
|
|
|
| Back to top |
|
 |
Karol966 Poziom 21

Joined: 30 Jul 2006 Posts: 1486 Location: Obecnie Poznań
|
#4
16 May 2010 17:26 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Proces rozjaśniania/ ściemniania rozpoczyna się w momencie zrównania czasu podanego przez użytkownika( oznaczonego odpowiednio T_on dla rozjaśniania oraz T_off dla ściemniania) z czasem zegara RTC. Następnie, z tego co pamiętam do zmiennych tymczasowych (dajmy na to h_tmp, m_tmp) przepisana są te wartości i dalej to one są sprawdzane. Wartość ich jest zwiększana/ zmniejszana w każdej chwili zrównania zmiennych pomocniczych z czasem zegara o wartość ustawioną w menu sterownika. Oto prosty przykład:
Ustawiamy sobie czas rozpoczęcia rozjaśniania na godzinę 06:00, wartość inkrementacji/ dekrementacji 1% (wartosc) oraz czas między kolejnymi zmianami na np 5minut (zmienna np krok). Zmienne h, m,s odpowiadają za czas zegara a zmienne h_tmp, s_tmp to zmienne pomocnicze. Czas rozpoczęcia rozjaśniania znajduje się w zmiennych t_on_h oraz t_on_m.
| Code: |
if(t_on_h == h && t_on_m == m)
{
m_tmp = t_on_m+krok;
h_tmp = t_on_h; // jezeli mamy np 59 minut i krok 5 to uzyskali byśmy czas 64 minuty więc oczywiście trzeba się przed tym zabezpieczyć i wówczas zwiększyć godziny
}
// dalej:
if(h_tmp = h && m_tmp == m)
{
m_tmp +=krok;
if(m_tmp>59) m_tmp -= 60;
h_tmp++; // tak ogólnie ;)
PWM = PWM + wartość // ogólnie ;)
}
|
Dodano po 5 [minuty]:
Ten kod jest tylko wyjaśnieniem ogólnej zasady działania i nie działał by prawidłowo choćby z uwagi na to, że pierwszy warunek był by spełniony przez całą minutę - trzeba się zabezpieczyć przed tego typu sprawami ;)
|
|
| Back to top |
|
 |
farrix Poziom 15

Joined: 17 Mar 2010 Posts: 217 Location: Opole
|
#5
16 May 2010 18:31 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Pisałeś że pisałeś w basicu a kod u góry jest w c?
Jeśli pisałeś w basicu to napisz jak realizowana jest funkcja czasowa tzn. od godziny np. 8.00-16.00 jest dzień taka banalna rzecz a jestem w trakcie tworzenia ster. co i nie umiem dojśc do tak banalnej rzeczy.
|
|
| Back to top |
|
 |
Google

|
#
16 May 2010 18:31 |
|
|
|
|
|
| Back to top |
|
 |
Karol966 Poziom 21

Joined: 30 Jul 2006 Posts: 1486 Location: Obecnie Poznań
|
#6
16 May 2010 20:28 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Pisałem w bascomie, ten kod powyżej co prawda pisany w C ale napisałem go 'z marszu' tak aby wyjaśnić ideę działania tej funkcji.
No fakt to banalne, chyba, że się nie rozumiemy:
mamy znacznik dzien = 1 (TRUE) lub = 0 (FALSE)
| Code: |
If Godzina > 8 And Godzina < 16 Then Dzien = 1
If Godzina < 8 Or Godzina > 16 Then Dzien = 0
|
|
|
| Back to top |
|
 |
farrix Poziom 15

Joined: 17 Mar 2010 Posts: 217 Location: Opole
|
#7
16 May 2010 20:40 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Dzięki, a ja pare dni nad tym mysle i mnie to dobijało chce zrobic sterownik który w dzięn bedzie utrzymywał większa temp. a w nocy mniejsza zeby nie trze chdzic o 3.00 nałożyć węgla:D:D
|
|
| Back to top |
|
 |
zdarecki Poziom 6

Joined: 29 Apr 2007 Posts: 17 Location: minsk maz
|
#8
17 May 2010 20:34 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Witam,
przepraszam , że wtrace swoje 5gr.
@karol966 pomyśl chwile.. jezeli już w pierwszym warunku sprawdzileś czy Godzina znajduje sie w przedziale 8-16 to po co kolejne sprawdzenie , czyzby byla inna możliwosc??
no tak , faktycznie... twoje warunki pomijaja godzine 8 i 16, co sie wtedy dzieje?
Dzien = Godzina >= 8 && Godzina <= 16 ? 1: 0 ;
Pozdrawiam
|
|
| Back to top |
|
 |
Karol966 Poziom 21

Joined: 30 Jul 2006 Posts: 1486 Location: Obecnie Poznań
|
#9
17 May 2010 20:42 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Faktycznie, zapomniałem o warunku większy - równy, mniejszy - równy ;)
Pytasz po co drugi warunek? Sam zrobiłeś to samo, ty leże w jednej linii oraz dodałeś warunek równości ;)
|
|
| Back to top |
|
 |
zdarecki Poziom 6

Joined: 29 Apr 2007 Posts: 17 Location: minsk maz
|
#10
17 May 2010 20:58 Re: Programowalny sterownik oświetlenia DC |
|
|
|
to nie zupelnie tak, u mnie sprawdzany jest 1 warunek to dziala jak
| Code: |
if(Godzina >= 8 && Godzina <= 16) Dzien = 1;
else Dzien=0;
i to jest poprawna forma takiego sprawdzenia, wlściwie to bełdem jest pisanie takiej składni jak zaproponowałeś
if(...)
if(...)
itd.
powinno byc
if(...)
else if(...) lub else |
pozdrawiam
|
|
| Back to top |
|
 |
Google

|
#
17 May 2010 20:58 |
|
|
|
|
|
| Back to top |
|
 |
Dik98 Poziom 2

Joined: 09 May 2010 Posts: 3 Location: Skoczów
|
#11
21 May 2010 20:09 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Projekt jest bardzo pomysłowy, ale czy dało by się do niego podłączyć jakieś bezprzewodowe sterowanie :?:
|
|
| Back to top |
|
 |
Karol966 Poziom 21

Joined: 30 Jul 2006 Posts: 1486 Location: Obecnie Poznań
|
#12
21 May 2010 21:35 Re: Programowalny sterownik oświetlenia DC |
|
|
|
Bezprzewodowe czyli jakie? Są różne rodzaje transmisji bezprzewodowej. Co chciał byś nim sterować?
|
|
| Back to top |
|
 |