Een microcontroller kan alleen aan of uit. Met PWM schakel je zo snel dat de motor het gemiddelde voelt. Schuif aan de knoppen en zie wat er gebeurt met spanning, stroom en toerental.
PWM (pulsbreedtemodulatie) is een blokgolf met een vaste frequentie. Je verandert alleen hoe lang hij per periode hoog is. Dat deel van de periode heet de duty cycle.
Dit is waar de meeste verwarring zit. Beide waarden zijn juist, maar ze beantwoorden een andere vraag.
De oppervlakte onder de blokgolf, uitgesmeerd over de hele periode.
Dit bepaalt het toerental van je motor. De wikkeling (spoel) en de massa van de rotor vlakken de pulsen uit. De motor gedraagt zich ongeveer alsof er een gelijkspanning van D·V op staat.
Een gewone multimeter op de DC-stand meet ook het gemiddelde.
De gelijkspanning die in een weerstand evenveel warmte zou opwekken.
Dit bepaalt vermogen en opwarming in weerstanden, verwarmingselementen en de koperverliezen in je motorwikkeling en driver.
Waarom √D? Tijdens ‘aan’ is v² = V², tijdens ‘uit’ 0. Het gemiddelde van v² is dus D·V², en daar trek je de wortel uit.
Waarom bestaat RMS eigenlijk? Vergelijk het vermogen van PWM met een gelijkspanning die even hoog is als het PWM-gemiddelde.
-
Een gesimuleerde kleine DC-motor (R = 2 Ω, L = 1 mH, met tegen-EMK en wrijving) achter een driver met vrijloopdiode. Gebruik de knoppen bovenin, en probeer vooral een lage frequentie (onder 100 Hz) en een lage duty cycle.
Vul het tegenwerkende koppel van je last in (in Nm) en het toerental dat je wilt halen. De rekenmachine bepaalt de duty cycle, de laagste duty waarbij de motor nog aanloopt en een geschikte PWM-frequentie. Daarna kun je het resultaat toepassen op de simulatie.
Frequentie vs rimpel. De elektrische tijdconstante is τ = L/R = 0,5 ms. Is de periode T veel korter dan τ, dan vlakt de spoel de stroom af. Vergelijk 50 Hz met 20 kHz.
Dode zone. Onder een bepaalde duty cycle overwint de motor zijn eigen wrijving niet en blijft hij stilstaan. In je code wil je daarom vaak een minimale duty.
Fluiten. Tussen ongeveer 20 Hz en 16 kHz hoor je de PWM-frequentie als een piep in de motor. Daarom kiest men vaak 15 tot 25 kHz, als de driver dat aankan.
De code hieronder past zich aan op de duty cycle en frequentie die je bovenin hebt ingesteld. Op de micro:bit loopt write_analog van 0 tot 1023, op de Pico en ESP32 loopt duty_u16 van 0 tot 65535. In beide gevallen is 0 altijd uit en het maximum altijd aan.
Nooit een motor direct op een GPIO-pin. Een pin levert enkele milliampere bij 3,3 V. Een motor trekt honderden mA tot ampères en geeft bij uitschakelen een spanningspiek terug. Gebruik altijd een driver (H-brug of MOSFET met vrijloopdiode) en verbind de GND van voeding en microcontroller.
Vier vragen die laten zien of je het verschil echt snapt.