Het leveren van PWM-signalen aan de DC-motor van een actuator is een veelgebruikte methode om de verplaatsingssnelheid aan te passen; in sommige gevallen kan dit echter leiden tot hoorbaar piepend motorgeluid. Tijdens de testfase van je project heb je misschien gemerkt dat dezelfde DC-motor bij aansluiting op verschillende snelheidsregelaars piepgeluiden met uiteenlopende luidheid kan produceren. Dit kan te maken hebben met de verschillende PWM-frequenties die in elke snelheidsregelaar of Arduino-programma zijn ingesteld. In dit artikel bespreken we de voor- en nadelen van het aanpassen van de PWM-frequentie en hoe dit het piepen van de motor beïnvloedt.
Algemene en veelgestelde vragen

Hieronder vind je een overzicht van de algemene en veelgestelde vragen die we krijgen, om kort de basis van de Inschakelduur, PWM en de effecten van wijzigingen in de PWM-frequentie op DC-motoren toe te lichten.
- Wat is de Inschakelduur?
Inschakelduur is de verhouding tussen aan-tijd en uit-tijd, meestal uitgedrukt als percentage. Dit betekent: als je actuator 20 seconden uitschuift en intrekt en vervolgens 40 seconden stilstaat voordat het proces zich herhaalt, wordt de “Inschakelduur” uitgedrukt als 33%. De tijd voor één “volledige cyclus” in dit voorbeeld is 60 seconden.
Inschakelduur = Aan-tijd / (Aan-tijd + Uit-tijd)
- Wat betekent PWM?
Pulsbreedtemodulatie (PWM) is een techniek die vaak wordt gebruikt bij motorbesturing, waarbij elektrische signalen schakelen tussen 0% en 100% van de voedingsspanning die op de motor wordt toegepast, vergelijkbaar met aan en uit bij de Inschakelduur. Hiermee kun je de gemiddelde spanningswaarde regelen die op een motor wordt toegepast om de motorsnelheid aan te passen. Door de Inschakelduur te regelen, kun je de gemiddelde spanningswaarde sturen om de motorsnelheid te wijzigen.
Inschakelduur * Spanning van de bron = Gemiddelde spanningswaarde
- Wat is de PWM-frequentie en hoe beïnvloedt deze de prestaties van DC-motoren?
De PWM-frequentie geeft aan hoe snel een PWM-cyclus door je motorbesturingsapparaat wordt voltooid. Het is niet ongebruikelijk dat DC-motoren een piepend geluid produceren wanneer de gebruikte motorcontroller op lagere PWM-frequenties is ingesteld.
- Is het mogelijk om motorpiepen volledig te elimineren, of is enige mate van geluid te verwachten?
Dit kan variëren, omdat fabrikanten doorgaans toleranties hanteren die verschillende motorgeluiden en -eigenschappen veroorzaken. Bepaalde motorontwerpen kunnen rotoren hebben die altijd enig motorpiepen geven, ongeacht de gebruikte PWM-frequentie. De PWM-frequentie zo hoog als praktisch mogelijk instellen voor DC-motoren die in goede staat verkeren, helpt meestal om motorpiepen te verminderen (dit komt later uitgebreider aan bod).
- Kan het aanpassen van de PWM-frequentie om motorpiepen te verminderen negatieve effecten hebben op de motor of de algehele systeemprestaties?
Een verhoging van de PWM-frequentie leidt tot meer vermogensverlies in de H-brug die met je Arduino-microcontroller wordt gebruikt en kan ervoor zorgen dat de motordriverprint oververhit raakt. Gebruikers hebben een methode nodig om hun H-brug of motordriver te koelen om te voorkomen dat componenten beschadigd raken.
Waardoor gaan DC-motoren piepen?

We behandelen het akoestische motorgeluid dat hoorbaar is voor het menselijk oor en niet elektrische ruis. Het equivalente schema van een draaiende DC-motor is hierboven te zien. Door tegen-EMK (elektromotorische kracht, EMK) ontstaat een spanning in de tegengestelde richting van de stroom als gevolg van het bewegen van de motorwikkelingen ten opzichte van een magnetisch veld. In rust of bij lage snelheden heeft het equivalente schema van een geborstelde DC-motor weinig tot geen tegen-EMK en lijkt het op dat van een RL-schakeling van de eerste orde, hieronder te zien.

Het piepende motorgeluid dat we horen, wordt veroorzaakt door koppelrimpel die is ontstaan door rimpel in de stroom (i). We weten ook dat de bovengrens (afsnijfrequentie) voor een RL-laagdoorlaatfilter de volgende formule heeft:
Afsnijfrequentie = 1 / (2π𝜏)
Waar:
𝜏 = L / R
L = Inductantie (H)
R = Weerstand (Ω)
𝜏 = tijdconstante (seconden)
De theoretisch ideale PWM-frequentie hangt af van de inductantie en de weerstand van een motorschakeling, maar zal doorgaans groter dan of gelijk aan 5 keer de afsnijfrequentie zijn. Dit hogere bereik van PWM-frequenties zorgt ervoor dat de stroom door de DC-motor 99,3% (bijna 100%) van de maximale stroomwaarde kan bereiken, zodat stroomrimpel wordt vermeden en het motorpiepen afneemt.

Vermogensverlies van de H-brug en warmteafvoer

Wanneer een schakelaar van aan naar uit schakelt, zijn spanning en stroom niet nul en wordt er vermogen in de schakelaars gedissipeerd. Een H-brug heeft zowel spanning als stroom aanwezig tijdens het schakelen, dus een hogere schakelfrequentie door een hogere PWM-frequentie betekent meer warmte en vermogensverlies. Het is aan te raden om koellichamen of ventilatoren te installeren op motordriverprints die niet al met deze koelvoorzieningen zijn uitgerust, om schade te voorkomen en een goede werking te garanderen.

Onze LC-81 MegaMoto GT H-brug Arduino Shield heeft een ingebouwde koelventilator en koellichamen om oververhitting verder te verminderen, waardoor hij ideaal is voor hoge stroombelastingen. Voor actuatoren met lagere stroomafname-eisen bieden we ook de LC-80 MegaMoto Plus H-brug voor Arduino aan. Beide H-bruggen kunnen met Arduino microcontrollers worden gebruikt en hebben PWM-frequentiespecificaties tot 20 kHz voor gelijkspanning.
Hoe DC-motorpiepen verminderen door de PWM-frequentie met Arduino aan te passen?

De snelheid van de klok van een teller bepaalt de PWM-frequentie van het uitgangssignaal. Voor onze populairste Arduino Uno wordt de systeemklok door een prescalerwaarde gedeeld om de klok van de teller te krijgen. CS02, CS01 en CS00 zijn de drie minst significante bits van de Timer/Counter-registers die de 3-bitwaarde van de prescaler opslaan.
Stel deze drie minst significante bits in of wis ze in het relevante TCCRnB-register in het segment void setup() van je Arduino-code. Door de timer-prescalers via code aan te passen, kan de PWM-frequentie worden gewijzigd, zoals te zien is in deze referentievideo.
Arduino PWM-tutorial #1 - Zo wijzig je de PWM-frequentie:
De gemiddelde mens hoort doorgaans geluiden tussen 20 Hz en 20.000 Hz.
Frequentie = cyclus/tijd
1 Hz = 1 cyclus/seconde
20 Hz = 1 cyclus / (tijd)
20 Hz * (tijd) = 1 cyclus
Tijd = 1 cyclus / 20 Hz
Tijd = 0,05 seconden
Tijd = 50 ms
Bij een PWM-frequentie van 20 Hz vindt één cyclus plaats over een periode van 50 milliseconden, zoals hieronder te zien.

Bij frequenties boven 20 kHz wordt elke cyclus korter dan de reactietijd van een gemiddeld mens en zullen de meesten geen motorpiepen kunnen horen. Het PWM-frequentiebereik van 16 kHz tot 20 kHz lost doorgaans de meeste problemen met DC-motorpiepen op. Dit bereik kan als startpunt voor tests worden gebruikt voordat je geleidelijk aanpassingen maakt om de PWM-frequentie te verfijnen en te optimaliseren voor het specifieke gedrag en de eigenschappen van jouw motor.
Frequentie = cyclus/tijd
20 kHz = 1 cyclus / (tijd)
20000 Hz * (tijd) = 1 cyclus
Tijd = 1 cyclus / 20000 Hz
Tijd = 0,00005 seconden
Tijd = 50 µs
Bij een PWM-frequentie van 20 kHz vindt één cyclus plaats over een periode van 50 microseconden, zoals hieronder te zien.

SAMENVATTING
Het aanpassen van de PWM-frequentie kan helpen om het ongewenste piepende motorgeluid te minimaliseren; we moeten ons echter bewust zijn van de voor- en nadelen. Het is belangrijk om de geschikte PWM-frequentie te vinden die het beste evenwicht biedt tussen vermogensverlies van de motordriver, warmteafvoer en motorpiepen, en die voor jou werkt.
We hopen dat je dit net zo informatief en interessant vond als wij, vooral als je meer wilde weten over DC-motorpiepen bij lagere PWM-frequenties. Als je vragen hebt of onze producten verder wilt bespreken, neem dan gerust contact met ons op! Wij zijn experts in wat we doen en helpen je graag waar we kunnen.
sales@progressiveautomations.com | 1-800-676-6123