PWM - Pulse-width modulation - modulacja szerokości impulsu. Jest to jedna z metod regulacji sygnału prądowego lub napięciowego, polegająca na zmianie szerokości impulsów sygnału o stałej amplitudzie generowanego przez układ sterujący.
Metodę sterowanie sygnałem PWM bardzo często stosuje się do regulacji mocy grzejników, jasności oświetlenia czy regulacji prędkości obrotowej silników prądu stałego. Tą metodę możemy zastosować wszędzie tam gdzie kształt przebiegu nie ma większego znaczenia np. gdy zwykłą żarówkę z włóknem żarowym zasilimy przebiegiem prostokątnym o zmiennym wypełnieniu nie zaszkodzi to jej a jasność świecenia będzie wprost proporcjonalna od stosunku czasu trwania impulsu do czasu wyłączenia.
Przy częstotliwości sygnału w okolicach 1.000 Hz (bo często stosuje się właśnie taką częstotliwość) żarówka nie zdąży przygasnąć w chwilach, gdy prąd nie płynie i żadne migotanie nie będzie widoczne. Podobnie sprawa się ma z regulacją mocy grzejników czy regulacji prędkości obrotowej silników. Rzeczywista moc pobierana przez tego typu odbiorniki jest wartością średnią sygnału i możemy powiedzieć, że jeśli ustawimy wypełnienie na 10 % to odbiornik będzie zasilany mocą ok 10 % swojej nominalnej wartości.
Sygnału PWM na pewno nie będziemy mogli zastosować do regulacji mocy urządzeń, które zasilane muszą być albo prądem stałym bez żadnych pulsacji albo sinusoidalnym przebiegiem jak np. silniki prądu przemiennego czy energooszczędne żarówki jarzeniowe.
O właściwościach i zastosowaniach sygnału PWM jeszcze w dalszej części materiału powiem a teraz zajmę się sposobem generowania takiego sygnału z zastosowaniem mikrokontrolera Attiny2313. Zdjęcie powyżej przedstawia środowisko testowe składające się z zasilacza, płytki uruchomieniowej z mikrokontrolerem, płytki prototypowej ze zmontowanym układem wykonawczym oraz oscyloskopu na którym będziemy obserwować przebieg.
Procesor Attiny2313 jest wyposażony w dwa liczniki/timery pracujące niezależnie od programu. Te dwa sprzętowe liczniki zwiększające swój stan bez pomocy procesora i programu. Do generowania sygnału PWM zastosujemy 16-bitowy licznik/timer TC1, który w dodatku ma komparator cyfrowy, za pomocą którego na bieżąco możemy porównywać stan licznika z liczbą wpisaną do rejestru porównania. Każde zrównanie się stanu licznika TC1 z liczbą wpisaną do rejestru porównania OCR1 (w bascomie oznaczone jako: Compare1a lub Pwm1a) może być źródłem przerwania programowego jak i może powodować reakcję dodatkowego wyjścia procesora OC1, którym w naszym procesorze jest nóżka Nr. 15 (Pb.3) Ponadto w momencie zrównania stanu licznika ze stanem rejestru porównania, licznik może zostać skasowany i liczyć od nowa.
Nie zagłębiając się zanadto w zasadę pracy licznika TC1 i komparatora porównującego możemy go po prostu ustawić w tryb PWM, bo twórcy mikrokontrolera stworzyli taką właśnie możliwość co znacznie ułatwi nam prace i zmniejszy stopień komplikacji programu do minimum. W trybie PWM licznik zachowuje się trochę inaczej niż w normalnych trybach liczenia czy odmierzania czasu. Przede wszystkim na przemian liczy w górę i w dół, co przypomina "schodkowy" przebieg trójkątny. Ponadto licznik w tym trybie nie jest już 16-bitowy, możemy ustawić go jako: 8- 9- lub 10-bitowy, czyli np. dla ustawienia 8-bitowego będzie zliczał od 0 do 255 i z powrotem. Z tego wniosek, że okres sygnału na wyjściu będzie stały - w zależności od ustawienia będziemy mieć stałą częstotliwość, na którą współczynnik wypełnienia nie będzie miał wpływu.
Teraz, gdy nasz licznik liczy sobie w górę i w dół od 0 do 255 i z powrotem, wpiszemy do rejestru porównania dowolną liczbę z zakresu (oczywiście cały czas mowa o trybie 8-bitowym) 0-255 to na wyjściu OC1 (nóżka nr. 15) otrzymamy przebieg o stałej częstotliwości ale wypełnieniu całkowicie zależnym od liczby wpisanej do rejestru porównania OCR1 (Compare1a lub Pwm1a).
Pora zabrać się do testów. Na poprzedniej stronie umieściłem schemat układu z mikrokontrolerem, do wyjścia OC1 możemy bezpośrednio podłączyć małą diodę LED i obserwować intensywność jej świecenia lub zastosować tranzystorowy układ wzmacniający by podłączyć np. żarówkę zasilaną napięciem 12 V (można oczywiście zastosować duży tranzystor i sterować piecykiem).
Napisałem program, który za pomocą przycisków S1 i S2 umożliwi nam płynną zmianę stanu licznika porównania od 0 do 255 a tym samym płynną zmianę współczynnika wypełnienia od 0 do 100 %. Program możecie pobrać poniżej:
POBIERZ PROGRAM: Sterownik_pwm.bas
Ponadto program wyświetla aktualny stan rejestru porównania na wyświetlaczu LCD, można oczywiście kazać mu też obliczać wypełnienie.
Na początek w rejestrze ustawiłem małą liczbę 12, na oscyloskopie widzimy, że nasza żaróweczka zasilana jest dosłownie szpilkami ale przy tak dużej częstotliwości czasy trwania tych szpilek są malutkie i żarówka słabo się żarzy. Pobierana moc średnia jest bardzo mała.
Liczba jest już większa, na oscyloskopie widzimy, że przebieg ma wypełnienie równe 50 %, żarówka świeci już całkiem jasno.
Teraz już liczba w rejestrze porównania jest bliska maksimum dla trybu 8-bitowego. Na oscyloskopie widzimy, że napięcie zasilające jest praktycznie stałe, przerywane na bardzo krótkie odcinki czasu, które jednak wystarczą by obniżyć moc średnią o kilka %. Zapraszam do obejrzenia filmu przedstawiającego zmianę wypełnienia sygnału:
Małe zbliżenie płytki prototypowej.
A tutaj powiększony oscylogram ilustrujący przebieg napięcia na drenie tranzystora.
Przeprowadzony eksperyment miał na celu jedynie pokazać zasadę sterowania mocą urządzeń z zastosowaniem sygnału PWM, już niedługo opublikuję kompletny projekt regulatora mocy do laboratoryjnych płaszczów grzejnych. Jako element wykonawczy zastosuję w nim tyrystor oddzielony galwanicznie od mikrokontrolera transoptorem.
Jako ciekawostkę dodam, że sygnał PWM może być także modulowany w czasie, tzn. szerokość impulsu w każdej chwili jest inna i można w ten sposób wymusić w układzie przebieg prądu sinusoidalnego.
Sygnał PWM możemy także podać na filtr dolnoprzepustowy i na wyjściu otrzymać napięcie otrzymując najprawdziwszy przetwornik cyfrowo-analogowy o całkiem niezłych parametrach.