PWM
PWM ofwel Pulse Width Modulation is een manier om digitaal de snelheid van een motor, of helderheid van een ledje/lampje aan te passen.
Stel we nemen een refresh van 100hz en een resolutie van 8 bits.
bij 255 is de led 100% aan
bij 127 is de led 50% aan
bij 0 is de led uit
Door de refresh van 100 hz te kiezen zien we de led niet knipperen (het menselijk oog haakt af tussen de 50-100 hz, en zal denken dat hij continu brandt)
peudo code:
functie pwm // Deze functie wordt door een timer aangeroepen { teller++; // Bij iedere "run" wordt de teller 1 opgehoogd if teller == 0 // en na de 255 zal de teller weer bij 0 verdergaan poort_aan; // Als de teller weer bij 0 is moet de poort weer aan // dan begint namelijk een nieuwe pwm cyclus if teller == pwm_gewenst // Als de teller gelijk is aan pwm_gewenst betekend dit poort_uit; // dat de poort nu precies `pwm_gewenst` tikken heeft aangestaan // En dan mag de poort uit tot de volgende cyclus }
In deze afbeelding staat een voorbeeld van PWM. Iedere 256 kloktikken zal de teller weer bij 0 beginnen en dus de poort uitzetten, daarna blijft de poort net zolang aan als de waarde in pwm_gewenst (PWM in de tekening)
Wanneer we een PWM frequentie willen van 100 hz en een resolutie van 256 tikken, zullen we de cpu dus 100 x 256 keer per seconde, de bovenstaande pwm_functie aan moeten laten roepen.