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.