Pulsbreddemodulasjon (PWM) er et fancy begrep for en type digitalt signal. PWM-er brukes i en rekke applikasjoner, inkludert komplekse kontrollkretser. En vanlig måte vi bruker dem på hos SparkFun er å dimme en RGB-LED eller kontrollere retningen til en servo. Vi kan oppnå en rekke resultater i begge disse applikasjonene fordi PWM lar oss variere hvor lenge et signal er høyt på en analog måte. Selv om et signal bare kan være høyt (vanligvis 5 V) eller lavt (jord) til enhver tid, kan vi variere andelen tid signalet er høyt sammenlignet med lavt over et konsistent tidsintervall.
Når et signal er høyt, kaller vi det «på-tid». For å beskrive hvor mye det er «på-tid» bruker vi konseptet arbeidssyklus. Arbeidssyklus måles i prosent. Arbeidssyklusprosenten beskriver spesifikt prosentandelen av tiden et digitalt signal er på innenfor et intervall eller en periode. Perioden er det motsatte av bølgeformens frekvens. Hvis et digitalt signal er på halve tiden og av den andre halvparten, sier vi at det digitale signalet har en arbeidssyklus på 50 %, tilsvarende en ideell firkantbølge. Hvis prosentandelen er høyere enn 50 %, bruker det digitale signalet mer tid i høy tilstand enn i lav tilstand, og omvendt hvis arbeidssyklusen er mindre enn 50 %. Følgende diagram illustrerer disse tre tilfellene:

En duty cycle på 100 % er det samme som å sette spenningen til 5 volt (høy). En duty cycle på 0 % er det samme som å koble signalet til jord.
eksempel
Du kan kontrollere lysstyrken til LED-lyset ved å justere driftssyklusen.

Med RGB-LED-er (rød, grønn og blå) kan du kontrollere mengden av hver av de tre fargene som blandes inn ved å dimme dem med forskjellige mengder.

Hvis alle tre er slått på i like mengder, vil resultatet være varierende nyanser av hvitt lys. Den samme blandingen av blått og grønt vil skape en blågrønn farge. For et litt mer komplekst eksempel, prøv å slå rødt helt på, grønt helt på med 50 % driftssyklus og blått helt av for å skape en oransje farge.

Når du styrer LED-pærer, må frekvensen til firkantbølgen være høy nok til å oppnå en skikkelig dimmingseffekt. En duty cycle-bølge på 20 % ved 1 Hz vil tydelig vise at den slår seg av og på, mens en duty cycle på 100 % ved 20 Hz eller høyere vil virke svakere enn når den er helt på. Hvis målet ditt er å oppnå en dimmingseffekt med LED-pærer, kan ikke perioden være for lang. Du kan også bruke pulsbreddemodulasjon for å kontrollere vinkelen til en servomotor som er koblet til en mekanisk enhet som en robotarm. En servo har en aksel som dreier seg til en bestemt posisjon basert på styrelinjen. Servomotorene våre har et område på omtrent 180 grader.
Frekvensen/perioden er spesifikk for å styre en bestemt servo. En typisk servomotor forventer en oppdatering hver 20. ms, med en puls mellom 1 ms og 2 ms – med andre ord, en arbeidssyklus mellom 5 % og 10 % på en 50 Hz-bølgeform. Med en puls på 1,5 ms vil servomotoren være i sin naturlige 90-graders posisjon. Ved en puls på 1 ms vil servoen være på 0 grader, og ved en puls på 2 ms vil servoen være på 180 grader. Du kan få hele bevegelsesområdet ved å oppdatere servoen til verdier i mellom.
Pulsbreddemodulasjon brukes i en rekke applikasjoner, spesielt innen kontroll. Nå som du vet at den kan brukes til å dimme LED-lys og kontrollere vinkelen på servomotorer, kan du begynne å utforske andre mulige bruksområder. Hvis du føler deg fortapt, kan du gjerne sjekke ut SparkFun Inventor's Kit, som inkluderer eksempler som bruker pulsbreddemodulasjon. Hvis du er klar til å begynne å kode med en gang og har en Arduino, kan du sjekke ut PWM-kodingseksemplene her.
Publisert: 31. juli 2025


