tDimmer - regulator oświetlenia sieciowego

tDimmer - regulator oświetlenia sieciowego
Pobierz PDF Download icon

Mikrokontrolery znajdują się dzisiaj prawie wszędzie, od prostych urządzeń AGD po skomplikowane systemy stosowane w wojsku, medycynie czy nauce. Dzięki nim rośnie funkcjonalność urządzeń a jednocześnie maleje cena ich wytworzenia. Biorąc pod uwagę stały spadek cen mikrokontrolerów i towarzyszący mu wzrost ich możliwości celowe wydaje się stosowanie tych komponentów nawet w urządzeniach, które można byłoby zbudować bez ich udziału. Dzięki temu zyskujemy zwiększoną funkcjonalność, łatwość sterowania i obsługi, a nierzadko nawet zmniejszenie kosztów produkcji. Przykładem takiego zastosowania jest zaprezentowany w artykule regulator oświetlenia sieciowego.

Podstawowe parametry:
  • sterowany dwubiegunowym łącznikiem żaluzjowym lub zwykłymi mikroprzełącznikami,
  • 16-stopniowa regulacja jasności oświetlenia,
  • regulacja realizowana metodą sterowania fazowego,
  • przeznaczony do sterowania źródłami światła o niewielkiej mocy – do 200 W.

Dzięki zastosowaniu popularnego mikrokontrolera układ ściemniacza oświetlenia sieciowego odznacza się dodatkowymi funkcjami oraz ergonomią obsługi. Jest sterowany dwubiegunowym łącznikiem żaluzjowym lub zwykłymi mikroprzełącznikami. Zastosowano dobrze zwane sterowanie fazowe mocą odbiornika napięcia przemiennego. Trzeba uczciwie przyznać, że to zadanie, mimo że proste, jest niezmiernie ciekawe. Polega na ograniczeniu prądu płynącego przez odbiornik zasilany napięciem sieciowym 230 VAC (w naszym przypadku żarówkę) poprzez wycięcie części przebiegu napięcia zasilającego w każdym okresie takiego przebiegu (podobnie jak to ma miejsce przy sterowaniu PWM tyle, że tutaj regulujemy „wypełnienie” sinusoidy napięcia zasilającego). Regulacja odbywa się poprzez zmianę czasu, jaki upływa od przejścia przebiegu napięcia zasilającego przez zero do czasu załączenia elementu wykonawczego – triaka, im większe jest to opóźnienie, tym mniejsza średnia moc dostarczana do odbiornika.

Budowa i działanie

Schemat ideowy urządzenia został pokazany na rysunku 1. Jest to dość prosty system mikroprocesorowy, którego sercem a zarazem elementem odpowiedzialnym za realizację całej, założonej funkcjonalności jest niewielki mikrokontroler firmy Microchip (dawniej Atmel) typu ATtiny13. Taktowany jest wewnętrznym, wysokostabilnym generatorem RC o częstotliwości 1,2 MHz. Jest odpowiedzialny za obsługę łącznika żaluzjowego podłączonego do wyprowadzeń „+” (PB3) i „–” (PB4) mikrokontrolera oraz za sterowanie odbiornikiem prądu przemiennego przyłączonego do wyprowadzeń „LOAD” urządzenia.

Rysunek 1. Schemat ideowy urządzenia tDimmer

Do realizacji regulacji fazowej niezbędny jest dokładny układ synchronizujący nasz algorytm z przebiegiem napięcia sieciowego. W tym celu zastosowano popularny optoizolator PC814, który w swojej strukturze integruje dwie diody LED połączone przeciwsobnie i fototranzystor wyjściowy. Dzięki temu na wyjściu tego elementu (kolektor wbudowanego fototranzystora) otrzymujemy bardzo wąską szpilkę dla każdego przejścia napięcia sieciowego przez zero.

Narastające zbocze szpilki wyzwala przerwanie zewnętrzne INT0, którego procedura obsługi odpowiedzialna jest za programowy mechanizm obsługi wspomnianej regulacji fazowej. W procedurze tej uruchamiany jest układ czasowo-licznikowy Timer0 w trybie CTC, dla którego parametry pracy dobrano w taki sposób, aby w czasie jednej połówki przebiegu napięcia zasilającego (10 ms, pomniejszonej o połowę szerokości szpilki wyzwalającej) nastąpiło 16 przerwań TIM0_COMPA_vect – od porównania zawartości licznika TCNT0 z wartością rejestru porównania OCR0A. Przerwanie to realizuje regulację fazową w 16 krokach poprzez cykliczne załączanie triaka T1 w chwili zależnej od wartości zmiennej globalnej definiującej poziom jasności.

Regulacja taka niesie ze sobą niedogodność w postaci silnych zniekształceń prądu płynącego przez odbiornik, a co za tym idzie powstanie harmonicznych wyższego rzędu powodujących zakłócenia radioelektryczne (zwłaszcza w zakresie fal długich i średnich). Dlatego zastosowano prosty układ gasika (elementy C4, R5) na wyjściu zmniejszający poziom wspomnianych zakłóceń.

Rysunek 2. Rzeczywiste przebiegi napięć sterujących w układzie regulacji fazowej

Na rysunku 2 pokazano zrzut ekranu oscyloskopu ukazujący rzeczywiste przebiegi: napięcia na wyjściu układu detekcji przejścia napięcia sieciowego przez zero (przebieg górny) oraz napięcia sterującego regulacją fazową (końcówka PB0 mikrokontrolera, przebieg dolny). Rejestrację sporządzono dla ustawionej wartości jasności około 30%. Idea sterowania, mimo że dość prosta, sprawdza się w 100% w układzie rzeczywistym.

Program sterujący

Na listingu 1 została pokazana funkcja konfigurująca peryferia mikrokontrolera (Timer0 oraz przerwanie INT0) do realizacji sterowania fazowego. Dalej, na listingu 2 znajduje się kod dwóch prostych i bardzo krótkich funkcji obsługi przerwań systemowych (INT0 i od porównania Timera0) realizujących właściwy mechanizm sterowania fazowego.

Listing 1. Funkcja konfigurująca peryferia mikrokontrolera do realizacji sterowania fazowego

void initDimmer(void){
ZERO_DETECTOR_PORT |= (1<<ZERO_DETECTOR_NR); //Podciągnięcie portu INT0 detektora zera sieci do VCC
OPTOTRIAC_DDR |= (1<<OPTOTRIAC_NR); //Port sterujący optotriakiem jako wyjściowy -> 0 (wyłączony)

//Konfiguracja detektora przejścia przez zero -> przerwania INT0
MCUCR = (1<<ISC01)|(1<<ISC00); //Zbocze narastające wyzwala przerwanie INT0
GIMSK = (1<<INT0); //Zezwolenie na przerwanie INT0

//Konfiguracja Timera0 w trybie CTC: Preskaler = 8, OCR2 = 90. Wywołanie przerwania TIM0_COMPA_vect
//wystąpi co 606us co oznacza, iż 16 takich przerwań wykona się w 9.8ms, czyli w czasie jednej połówki
//sinusoidy pomniejszonym o 0.2ms (połowę czasu szpilki z detektora przejścia przez zero)
OCR0A = 90;
TCCR0A = (1<<WGM01); //Tryb CTC
TCCR0B = (1<<CS01); //Preskaler = 8
TIMSK0 = (1<<OCIE0A); //Zezwolenie na przerwanie TIM0_COMPA_vect
}
Listing 2. Funkcje obsługi przerwań systemowych realizujące właściwy mechanizm sterowania fazowego

ISR(INT0_vect){
dimSteps = 15;
//Podwójne buforowanie, synchronizacja do 50Hz
dimBuffer = dimValue;
//Obsługa timera debouncingu
//niezwiązane ze sterowaniem fazowym
if(debTimer) --debTimer;
TCNT0 = 0;
}

ISR(TIM0_COMPA_vect){
OPTOTRIAC_OFF;
if(dimBuffer && (dimSteps == dimBuffer)) OPTOTRIAC_ON;
--dimSteps;
}

Przejdźmy zatem do drugiego zagadnienia, którym zajmuje się nasz niewielki mikrokontroler, czyli obsługi łącznika żaluzjowego dwubiegunowego, który jest niczym innym jak dwoma mikroprzełącznikami chwilowymi. Są one oznaczone strzałkami w górę i w dół, przez co idealnie nadają się do regulacji jasności. Warto zaznaczyć, że obsługa tego komponentu została zaimplementowana, jako obsługa nieblokująca pętli głównej programu, gdyż korzysta z timera programowego w postaci zmiennej debTimer. Jest ona dekrementowana co 10 ms w funkcji obsługi przerwania INT0 (jako funkcjonalność dodatkowa tego przerwania). Ponadto, wspomniana implementacja obsługuje krótkie i długie naciśnięcie przycisku, jak i jego przytrzymanie, co jest wykorzystywane w programie obsługi aplikacji urządzenia. Kod funkcji obsługującej mikroprzełączniki „+” i „–” (czy też łącznik żaluzjowy) został pokazany na listingu 3.

Listing 3. Funkcja przeznaczona do obsługi mikroprzełączników (lub też łącznika żaluzjowego)

enum {IDLE, SHORT, LONG, REPEAT}; //Możliwe stany klawisza

//Definicje dla pinów klawiatury lokalnej
#define KEYBOARD_PORT PORTB
#define KEYBOARD_PIN PINB
#define PLUS_NR PB3
#define MINUS_NR PB4

uint8_t keyPressed(uint8_t PINNR, uint8_t *keyStatus){
enum {action_idle, action_debounce, action_check, action_repeat};

if(!(KEYBOARD_PIN & (1<<PINNR))){
switch(*keyStatus){
case action_idle:
*keyStatus = action_debounce;
debTimer = 5; //50ms na debouncing
break;

case action_debounce:
if(!debTimer){
*keyStatus = action_check;
//500ms na sprawdzenie czy to krótkie
//czy długie przycisnięcie
debTimer = 50;
}
break;

case action_check:
if(!debTimer){
*keyStatus = action_repeat;
//300ms na sprawdzenie czy klawisz nadal wciśnięty
//(start funkcji REPEAT)
debTimer = 30;
return LONG;
}
break;

case action_repeat:
if(!debTimer){
//100ms - czas powtarzania funkcji REPEAT
debTimer = 10;
return REPEAT;
}
break;
}
}else{
if(*keyStatus == action_check){
if(debTimer){
*keyStatus = action_idle;
//Zwracamy SHORT, gdyż zwolniliśmy klawisz
//zanim upłynął czas 500ms (LONG)
return SHORT;
}
}
else *keyStatus = action_idle;
}
return IDLE;
}

Tyle w kwestiach programowych. Nie powinno to specjalnie dziwić, gdyż urządzenie jest niezmiernie proste, w związku z tym i kod aplikacji nie jest nazbyt rozległy. Prostotę tą uzyskano w dużej mierze dzięki wykorzystaniu zasobów sprzętowych mikrokontrolera, przez co skompilowany kod aplikacji zajmuje tylko 438 bajtów (a i tak jest wydatnie zwiększony, tylko i wyłącznie dzięki implementacji obsługi długiego i krótkiego przyciśnięcia mikroprzełączników).

Montaż i uruchomienie

Schemat montażowy urządzenia został pokazany na rysunku 3. Zaprojektowano dwustronną, niewielką płytkę drukowaną z zastosowaniem wyłącznie elementów przewlekanych montowanych po stronie TOP. Co ważne, rozmiar płytki drukowanej został dobrany w taki sposób, by można było ją bez problemu umieścić w typowej puszcze podtynkowej o średnicy 60 mm.

Rysunek 3. Schemat płytki PCB wraz z rozmieszczeniem elementów

Montaż urządzenia rozpoczynamy od przylutowania wszystkich rezystorów, następnie lutujemy kondensatory, później wszystkie elementy półprzewodnikowe a na samym końcu złącza AC jak i LOAD oraz transformator TR1. Na koniec można pocynować ścieżki obwodu drukowanego, które będą przewodziły większe prądy i których nie pokryto z tego powodu tzw. solder maską. Mowa o ścieżkach pomiędzy wyprowadzeniami triaka T1 a gniazdem przyłączeniowym LOAD. Sposób podłączenia urządzenia tDimmer do sieci zasilającej (w tym podłączenie żarówki) pokazano na rysunku 4.

Rysunek 4. Sposób podłączenia urządzenia tDimmer do sieci zasilającej

Z uwagi na brak radiatora na elemencie wykonawczym T1, urządzenie nadaje się do sterowania źródłami światła o niewielkiej mocy, rzędu 100…200 W. Wyposażenie triaka w stosowny do mocy radiator znacznie poprawi możliwości układu w tym zakresie, gdyż dopuszczalny prąd zastosowanego elementu wynosi aż 12 A.

Ustawienia Fuse-bitów:
SUT1: 1
SUT0: 0
CKSEL1: 1
CKSEL0: 0
CKDIV8: 0

Obsługa

Kilka słów wyjaśnienia wymaga sposób obsługi urządzenia. Do regulacji jasności przyłączonej żarówki przewidziano łącznik żaluzjowy lub najzwyklejsze mikroprzełączniki chwilowe (TACT), które należy dołączyć do trzech pól lutowniczych oznaczonych „+”, „–” oraz „COM”. Każdorazowe, krótkie naciśnięcie odpowiedniego przełącznika zwiększa lub zmniejsza jasność regulowanego źródła światła w 16 krokach regulacji (0…15). Długie naciśnięcie przełącznika „+” powoduje natychmiastowe, maksymalne rozświetlenie podłączonego źródła światła (maksymalna jasność), zaś długie naciśnięcie przełącznika „–” powoduje natychmiastowe jego wygaszenie. Stanem domyślnym po włączeniu zasilania jest wygaszenie źródła światła, a więc ustawienie jasności na wartość 0.

UWAGA! Na płytce urządzenia zbudowano kompletny układ zasilający łącznie z transformatorem zasilanym napięciem sieciowym 230 V oraz zamontowano elementy będące na potencjale tego napięcia. Istnieje niebezpieczeństwo porażenia prądem elektrycznym, co może stanowić zagrożenie dla życia i zdrowia człowieka. W związku z tym montaż i uruchomienie układu muszą być wykonane pod nadzorem wykwalifikowanej osoby.

Robert Wołgajew, EP

Wykaz elementów:
Rezystory: (miniaturowe 1/4W, jeśli nie zaznaczono inaczej)
  • R1: 100 kΩ/2 W
  • R2: 22 kΩ
  • R3: 330 Ω
  • R4: 360 Ω
  • R5: 39 Ω
Kondensatory:
  • C1: 100 µF/16 V
  • C2: 100 µF/6,3 V
  • C3: 100 nF ceramiczny
  • C4: 10 nF/400 V polipropylenowy, raster 0,4”
Półprzewodniki:
  • U1: ATtiny13 (DIP-08)
  • U2: LP2950ACZ-3.3 (TO-92)
  • U3: PC814 (DIP-04)
  • U4: MOC3023 (DIP-06)
  • T1: BT138 (TO-220)
  • B1: mostek prostowniczy 1 A
Inne:
  • AC, LOAD: złącze śrubowe AK500/2
  • TR1: transformator BV2010128 (PCB, 6 V, 0,35 VA)
Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2021
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje listopad 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów