Sterownik Podświetlania Sufitu


9.33333
Ocena: None Średnia: 9.3 (9 głosujących)

Sterownik podświetlania sufitu to kolejny projekt, który może zostać wykorzystany jako element architektury światła w domu. Ponieważ w obecnych czasach bardzo ważny jest aspekt oszczędzania energii całość docelowo ma zostać oparta o diody LED pod różnymi postaciami. Mowa tutaj o "żarówkach" LED w obudowach do typowych sufitowych oprawek halogenowych (zasilanych 230V), taśmach z diodami LED SMD oraz klasycznych diodach w obudowach do montażu przewlekanego. Opisywany układ został podzielony na 3 moduły: dwa układy wykonawcze i sterownik oparty o mikrokontroler ATMega162. Sterownik pozwala na sekwencyjne zapalanie do 12 lamp halogenowych 230V (za pomocą układu wykonawczego z triakami), reguluje jasność taśmy LED 12V i symuluje niebo z gwiazdami w postaci 40 niebieskich diod LED pracujących w 8 niezależnych kanałach. Gwieździste niebo może pracować w różnych trybach animacji, a pokaźne zasoby pamięci programu mikrokontrolera (16kB) pozwalają wprowadzić niemal dowolne przejścia świetlne. Program w wersji podstawowej nie zajmuje nawet połowy dostępnego miejsca, zatem możliwa jest jego dowolna rozbudowa. Obsługa sterownika jest możliwa za pomocą pilota RC5 lub czterech klasycznych przełączników podtynkowych. Układ zapewnia automatyczne wyłączenie lamp po zaniku i powrocie napięcia zasilania.

Działanie:


Schemat blokowy projektu przedstawiony został na rysunku poniżej:

Najważniejszą a zarazem najtrudniejszą do wykonania częścią układu jest "wyświetlacz", jeśli oczywiście można tak nazwać podwieszany sufit naszpikowany diodami LED i lampami halogenowymi. W projekcie modelowym zastosowano 10 lamp halogenowych, 40 niebieskich (gwiazdy) i 6 białych (umieszczonych w jednej linii nad miejscem gdzie będzie stało łóżko) diod w obudowach przewlekanych oraz 10 metrów listwy z diodami SMD w kolorze białym. Taśmy LED sterowane są za pomocą układu wykonawczego wbudowanego w sterownik, podobnie sprawa wygląda z 6 białymi diodami LED. Lampy halogenowe sterowane są za pomocą układu wykonawczego z 12 triakami (można rozbudować układ o dwie dodatkowe lampy). Do sterowania diodami niebieskimi (gwiazdami) wykorzystuje się dwa moduły wykonawcze podłączone równolegle do sterownika. Każdy z nich może sterować do 32 diod, jednak w projekcie modelowym jeden moduł steruje 24 a drugi 16 diod ze względu na rozmiary sufitu. Wyłączniki podtynkowe podłączone są bezpośrednio do sterownika, zwierając odpowiednie jego wejścia do masy. Zasilanie podłączone jest do układu na stałe poprzez zasilacz 12V/60W (przetwornica), sterownik pracuje cały czas, dlatego w dowolnym momencie można włączyć lampy za pomocą pilota.

Na rysunku poniżej przedstawiony został schemat ideowy sterownika:

Sercem układu jest mikrokontroler U1 (ATMEGA162) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1-C2 (22pF). Kondensator C7 (100nF), umieszczony blisko mikrokontrolera filtruje jego zasilanie. Rezystor R1 (10k) podciąga nóżkę RESET mikrokontrolera do +5V, a przycisk R (uSwitch) umożliwia jego reset. Zasilanie U1 realizowane jest dzięki stabilizatorowi U2 (7805) i kondensatorom C3 (220uF), C4 (100nF), C5 (47uF) i C6 (100nF), które są konieczne do poprawnej pracy stabilizatora. Dioda D1 sygnalizuje naciśnięcie klawisza na pilocie (odbiór transmisji RC5), jej prąd ograniczany jest przez rezystor R3 (470R). Układ U3 (TSOP1736) to scalony odbiornik podczerwieni pracujący z częstotliwością sygnału 36KHz. Napięcie jego zasilania filtrowane jest przez elementy R2 (220R) i C8 (100uF). Złącze FD1 (FD16) umożliwia podłączenie dwóch modułów wykonawczych (równolegle na jednej taśmie) do sterowania diodami pełniącymi rolę gwiazd. Do złącza śrubowego P (ARK) podłączony jest przewód sterujący od wyłączników ściennych oraz do diody LED montowanej w wyłączniku. W projekcie modelowym do sterowania wykorzystano dwa podwójne wyłączniki podtynkowe w których wmontowane zostały LED'y. Diody te informują o wyłączeniu wszystkich źródeł światła i pozwalają zlokalizować wyłącznik w ciemności.

Tranzystor T1 (IRF1405) jest elementem wykonawczym do zrealizowanego programowo PWM dla taśm LED 12V (światła obrysu wokół sufitu). Tranzystor ten nie będzie się nagrzewał bez radiatora nawet przy prądach rzędu kilku A ze względu na znikomą rezystancję w stanie otwarcia. Rezystor R8 (10k) stanowi zabezpieczenie przed przypadkowym zwarciem bramki tranzystora do +12V lub masy, które może się zdarzyć podczas uruchomienia układu. Rezystor ten można zastąpić zworą w finalnym układzie. Do gniazd GP1-GP4 (GW-02) należy podłączyć fragmenty taśm diodowych. W projekcie modelowym do każdego ze złącz dołączone zostały około 2-3 metry taśmy LED (w sumie 10m).

Tranzystor T2 (BC547B) wraz z rezystorami R6 (2,2k), R4 (1k) i złączem GP9 (GW-02) stanowi układ wyjściowy do zasilania diod LED w obudowach do montażu przewlekanego (do FD1 podłączone jest jeszcze 8 takich układów). Do złącza GP9 można dołączyć 1-3 diody w szeregu. Prąd diod ograniczony jest przez rezystor R4, a dzięki takiej konfiguracji (zdegenerowany emiter) niezależnie od ilości diod i wahań zasilania prąd diod będzie zawsze stały. W tym przypadku wartość tego prądu jest ustalona na około 4,3mA (4,3V na emiterze i wartość rezystora 1k). Rezystor R6 ogranicza prąd bazy tranzystora T2. Elementy T3 (BC547B), R7 (2,2k), R5 (1k) i złącze GP10 (GW-02) stanowią drugi identyczny, równolegle pracujący kanał sterowania. Pozwala on podłączyć kolejne 1-3 diod.

Złącze FD2 (FD16) umożliwia podłączenie modułu wykonawczego z 12 triakami, które z kolei zapewnią poprawne włączanie żarówek halogenowych. Gniazdo RS232 (GD-03) stanowiące wyprowadzenie UART'a procesora umożliwia skorzystanie z portu szeregowego, gdyby zaszła taka potrzeba. Projekt modelowy nie wykorzystuje tej opcji. Złącze Prog (goldpin) umożliwia zaprogramowanie procesora.

Schemat modułu wykonawczego dla "gwiazd" LED przedstawiony został poniżej:

Układ w istocie składa się z 8 źródeł prądowych zbudowanych w oparciu o tranzystory T1-T8 (BC547) i rezystory R1-R8 (1k). Rezystory R9-R16 (2,2k) ograniczają prąd baz tranzystorów. Połączenie z mikrokontrolerem w sterowniku odbywa się dzięki złączu FD1 (FD16). Działanie układów z tranzystorami T1-T8 jest bardzo proste: Stan wysoki na bazie tranzystora T1 (5V gdyż takim napięciem zasilany jest mikrokontroler) powoduje przepływ prądu w złączu baza emiter tranzystora. Na rezystorze R1 pojawi się napięcie w granicach 4,3V (spadek napięcia na złączu baza emiter wynosi około 0,7V), a więc prąd płynący przez rezystor będzie wynosił około 4,3mA. Taki sam prąd popłynie przez szeregowo połączone diody LED. Diody (max 4 w szeregu) zostaną dołączone do gniazd FD2-FD5 (FD16), jednak nie wszystkie gniazda muszą być wykorzystane. Jeśli w każdym z kanałów będzie pracowała mniejsza liczba diod to w pozostałych złączach należy zewrzeć parami piny 1 z 2, 3 z 4 itd., aby uzyskać obwód zamknięty dla płynącego prądu. Zastosowanie układu z tranzystorami T1-T8 pozwoliło na ominięcie problemu wahań napięcia zasilania. Prąd, a co za tym idzie jasność świecenia zależy tylko od rezystorów R1-R8. Należy jednak pamiętać, że napięcie zasilania modułu (VCC) musi być odpowiednio wysokie, przynajmniej o 5-6V większe niż suma napięć przewodzenia diod. Jeśli ten warunek nie będzie spełniony, obwód z tranzystorami T1-T8 nie będzie działał w pełni poprawnie, a prąd diod będzie mniejszy niż wynika z zastosowanego rezystora emiterowego. Dla zasilania 12-12,3V jak w projekcie modelowym można zastosować 2, maksymalnie 3 niebieskie diody LED, przy czym dla 3 diod niebieskich i zasilania 12V układ pracuje na granicy i prąd jest nieco mniejszy niż być powinien. Dla diod czerwonych i zielonych sprawa wygląda nieco lepiej ze względu na niższe napięcie przewodzenia. W efekcie w niektórych przypadkach będzie konieczne zasilanie diod wyższym napięciem, a co za tym idzie nie mogą one zostać dołączone do punktu VCC, który w typowych warunkach będzie na potencjale 12V względem masy. Fakt ten związany jest z taśmą LED zasilaną 12V, która wykorzystywana jest w projekcie. Determinuje ona wysokość zasilania innych fragmentów układu. Kondensatory C1-C2 (100uF) filtrują napięcie zasilania.

Układ wykonawczy z triakami został opisany tutaj jako osobny miniprojekt. Gdy nie wykorzystujemy możliwości sterowania lamp halogenowych, lub lamp LED na 230V, budowa tego modułu nie jest konieczna.

Budowa:

Sterownik z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. W projekcie zastosowane zostały elementy w obudowach do montażu przewlekanego, przez co niestety płytka jest duża ale za to montaż nie będzie sprawiał wiele problemów, nawet początkującym elektronikom. Montaż sterownika należy rozpocząć od wlutowania dwóch zworek. Pomocą w konstrukcji będzie rysunek montażowy dostępny tutaj. W dalszej kolejności dobrze jest wlutować elementy najmniejsze: rezystory, kwarc i jego kondensatory. W drugiej kolejności powinna zostać zamontowana podstawka pod mikrokontroler. Kolejność pozostałych elementów jest mało istotna, jednak złącza dobrze jest zostawić na sam koniec. Elementom D1 i U3 dobrze jest dostawić długie nóżki, gdyż mogą dzięki temu zostać łatwo zamocowane w obudowie. Stabilizator U2 powinien zostać wyposażony w niewielki radiator. Co prawda testy wykazały, że układ ten nie nagrzewa się w sposób grożący jego spaleniem, jednak pamiętając że całość będzie zamknięta w obudowie nad sufitem podwieszanym warto zadbać o chłodzenie stabilizatora.

Moduł wykonawczy dla gwiazd jest także prosty w montażu, na płytce nie ma ani jednej zworki a lutowanie należy rozpocząć od rezystorów. Pomocą w konstrukcji będzie rysunek montażowy dostępny tutaj W drugiej kolejności należy zająć się tranzystorami i kondensatorami filtrującymi. Na samym końcu natomiast należy zamontować złącza IDC. Nie trzeba montować wszystkich, zależy to od ilości diod. Nieużywane gniazda trzeba zastąpić zworkami (pin 1 z 2, 3 z 4 itd.), gdyż diody są podłączone w szeregach. Brak jednej uniemożliwi działanie całego szeregu. Warto tutaj wspomnieć o montażu samych diod, gdyż muszą one zostać odpowiednio podłączone. Złącze w module wykonawczym umożliwia podłączenie tasiemki 16 żyłowej, która powinna zostać podzielona na 8 części po dwa przewody. Piny 1-2 mają zostać podłączone do pierwszej diody, 3-4 do drugiej itd. Nieparzyste piny stanowią anody diod, a parzyste katody.

Taśmy między sterownikiem i modułami wykonawczymi muszą być zaciśnięte 1:1 co oznacza że piny 1,2,3... powinny trafić na piny o tych samych numerach w drugim złączu.

Układ modelowy zasilany jest z zasilacza impulsowego 12V 60W. Przeznaczonego do współpracy z diodami LED. Nie jest to jednak wymóg i można skorzystać z klasycznego zasilacza z transformatorem. Należy przy tym pamiętać o odpowiedniej wydajności prądowej, która przy długiej listwie LED będzie musiała być rzędu kilku A.

Stosując przetwornicę w roli zasilacza należy obowiązkowo pamiętać o podłączeniu jej uziemienia. Niedopełnienie tego obowiązku sprawi na na wyjściu przetwornicy pojawi się składowa przemienna o wartości rzędu 110-120V, co w skrajnych przypadka może być niebezpieczne. Składowa przemienna na wyjściu niskonapięciowym powoduje także inny pasożytniczy efekt. Gdy diody są wyłączone (sterownik odcina wszystkie tranzystory sterujące) i są podłączone tylko od strony 12V, składowa przemienna jest prostowana na diodach LED, powoduje przepływ niewielkiego prądu, a co za tym idzie sprawia, że wszystkie diody świecą (bardzo słabo, efekt widoczny jest w całkowitej ciemności). Jeśli podłączenie uziemienia nie wyeliminuje tego efektu, należy zmierzyć napięcie przemienne na masie zasilania niskonapięciowego względem zera w sieci energetycznej. Może się okazać że mimo wszystko wynosi ono kilkadziesiąt woltów. Wystarczy wtedy zewrzeć masę układu do zera w sieci (lub lepiej uziemienia, jeśli jest dostępne) za pomocą rezystora rzędu 47-100k. W moim przypadku załatwiło to sprawę.

Rysunek poniżej będzie pomocny przy montażu całości:

Wykaz Elementów:

Sterownik:


2x FD16
6x GW-02 Złącze goldpin z prowadzeniem
1x GW-03 Złącze goldpin z prowadzeniem
4x Złącze Śrubowe ARK2(podwójne)
1x Złącze Szufladkowe 1x8
1x uSwitch
2x 1k
2x 2,2k
2x 10k
1x 220R
1x 470R
2x 22pF
3x 100nF
1x 47uF Elektrolit
1x 100uF Elektrolit
1x 220uF Elektrolit
1x Rezonator Kwarcowy 16MHz
1x Dioda LED
1x Odbiornik Podczerwieni TSOP1736
2x BC547B
1x IRF1405
1x Stabilizator 7805
1x Mikrokontroler ATMEGA162 + Podstawka

Układ wykonawczy dla diod LED:


5x FD16
8x 1k
8x 2,2k
2x 100uF Elektrolit
8x BC547B

Inne:


40x Dioda LED (niebieska do oprawek)
6x Dioda LED (biała do oprawek)
1x Listwa LED

Programowanie:


Program do sterownika został napisany w programie BASCOM-AVR, poniżej przedstawione są kluczowe fragmenty programu wraz z opisem:

Prztimer1:
 Timer1 = 65286
 
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Stars(1) Then Set Stars_p.0 Else Reset Stars_p.0
 If Licznik < Stars(2) Then Set Stars_p.1 Else Reset Stars_p.1
 If Licznik < Stars(3) Then Set Stars_p.2 Else Reset Stars_p.2
 If Licznik < Stars(4) Then Set Stars_p.3 Else Reset Stars_p.3
 If Licznik < Stars(5) Then Set Stars_p.4 Else Reset Stars_p.4
 If Licznik < Stars(6) Then Set Stars_p.5 Else Reset Stars_p.5
 If Licznik < Stars(7) Then Set Stars_p.6 Else Reset Stars_p.6
 If Licznik < Stars(8) Then Set Stars_p.7 Else Reset Stars_p.7
 If Licznik < Aura Then Set Aura_port Else Reset Aura_port
 If Licznik < Special Then Set Spec_port Else Reset Spec_port
 
 S_port = Stars_p
 
 Incr Dziel
 If Dziel = 400 Then
   Dziel = 0
   Set Flag
   Incr Dziel2
   If Dziel2 = 2 Then
     Dziel2 = 0
     Set Flag2
     Incr Dziel3
     If Dziel3 = 5 Then
       Dziel3 = 0
       Set Flag3
     End If
   End If
 End If
 
Return

Listing powyżej przedstawia obsługę przerwania Timera1. Został on skonfigurowany do pracy z sprzętowym podzielnikiem przez 8. Ponieważ na początku obsługi przerwania do rejestru timera ładowana jest wartość 65286, przerwanie wykonywane jest z częstotliwością 8KHz. Z tą tez częstotliwością zwiększana jest wartość zmiennej Licznik, cyklicznie od 0 do 99. Dalej wartość licznika porównywana jest na bieżąco z wartością zmiennych określających wypełnienie przebiegu na wyjściach. Jeśli dla przykładu zmienna Stars(1) będzie miała wartość 50 to dla wartości licznika 0-49 odpowiadający jej (zmiennej Stars(1)) port będzie w stanie wysokim, a w pozostałych przypadkach w stanie niskim. Zatem wypełnienie przebiegu na tym porcie osiągnie wartość 50%. Podobnie w kolejnych liniach zrealizowana jest modulacja szerokości impulsu dla wszystkich kanałów (8 kanałów dla gwiazd (5x8 niebieskich LED), jeden dla taśm LED i jeden dla specjalnego kanału z 6 białymi diodami LED). W dalszej kolejności częstotliwość występowania przerwania jest dzielona przez 400 a potem jeszcze przez 2 i 5 oraz ustawiane są odpowiednie zmienne flagi, taktujące pracę programu w pętli głównej.

Przzew0:
  Disable Int0
  Enable Interrupts
  Getrc5(adres , Komenda)
  Komenda = Komenda And &B01111111
  Odebrano = 1
Return

Na listingu powyżej przedstawiono obsługę przerwania zewnętrznego jakie jest wywoływane stanem niskim na wyjściu odbiornika podczerwieni. Procedura ta zajmuje się jedynie odbieraniem transmisji Rc5, zerowaniem najstarszego bitu komendy i ustawianiem flagi Odebrano. W pętli głównej po zarejestrowaniu kliknięcia klawisza na pilocie zostaną wykonane odpowiednie akcje.

 If Odebrano = 1 Then
    If Adres = 0 Then
      'halogeny
      If Komenda = 16 Then Toggle H_on.0
      If Komenda = 17 Then Toggle H_on.1
      'specjalny kanał
      If Komenda = 6 Then Special_set = 0
      If Komenda = 3 Then Special_set = 50
      'aura
      If Komenda = 4 Then If Aura_set > 5 Then Decr Aura_set
      If Komenda = 1 Then
        If Aura_set < 50 Then Incr Aura_set
        If Aura_set < 5 Then Aura_set = 5
      End If
      If Komenda = 7 Then Aura_set = 0
      If Komenda = 13 Then Aura_set = 50
      'gwiazdy
      If Komenda = 2 Then Star_state = 1
      If Komenda = 5 Then Star_state = 2
      If Komenda = 8 Then Star_state = 3
      If Komenda = 0 Then Star_state = 4
      If Komenda = 15 Then Star_state = 0
      'inne
      If Komenda = 12 Then
        Aura_set = 0
        Special_set = 0
        Star_state = 0
        H_on = 0
      End If
 
      Set Ir_led
      Waitms 20
      Reset Ir_led
    End If
    Odebrano = 0
    Enable Int0
  End If

Fragment programu na powyższym listingu jest fragmentem pętli głównej, a jego zadaniem jest dbanie o poprawną interpretację komend odbieranych z pilota. W projekcie modelowym komendy 16 i 17 włączają lampy halogenowe, które podzielone są na dwa kanały po 5-6 żarówek. Zmienne H_on.0 i H_on.1 odpowiadają za rozpoczęcie sekwencji gaszenia lub zapalania żarówek. Jeśli chodzi o kanał specjalny z 6 diodami LED to komendy 3 i 6 umożliwiają odpowiednio jego włączenie bądź wyłączenie. Sterowanie taśmą LED odbywa się za pomocą komend 1 i 4 (zwiększanie i zmniejszanie jasności) oraz 7 i 13 (włączanie i wyłączanie). Komendy 2, 5, 8, 0 i 15 powodują przejście do odpowiedniego trybu pracy "gwiazd" LED. Po otrzymaniu komendy 12 wszystko zostaje wyłączone.

 If Flag = 1 Then
    Flag = 0
 
    Reset Watchdog
 
    'fade all diodes
    For I = 1 To 8
      If Stars_i(i) > Stars_set(i) Then Decr Stars_i(i)
      If Stars_i(i) < Stars_set(i) Then Incr Stars_i(i)
      X = Stars_i(i) * Stars_i(i)
      X = X / 25
      Stars(i) = X
    Next I
    .....
 
    'switches
    Sw = Sw_port And &B00011110
    Shift Sw , Right , 1
    If Sw <> Stan_sw And Last_sw = Sw Then
      Incr Licznik_sw
      If Licznik_sw = 4 Then
        If Sw.0 <> Stan_sw.0 Then                           'SW4
          If Star_state = 0 Then Star_state = 1 Else Star_state = 0
        End If
        If Sw.1 <> Stan_sw.1 Then                           'SW3
          If Aura_set = 0 Then Aura_set = 50 Else Aura_set = 0
        End If
        If Sw.2 <> Stan_sw.2 Then                           'SW2
          Toggle H_on.0
        End If
        If Sw.3 <> Stan_sw.3 Then                           'SW1
          Toggle H_on.1
        End If
        Stan_sw = Sw
        Set Ir_led
        Waitms 20
        Reset Ir_led
      End If
    Else
      Last_sw = Sw
      Licznik_sw = 0
    End If
  End If

Na listingu powyżej zaprezentowana została uproszczona obsługa zmiennej Flag. Procedura ta wykonywana jest z częstotliwością 20Hz. Pierwszym poleceniem jest reset Watchdoga, który został uprzednio skonfigurowany na 2 sekundy. Kolejnym zadaniem jest płynna zmiana jasności wszystkich diod. Występują tutaj 3 zmienne związane z jasnością danej diody. Stars_set(i) to tablica przechowująca żądaną wartość jasności 0-50 co 2% w skali liniowej. Stars_i(i) to aktualna jasność także w skali liniowej, natomiast Stars(i) to tablica przechowująca jasność ale podniesioną do kwadratu, która wprost odpowiada wypełnieniu PWM jakie trzeba podawać na diodę. Jeśli wartość żądana jest inna od aktualnej następuje podążanie wartości aktualnej za żądaną aż do ich zrównania. Następnie aktualna wartość jasności jest podnoszona do kwadratu i wpisywana do zmiennej określającej wypełnienie przebiegu trafiającego na diody. Podobny algorytm zmiany jasności dotyczy też sterowania taśmą LED i kanału specjalnego z 6 diodami LED. Został pominięty na tym listingu.

Dalsza część zadań jakie zostały przewidziane dla fragmentu programu z listingu powyżej to obsługa wyłączników podtynkowych. Ponieważ zwykłe wyłączniki podtynkowe są bistabilne, procedura musi wyglądać trochę inaczej niż dla klasycznego mikrostyku. Na samym początku odczytywany jest stan portu a odpowiednie operacje bitowe sprawiają, że stany przycisków znajdują się w czterech najmłodszych bitach zmiennej Sw. Następnie obecny stan przełączników porównywany jest z poprzednim stanem i akcja podejmowana jest tylko wtedy gdy stan któregokolwiek bitu uległ zmianie. Aby uniezależnić się od drgań styków nowy stan musi się utrzymywać przez kilka kolejnych wywołań procedury. Dopiero gdy wszystkie te warunki zostaną spełnione program sprawdza które bity się zmieniły i wykonuje jedną z akcji: włączenie lamp halogenowych (kanał 1 lub 2), włączenie taśmy LED lub włączenie "gwiazd" LED. Po wykonaniu akcji jako nowy stan spoczynkowy przełączników przypisywany jest aktualny ich stan.

  If Flag2 = 1 Then
    Flag2 = 0
 
   'halogeny
    If H_on.0 = 1 Then
      If H1_licz < 6 Then Incr H1_licz
    Else
      If H1_licz > 0 Then Decr H1_licz
    End If
 
    If H_on.1 = 1 Then
      If H2_licz < 6 Then Incr H2_licz
    Else
      If H2_licz > 0 Then Decr H2_licz
    End If
 
    Hb = Lookup(h1_licz , H1_data)
    Hb2 = H1_port And &B00001111
    H1_port = Hb Or Hb2
 
    Hb = Lookup(h1_licz , H1_datab)
    Hb2 = Lookup(h2_licz , H2_data)
    H2_port = Hb Or Hb2
  End If

Listing powyżej odpowiada za sterowanie sekwencyjnym włączaniem i wyłączaniem lamp halogenowych. Procedura ta wykonywana jest z częstotliwością 10Hz, dzięki zmiennej flagowej Flag2. W dwóch najmłodszych bitach zmiennej H_on przechowywane są stany dwóch kanałów po 5-6 lamp. Za sekwencyjne zaświecanie lamp w dwóch kanałach odpowiadają zmienne licznikowe H1_licz i H2_licz, przyjmujące wartości 0-6, przy czym wartość 0 odpowiada wszystkim zgaszonym lampom w danym kanale, 1 to jedna oświecona lampa i tak dalej aż do wartości 6 gdzie wszystkie lampy świecą. Jeśli dla przykładu H_on.0 jest w stanie wysokim, a zmienna licznikowa H1_licz jest mniejsza od 6, to jest ona zwiększana po każdym ustawieniu flagi Flag2. Jeśli natomiast H_on.0 jest w stanie niskim to zmienna licznikowa jest zmniejszana aż osiągnie 0. Taka sama sytuacja występuje w drugim kanale, działa on identycznie. Na samym końcu procedury zostają ustawione odpowiednie stany na portach mikrokontrolera za pomocą polecenia lookup i tablic wartości, które znajdują się na końcu programu.

  If Flag3 = 1 Then
    Flag3 = 0
 
    If Aura_set = 0 And Special_set = 0 And Star_state = 0 And H_on = 0 Then Stb_led = 1 Else Stb_led = 0
 
    If Star_state = 0 Then
      Incr Star_licz
      If Star_licz = 9 Then Star_licz = 1
      Stars_set(star_licz) = 0
    End If
 
    If Star_state = 1 Then
      Incr Star_licz
      If Star_licz = 9 Then Star_licz = 1
      If Stars_set(star_licz) <> Mx Then Stars_set(star_licz) = Mx Else Stars_set(star_licz) = Mn
    End If
 
    If Star_state = 2 Then
      Incr Star_licz
      If Star_licz = 9 Then Star_licz = 1
      Hb = Mx - Mn
      Hb = Rnd(hb)
      Hb = Hb + Mn
      Stars_set(star_licz) = Hb
    End If
 
    If Star_state = 3 Then
      Hb = Rnd(250)
      Star_licz = Hb Mod 8
      Hb = Hb / 8
      Hb = Hb Mod 3
      If Hb = 0 Then Stars_set(star_licz + 1) = 0
      If Hb = 1 Then Stars_set(star_licz + 1) = 25
      If Hb = 2 Then Stars_set(star_licz + 1) = 50
    End If
 
    If Star_state = 4 Then
      Incr Star_licz
      If Star_licz = 9 Then Star_licz = 1
      Stars_set(star_licz) = 50
    End If
  End If

Na listingu powyżej przedstawiona została obsługa flagi Flag3. Wykonywana jest ona z częstotliwością 2Hz i zajmuje się modyfikacją jasności wszystkich diod LED (animacjami). Na samym początku ustawiany jest stan na diodzie w wyłączniku sygnalizującej brak włączenia jakiegokolwiek światła. Dzięki temu łatwiej jest zlokalizować wyłącznik w całkowitej ciemności. Dalsza część procedury zajmuje się sterowaniem "gwiazd" LED w zależności od zmiennej Star_state, która określa tryb ich pracy. Tryb 0 powoduje sekwencyjne wygaszenie wszystkich diod, do tablicy Stars_set(n) przypisywane są sekwencyjnie same 0. Tryb 4 jest podobny z tym że wszystkie diody są zapalane. W pozostałych trybach pracy generowane są proste animacje zmiany jasności diod, we wszystkich 8 kanałach. Dla stars_state = 1 wszystkie kanały po kolei zmieniają jasność z wartości min na max i odwrotnie. Wartości minimalnej i maksymalnej jasności zapisane są w zmiennych Mn i Mx na początku programu. W trybie dla stars_state = 2 dla każdego kanału po kolei losowana jest wartość jasności z przedziału od Mn do Mx, natomiast w trybie 3 losowana jest dioda i czy jej jasność ma być ustawiona na 0 , 50% czy 100%. Ten fragment programu stoi otworem, można tutaj wymyślić całkiem skomplikowane przejścia jasności a nawet po zastosowaniu różnobarwnych diod, można wprowadzić barwne animacje.

Ustawienia fusebitów mikrokontrolera:

Zdjęcia Projektu:

ZałącznikWielkość
Schemat Sterownika120.18 KB
Schemat Modułu LED34.96 KB
Płytka Sterownika32.18 KB
Płytka Modułu LED16.47 KB
Płytka Sterownika (odbicie lustrzane)32.19 KB
Płytka Modułu LED (odbicie lustrzane)16.63 KB
Płytka Sterownika (wiele na stronie)124.2 KB
Płytka Modułu LED (wiele na stronie)142.14 KB
Montowanie Sterownika24.13 KB
Montowanie Modułu LED19.46 KB
Warstwa Opisu Sterownika32.67 KB
Warstwa Opisu Modułu LED50.83 KB
Soldermaska Sterownika34.26 KB
Soldermaska Modułu LED73.46 KB
Kod Źródłowy8.8 KB
Program po kompilacji (bin)3.87 KB
Program po kompilacji (hex)10.9 KB



Portret użytkownika BADYL

dzięki

Dzięki za informację teraz śmiga :)

Portret użytkownika Wróbel

Problem

Mam problem ze sterownikiem po poskładaniu, zaprogramowaniu sterownik nie reaguje ani na pilot ani na przełączniki nie wiem dlaczego. Proszę o pomoc . fuse bity są raczej dobrze ustawione.

Portret użytkownika mirley

Re: Sufit

Przełączniki mają być bistabilne, zwierają na stałe pin po przełączeniu. W fusebitach ważne jest aby wyłączyć JTAG i ustawić się na kwarc

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Wróbel

już nie wiem

teraz już nie wiem jak to ma być ustawione mam JTAG 1 SUT 11 i CKSEL niewiem które ustawić bo jest możliwość tylko do 12MHz zewnętrzny i nie wiem co wybrać, niema możliwości włączenia CKSEL=1111 bo jest tylko CKSEL=111X ale na tym nie działa Proszę o pomoc z ustawieniem z góry dzięki

Portret użytkownika mirley

Re: Fusy

ustaw CKSEL = 1111

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Wróbel

1111:CKSEL=111X External

1111:CKSEL=111X External Crystal/Resonator High Frequency ale moge ustawić tylko coś takiego i na tym nie działa a CKSEL=1111 niema

Portret użytkownika mirley

RE: Kwarc

Musi działać. Pewnie nie ma za bardzo znaczenia czy na najmłodszym bicie jest 0 czy 1 więc jest 111X. Tak czy inaczej dziwny program do fusów że nie pozwala dokładnie wybrać tego co chcesz. Napewno kwarc jest podłączony, ma dobre kondensatory, nie ma zwarcia na nóżkach XTAL?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Wróbel

nie niema zwarcia a

nie niema zwarcia a kondensatory są dobre sprubuje jeszcze raz wgrać program może to pomoże

Portret użytkownika Wróbel

to raczej nie jest wina

to raczej nie jest wina fusebitów bo są dobrze ustawione. wymienię jeszcze kwarc i zobaczę czy będzie działać jak nie to ja już nie wiem :(

Portret użytkownika Wróbel

Niestety

Wymieniłem kwarc i dalej jest tak jak było już nie wiem co jeszcze mogę zrobić żeby działało niema żadnych zwarć wszystko jest dobrze:) tylko dlaczego to NIE DZIAŁA jak ktoś ma jeszcze jakiś pomysł dlaczego nie działa to byłbym wdzięczny za odpowiedź :D

Portret użytkownika gosc12

Nie wyłącza

Wykorzystałem układ do sterowania diodami, ale po złożeniu nie wyłącza całkowicie diodowego paska tylko przygasa, sterowany jest atmega8 co może być przyczyną. Atmega ma stan zero to na wyjściu tranzystora jest napięcie około 5V.

Portret użytkownika mirley

Re: Sterownik sufitu

Co to znaczy że nie działa, jak klikasz pilotem to miga diodka, jaki stan pojawia się na nóżkach mikrokontrolera odpowiedzialnych na konkretne triaki, lub pasek led jeśli klikasz na pilocie przycisk lub przełączasz przełącznik. Reaguje na cokolwiek?

--------------

Napewno nie pomyliłeś wyprowadzeń tranzystora? Złożyłeś to dokłądnie tak samo jak ja? Odłacz tranzystor od pinu i spróbuj zewrzeć bramkę tranzystora do źródła(czyli do masy), powinien się zatkać.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Kamil202

RGB

Witam Pana
Mam pytanie a jednocześnie prośbę. Bo widze że temat RGB był już poruszony a modyfikacja programu tak jak i w kolegi przypadku jest poza moimi umiejętnosciami ze wzgledu na status amatora :) chciałbym zapytac pod jakie piny i co w programie zrobic by działało z listwą rgb?

Portret użytkownika mirley

Re: Listwa RGB

jesli ma działać tylko z listwą RGB to zajrzyj do projektu minilampki RGB, dołącz 3 tranzystory mosfet N i listwę LED zasilaną z 12V zamiast 3 diod LED. Wszystko jest opisane w artykule minilampki

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Kamil202

RGB

Witam ponownie. Nie chce działać układzik z pilotem uniwersalnym link właśnie takim... odbiornik mam tsop31236
A co do tego programu z minilapki to jak to wgrac(na jakie piny i gdzie to zmienic) by działał układ z RGB

Portret użytkownika Kamil202

Chciałbym także zapytac czy

Chciałbym także zapytac czy da się podłaczyc jescze 4 kanały do modułu z 12 triakami a jesli nie to mógłbym usunac panel z diodami led dla zwolnienia pinów procka. Zalezy mi na tym ponieważ mam 16 żarówek led do obsłużenia i taśmę RGB Dziękuje z góry za pomoc i sorki za ten podwójny temat powyżej.

Portret użytkownika mirley

Re Sufit

Da się zrobić 16 halogenów kosztem wywalenia gwiazd..... w timerze trzeba wywalić linijkę:

 S_port = Stars_p

Tabelę modyfikujemy:
      '   0             1            2            3            4            5            6           7             8
H1_data:
 Data  &B11111111 , &B01111111 , &B00111111 , &B00011111 , &B00001111 , &B00000111 , &B00000011 , &B00000001 , &B00000000 

będziemy korzystać tylko z jednej tabeli, cały port C to jeden kanał a port A to drugi kanał. Teraz w sterowaniu
'halogeny
    If H_on.0 = 1 Then
      If H1_licz < 8 Then Incr H1_licz
    Else
      If H1_licz > 0 Then Decr H1_licz
    End If
 
    If H_on.1 = 1 Then
      If H2_licz < 8 Then Incr H2_licz
    Else
      If H2_licz > 0 Then Decr H2_licz
    End If
 
    Hb = Lookup(h1_licz , H1_data)
    H2_port = Hb
 
    Hb = Lookup(h2_licz , H1_data)
    S_port = Hb

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Kamil202

W jakim programie rysujesz

W jakim programie rysujesz svhematy??

Portret użytkownika Niko

Zasada sterowania

Witam
Zamierzam zrobić sobie podobny sufit, tylko mam trochę nie jasności.
Z tego co wyczytałem halogeny są zasilane 230 V tak ?

Do sterowania używasz pilota i masz 3 opcję tak ? czy może da się to podłączyć dodatkowo przełączniki ?
- sama taśma
-same halogeny
-same diody
-halogeny z tasmą
-halogeny, taśma, diody

Będę bardzo wdzięczny za informację.

Portret użytkownika mirley

Re: Sufit

1)Halogeny są na 230V sterowane triakami.
2)Na pilocie można włączy i wyłączyć każdą z opcji niezależnie oraz sterować parametrami.
3)Przełączniki podtynkowe (2 podwójne) pozwalają załączyć niezależnie wszystko i wyłączyć.

CHcesz dorobić przycisków na pilocie czy dodatkowych wyłączników czy zwykłe przyciski uswitch do sterowania w jakiś inny sposób?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Niko

Re:Re:Sufit

Dzięki wielkie za odpowiedz.

Twoja odpowiedz całkowicie mnie usatysfakcjonowała, chodziło mi własnie o 2 podwójne przełączniki :)

Jeszcze raz dzięki
Pzdr

Portret użytkownika maniak LED

Oświetlenie schodów

Świetny projekt! Masz w planach zrobić sterowanie do oświetlenia schodów ledami? Taki sterownik, którym można zmieniać opcje świecenia, że np. świeci się co drugi schodek albo z czujnikami na początku i końcu schodów i przy ruchu schody same się podświetlą (oczywiście w kolejności, a nie wszystkie naraz), a następnie po zaprogramowanym czasie zaczną w kolejności gasnąć.

Portret użytkownika Przemysław

pytanie

a jesli np chciałbym wiecej polozyc tej tasmy led rgb jak 10 metrów to w tedy można ale w tedy trzeba większy zasilacz kupic tak

Portret użytkownika Niko

Tranzystor ?

Witam

Czy zamiast tranzystora IRF 1405, można użyć IRFP064N ? Czy może jakiś inny z lispol'u ?

Nie za bardzo potrafię znaleźć Złącze Szufladkowe 1x8. Po jaką inną nazwą tego szukać ?

Pozdrawiam

Portret użytkownika mirley

Re: Sterownik sufitu

Kiedyś myślałem o sterowniku schodowym ale nie mam kiedy go wykonać. Na razie się za to nie zabieram bo nie mam czasu a za dużo na głowie - pracuję nad nową wersją strony

-----

Zasilacz zmusi być tak dobrany aby starczyło prądu dla taśmy led i dla układu.... układ pobiera mało więc jak zasilacz będzie 10-20% mocniejszy niz potrzeba dla ledów to napewno starczy.

----

Tranzystor może być dowolny byle by był to nmos i miał możliwie małą rezystancję w stanie otwarcia, inaczej może się grzać

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika GrzesiekS

Pytanie o IRF1405

Witam, jestem pełen podziwu dla tego projektu i częściowo chciałbym go wykorzystać u siebie.
Problem polega na tym, że nie mogę dostać nigdzie tranzystora IRF 1405. Czy model IRF 1404 również będzie działał?
Ewentualnie jeszcze jakieś zamienniki?

Z góry dziękuję i pozdrawiam!

Portret użytkownika mirley

Re: Sufit

Tak IRF1404 będzie działał. Może tu być dowolny mosfet ale dałem takiego żeby się nie nagrzewał wogóle

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Kamil0000

mruganie światła

Witam mam Pytanko czemu jak właczam światło na korytarzu to mrugnie na "wyświetlaczu" jak to Pan nazwał zasilanie jest z atx, wykonanie identyczne jak w projekcie.

Portret użytkownika mirley

Re: Sufit

Chodzi o to że jak włączasz światło w innym pomieszczeniu to diody na suficie "mrugną"? Czy w korytarzu masz trafo z halogenami? bo t może być przyczyna

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika eManiakBB

sterownik sufitu a rs485

Witam

Chciał bym wykorzystać ten projekt w budowie "inteligentnego mieszkania" lecz brakuje mi jednej rzeczy a mianowicie sterowania po lini RS485 .Posiadam sterownik SterBox i właśnie z nim chciał bym zintegrować Twój projekt .... SterBox komunikuje się magistralą RS485 modbus . elektronike dopiero poznaje i stąd me pytanie .
Bardzo kłopotliwe dorobienie interfejsu RS485? i sterowanie sterownikiem PLC?

pozdrawiam

Portret użytkownika mirley

Re: Sterownik sufitu

Jest możliwe dodanie takiej funkcji, nawet na płytce jest specjalny goldpin na który wyprowadzony jest UART procesora.... wystarczy dołożyć MAX485 i napisać odpowiednie odbieranie danych.... nie mogę jednak pomóc w tym temacie bo pracuje nad odświeżeniem niektórych moich sterowników, od teraz każdy mój nowy sterownik będzie miał magistralę RS485 i będzie mógł się komunikowac z centralnym sterownikiem (komputerem). Umożliwi to sterowanie wszystkim z jednego miejsca a także rozsyłanie danych np ze sterownika pieca, termometru zewnętrznego itp do jednego panelu informacyjnego w domu itp.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika eManiakBB

sterownik sufitu a rs485

Dzieki za odpowiedz , teraz mam trochę zajęć malarsko-gipsiarskich już nie wspominając o składaniu rozdzielki el. a raczej rozdzielek :)... ale jakoś ugryzę ten temat...
Z tym rs485 masz super pomysł bardzo przydatny dodatek ... A może by tak jakiś zasilacz power led 700mA... z rs485 i PWM :P

pozdrawiam

Portret użytkownika vir84

Problem z układem

Witam, złożyłem układ ale mam problem z działaniem diod z wejścia ARK6 port "SL", włącznik nie reaguje. Przy innych portach widać reakcję poprzez zaświecenie się diody D1. Czy problemem mogą być tranzystory T2 i T3? Sprawdzałem napięcie na GP9 i GP10 jest zerowe :(

Czy mógłbyś podać model pilota którym można obsłużyć układ?

Portret użytkownika mirley

Re: Sufit

Czy wszystkie przełączniki podłączone sa poprawnie do złacza ARK6 (schemat jest w rozdziale budowa). Trzeba podłączyć 4 wyłączniki (nie przyciski) i jedną diodę LED. Po włączeniu zasilania dioda powinna świecić, a wszystkie inne wyjścia powinny byc wyłączone. Przełączenie dowolnego z wyłączników powinno zgasić diodę.

Dioda D1 sygnalizuje odebranie kodu z pilota, w tym momencie nie ma znaczenia - pilot to dowolny pracujący w standardzie RC5 - co do klawiszy to trzeba zobaczyć kody w kodzie źródłowym bo nie pamiętam

Sprawdzaj stany logiczne na porcie A i porcie C oraz na pinie PB.6 (MISO) bo tam jest sterowanie paskiem LED

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika vir84

Tak..

Tak,wszystko podłączone tak jak na schemacie. Taśma LED świeci bez problemu mnie chodzi o diody SPECIAL LED, to one mi nie świecą. Port MISO odpowiedzialny jest właśnie za taśmę LED.

Portret użytkownika mirley

Re: Sufit

Special led świecą tylko przy sterowaniu pilotem, trzeba zobaczyć w kodzie, kiedy sie włączają

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika vir84

Aha, ok, w takim razie muszę

Aha, ok, w takim razie muszę skombinować jakiś pilot do kodowania :) bo na tych co mam w domu nie działa :(

Portret użytkownika mirley

Re: Pilot

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.