PWM

PWM, czyli modulacja szerokości impulsu, to sposób sterowania średnią wartością napięcia, prądu albo mocy przez szybkie przełączanie sygnału między stanem włączonym i wyłączonym. Amplituda impulsów zwykle się nie zmienia. Zmienia się wypełnienie, czyli część okresu, przez którą sygnał pozostaje w stanie wysokim.

PWM nie jest prawdziwym wyjściem analogowym. To przebieg cyfrowy ON/OFF, który może zostać uśredniony przez bezwładność obciążenia, filtr dolnoprzepustowy albo elektronikę sterującą. Dlatego PWM nadaje się do regulacji jasności LED, prędkości silników DC, mocy grzałek, sterowania przetwornicami i generowania prostych sygnałów podobnych do analogowych.

Co to jest PWM?

W sygnale PWM okres jest zwykle stały, a zmienia się czas stanu wysokiego. Jeżeli impuls trwa krótko, średnia wartość sygnału jest niska. Jeżeli impuls zajmuje większość okresu, średnia wartość jest wysoka.

PojęcieZnaczeniePrzykład
Tokres jednego cyklu PWM50 µs dla 20 kHz
f_{\mathrm{PWM}}częstotliwość przełączania500 Hz, 20 kHz, 100 kHz
t_{\mathrm{ON}}czas stanu wysokiego15 µs przy 30% z 50 µs
t_{\mathrm{OFF}}czas stanu niskiego35 µs przy 30% z 50 µs
Dwypełnienie sygnału0,3 albo 30%

W mikrokontrolerach PWM jest zwykle generowany przez timer i wyprowadzany na pin cyfrowy. Dlatego warto rozumieć, czym jest digital pin oraz jak działa zwykły pin w układzie elektronicznym.

Okres, częstotliwość i wypełnienie PWM

Okres PWM jest odwrotnością częstotliwości:

T=\frac{1}{f_{\mathrm{PWM}}}

Wypełnienie:

D=\frac{t_{\mathrm{ON}}}{T}

W procentach:

D[\%]=\frac{t_{\mathrm{ON}}}{T}\cdot100\%

Czas włączenia i wyłączenia:

t_{\mathrm{ON}}=D\cdot T t_{\mathrm{OFF}}=(1-D)\cdot T

Przykład: PWM 20 kHz ma okres:

T=\frac{1}{20000}=50\ \mu\mathrm{s}

Dla wypełnienia 30%:

t_{\mathrm{ON}}=0{,}3\cdot50\ \mu\mathrm{s}=15\ \mu\mathrm{s} t_{\mathrm{OFF}}=0{,}7\cdot50\ \mu\mathrm{s}=35\ \mu\mathrm{s}

Średnie napięcie, RMS i moc

Dla sygnału PWM przełączanego między 0 V i U średnie napięcie można oszacować tak:

U_{\mathrm{avg}}=D\cdot U

Przy sygnale 5 V i wypełnieniu 30%:

U_{\mathrm{avg}}=0{,}3\cdot5\ \mathrm{V}=1{,}5\ \mathrm{V}

To nie znaczy, że pin wystawia stałe 1,5 V. Pin nadal przełącza się między 0 V i 5 V. Średnią wartość widzi dopiero obciążenie, filtr albo układ pomiarowy.

Dla prostokątnego PWM 0–U wartość skuteczna wynosi:

U_{\mathrm{RMS}}=U\sqrt{D}

Dla obciążenia rezystancyjnego średnia moc:

P_{\mathrm{avg}}=\frac{U_{\mathrm{RMS}}^2}{R}=\frac{D\cdot U^2}{R}

To rozróżnienie ma znaczenie. Przy filtrze RC albo jasności LED często mówi się o wartości średniej. Przy grzaniu rezystora, stratach mocy i obciążeniach energetycznych trzeba patrzeć na RMS i moc.

Jeżeli trzeba szybko policzyć zależności między napięciem, prądem, rezystancją i mocą, najprościej użyć kalkulatora prawa Ohma. Przy obciążeniach prądowych kluczowe jest też natężenie prądu elektrycznego, bo to ono decyduje o obciążeniu tranzystora, przewodów i elementu wykonawczego.

PWM a filtr RC

PWM może zostać zamieniony na sygnał podobny do analogowego przez filtr dolnoprzepustowy. Najprostszy filtr RC tłumi szybkie przełączanie i zostawia wolnozmienną składową średnią.

Częstotliwość graniczna filtra RC:

f_c=\frac{1}{2\pi RC}

Żeby filtracja miała sens, częstotliwość PWM powinna być dużo większa od częstotliwości granicznej filtra:

f_{\mathrm{PWM}}\gg f_c

Jeżeli f_{\mathrm{PWM}} jest za niska albo filtr ma zbyt wysoką częstotliwość graniczną, na wyjściu zostaną duże tętnienia. PWM z filtrem RC nie jest automatycznie pełnoprawnym DAC. Jest prostym sposobem uzyskania napięcia uśrednionego, którego jakość zależy od częstotliwości PWM, filtra i obciążenia.

Ten fragment naturalnie łączy się z tematem filtrów elektrycznych, bo filtr decyduje, ile składowej przełączającej zostanie na wyjściu.

PWM w mikrokontrolerze: timer i rozdzielczość

W mikrokontrolerze PWM zwykle generuje timer. Jeden rejestr ustala okres, drugi ustala moment przełączenia. W rodzinach STM32 typowy model to ARR jako rejestr okresu i CCR jako rejestr porównania.

Uproszczony wzór na częstotliwość PWM:

f_{\mathrm{PWM}}=\frac{f_{\mathrm{timer}}}{(PSC+1)(ARR+1)}

Wypełnienie:

D=\frac{CCR}{ARR+1}

Rozdzielczość PWM to liczba możliwych poziomów wypełnienia. 8 bitów daje 256 poziomów, 10 bitów daje 1024 poziomy, a 16 bitów daje 65536 poziomów. Im wyższa częstotliwość PWM przy tym samym zegarze timera, tym mniej miejsca zostaje na dużą wartość ARR, więc często spada dostępna rozdzielczość.

RozdzielczośćLiczba poziomówTypowy kontekst
8 bitów256Arduino, proste sterowanie LED, podstawowe PWM.
10 bitów1024płynniejsza regulacja jasności albo mocy.
12-16 bitów4096-65536precyzyjne sterowanie, napędy, audio, zasilacze, sterowanie przemysłowe.

W Arduino użytkownik często widzi tylko funkcję analogWrite() i wartości 0-255. Pod spodem nadal pracuje timer, preskaler, rejestr okresu i sprzętowe wyjście PWM. Dla początkującego kontekstu warto zobaczyć podstawy Arduino oraz programowanie Arduino.

PWM przy LED, silniku i grzałce

To samo PWM zachowuje się inaczej w zależności od obciążenia. LED, silnik i grzałka uśredniają sygnał w inny sposób.

ObciążenieCo uśrednia PWM?Najważniejszy warunek
LEDoko i czas świecenia impulsówprąd impulsowy musi być ograniczony rezystorem albo driverem
Silnik DCindukcyjność uzwojeń i bezwładność mechanicznapotrzebna ścieżka dla prądu po wyłączeniu tranzystora
Grzałkabezwładność cieplnaliczy się moc średnia, obciążalność elementu i przewodów
Filtr RCkondensator i rezystorf_{\mathrm{PWM}} musi być znacznie wyższa niż pasmo sygnału

Przy LED przydatne są hasło dioda i kalkulator rezystora do LED, bo PWM zmienia czas świecenia, a nie podstawowe wymagania elektryczne elementu.

Przy silniku DC prąd nie znika natychmiast po wyłączeniu tranzystora, bo uzwojenie ma indukcyjność. Potrzebna jest dioda swobodnego biegu, MOSFET synchroniczny albo poprawny mostek H. Bez tego przepięcia mogą uszkodzić tranzystor lub mikrokontroler.

MOSFET, driver i dead time

PWM z pinu mikrokontrolera zwykle steruje tylko wejściem drivera albo bramką tranzystora. Obciążenia mocy nie zasila się bezpośrednio z pinu. Od tego jest element wykonawczy: MOSFET, tranzystor, driver, mostek H albo gotowy moduł mocy.

Dla MOSFET-a liczą się straty przewodzenia, straty przełączania, ładunek bramki i sposób sterowania. Uproszczone straty przewodzenia:

P_{\mathrm{cond}}\approx I^2R_{\mathrm{DS(on)}}D

Straty przełączania rosną z częstotliwością PWM:

P_{\mathrm{sw}}\sim f_{\mathrm{PWM}}

Wyższa częstotliwość może zmniejszyć tętnienia albo wyprowadzić dźwięk poza pasmo słyszalne, ale zwiększa straty przełączania i wymagania dla drivera. Nie zawsze większa częstotliwość jest lepsza.

W półmostku i mostku H pojawia się dead time, czyli krótka przerwa między wyłączeniem jednego tranzystora a włączeniem drugiego. Bez dead time górny i dolny tranzystor tej samej gałęzi mogą przewodzić jednocześnie. To powoduje shoot-through, czyli zwarcie zasilania przez tranzystory.

Częstotliwość PWM, piszczenie i zakłócenia

Częstotliwość PWM wpływa na widoczne migotanie LED, słyszalne piszczenie silnika, tętnienia po filtrze, straty przełączania i zakłócenia elektromagnetyczne.

SytuacjaSkutek
Zbyt niska częstotliwość przy LEDmigotanie, artefakty na kamerze, męczący efekt przy ruchu
Zbyt niska częstotliwość przy silnikupiszczenie, pulsacja momentu, większe tętnienia prądu
Bardzo wysoka częstotliwośćwiększe straty przełączania, większe wymagania dla drivera
Długie przewody do obciążeniawiększe EMI, pętle prądowe, ryzyko przepięć
Szybkie zboczaduże dv/dt i di/dt, zakłócenia w masie i zasilaniu

Jeżeli PWM przełącza ampery w przewodach do silnika albo taśmy LED, trzeba myśleć o pętli prądowej, masie, diodzie, filtrze, snubberze i prowadzeniu przewodów. To nadal sygnał cyfrowy, ale skutki przełączania są analogowe i energetyczne.

PWM jest jednym ze sposobów generowania przebiegu okresowego, więc od strony częstotliwości łączy się z pojęciem oscylatora. Przy sterowaniu większymi napędami temat może przejść w kierunku falowników i przemienników częstotliwości, ale w prostym układzie DC PWM oznacza szybkie przełączanie obciążenia z określonym wypełnieniem.

PWM — najważniejszy wniosek

PWM steruje średnią wartością napięcia, prądu lub mocy przez zmianę wypełnienia impulsów, a nie przez płynną zmianę amplitudy. Do poprawnego użycia trzeba znać częstotliwość, okres, duty cycle, wartość średnią, RMS, rozdzielczość timera, typ obciążenia i skutki przełączania. Przy LED liczy się prąd impulsowy i migotanie, przy silniku ścieżka dla prądu indukcyjnego, przy filtrze RC tętnienia, a przy MOSFET-ach straty, driver i dead time.

Źródła i materiały