Pulsbreddsmodulering (PWM) är en finare term för en typ av digital signal. PWM används i en mängd olika tillämpningar, inklusive komplexa styrkretsar. Ett vanligt sätt vi använder dem på SparkFun är att dimma en RGB-LED eller styra riktningen på ett servo. Vi kan uppnå en rad olika resultat i båda dessa tillämpningar eftersom PWM låter oss variera hur länge en signal är hög på ett analogt sätt. Medan en signal bara kan vara hög (vanligtvis 5V) eller låg (jord) vid en given tidpunkt, kan vi variera hur stor andel tid signalen är hög jämfört med låg över ett konsekvent tidsintervall.
När en signal är hög kallar vi det "på-tid". För att beskriva mängden "på-tid" använder vi konceptet arbetscykel. Arbetscykeln mäts i procent. Arbetscykelprocenten beskriver specifikt den procentuella andelen tid en digital signal är på inom ett intervall eller en period. Perioden är inversen av vågformens frekvens. Om en digital signal är på halva tiden och av den andra hälften, säger vi att den digitala signalen har en arbetscykel på 50 %, liknande en ideal fyrkantvåg. Om procenten är högre än 50 % tillbringar den digitala signalen mer tid i högt tillstånd än i lågt tillstånd, och vice versa om arbetscykeln är mindre än 50 %. Följande diagram illustrerar dessa tre fall:

En arbetscykel på 100 % är detsamma som att ställa in spänningen på 5 volt (hög). En arbetscykel på 0 % är detsamma som att ansluta signalen till jord.
exempel
Du kan styra LED-lampans ljusstyrka genom att justera arbetscykeln.

Med RGB-lysdioder (röda, gröna och blå) kan du styra mängden av var och en av de tre färgerna som blandas in genom att dimma dem olika mycket.

Om alla tre är tända i lika stora mängder blir resultatet varierande nyanser av vitt ljus. Samma blandning av blått och grönt skapar en blågrön färg. För ett något mer komplext exempel, försök att slå på rött helt, grönt helt på vid 50 % arbetscykel och blått helt av för att skapa en orange färg.

När man styr lysdioder måste fyrkantvågens frekvens vara tillräckligt hög för att uppnå en korrekt dimningseffekt. En våg med 20 % duty cycle vid 1 Hz visar tydligt att den slås på och av, medan en våg med 100 % duty cycle vid 20 Hz eller högre kommer att se mörkare ut än när den är helt tänd. Om målet är att uppnå en dimningseffekt med lysdioder får perioden inte vara för lång. Du kan också använda pulsbreddsmodulering för att styra vinkeln på en servomotor som är ansluten till en mekanisk enhet som en robotarm. Ett servo har en axel som vrids till en specifik position baserat på dess styrledning. Våra servomotorer har ett vridområde på cirka 180 grader.
Frekvensen/perioden är specifik för att styra ett specifikt servo. En typisk servomotor förväntar sig en uppdatering var 20:e ms, med en puls mellan 1 ms och 2 ms – med andra ord, en arbetscykel mellan 5 % och 10 % på en 50 Hz-vågform. Med en puls på 1,5 ms kommer servomotorn att vara i sitt naturliga 90-gradersläge. Vid en puls på 1 ms kommer servot att vara i 0 grader, och vid en puls på 2 ms kommer servot att vara i 180 grader. Du kan få hela rörelseomfånget genom att uppdatera servot till värden däremellan.
Pulsbreddsmodulering används i en mängd olika tillämpningar, särskilt inom styrning. Nu när du vet att det kan användas för att dimma lysdioder och styra vinkeln på servomotorer kan du börja utforska andra möjliga användningsområden. Om du känner dig vilsen kan du kolla in SparkFun Inventor's Kit, som innehåller exempel med pulsbreddsmodulering. Om du är redo att börja koda direkt och har en Arduino kan du kolla in PWM-kodningsexemplen här.
Publiceringstid: 31 juli 2025


