PWM står for Pulse Width Modulation og betyder, at en pin skifter hurtigt mellem høj og lav. Ved at ændre hvor stor del af tiden en pin er høj, kan du få et gennemsnitligt spændingsniveau eller et styresignal til for eksempel lysstyrke eller motorhastighed.
Grundbegreber
Et ideelt PWM-signal skifter mellem en lav spænding og en høj spænding. Perioden er den samlede tid for én gentagelse, og duty cycle er den del af perioden, hvor signalet er højt.
PWM er ikke en kommunikationsbus med byte-rate. Det beskrives med signalfrekvens (pulser pr. sekund) og duty cycle; hvor hurtigt modtageren kan reagere afhænger af kredsløbet.
\[
T = t_{\text{høj}} + t_{\text{lav}}, \qquad
f = \frac{1}{T}, \qquad
D = \frac{t_{\text{høj}}}{T}
\]
Her er \(T\) perioden, \(f\) frekvensen, \(t_{\text{høj}}\) high-tiden og \(D\) duty cycle. En duty cycle på 25 % betyder altså \(D=0{,}25\).
Tre duty cycles
I figurerne er den høje del vist som den blå del af signalet. Perioden er den samme i alle tre eksempler; kun high-tiden ændres.
25 % duty cycle: signalet er højt i en fjerdedel af hver periode.50 % duty cycle: signalet er højt og lavt lige længe.75 % duty cycle: signalet er højt i tre fjerdedele af hver periode.
Middelværdi og effektivværdi
For et ideelt, unipolært PWM-signal, der skifter mellem \(0\) og \(V_{\text{H}}\), er middelværdien:
\[
V_{\text{middel}} = D \cdot V_{\text{H}}
\]
Effektivværdien, også kaldet RMS-værdien, beregnes ud fra kvadratet af signalet:
Middelværdi og effektivværdi er ikke det samme. For en ren resistiv belastning bliver den gennemsnitlige effekt \(P=V_{\text{RMS}}^2/R\), så et ideelt PWM-signal med duty cycle \(D\) giver omtrent \(D\) gange effekten ved konstant \(V_{\text{H}}\). Motorer, LED'er og strømforsyninger kan afvige fra denne simple model.
Hvad PWM betyder i praksis
PWM er ikke “rigtigt analogt” output, men det opfører sig som en form for analog styring.
Et signal kan have en duty cycle, for eksempel 25 %, 50 % eller 75 %.
Jo højere duty cycle, jo mere tid er signalet højt, og jo mere effekt eller energi får en komponent typisk.
Hvorfor bruges PWM?
Styring af LED-lysstyrke
Regulering af motorhastighed
Servo-styring
Generering af analoge signaler til visse komponenter
På Arduino Uno
Arduino Uno har flere digitale pins, der understøtter PWM.
Disse pins er normalt markeret med et ~-symbol på kortet.
Eksempler kan være pins 3, 5, 6, 9, 10 og 11, afhængigt af den konkrete Uno-version.
Eksempel
50 % duty cycle giver typisk halv effekt eller halv lysstyrke i mange simple eksempler.
Et servo-signal er også en form for pulsbased styring, selv om det ikke er det samme som standard PWM til motorer eller LED'er.
Husk
PWM er mest nyttigt, når du vil styre noget med et digitalt kort, men stadig ønsker et analogt resultat.
For den rigtige effekt skal du også tage hensyn til belastning, forsyningsspænding og komponenternes tolerancer.