EUR | USD

Synchroniseren van PWM-uitgangen op microcontrollers om belastingen efficiënter aan te sturen

Door Bill Giovino

Bijgedragen door De Noord-Amerikaanse redacteurs van Digi-Key

De meeste microcontrollers bevatten ten minste één peripheral voor pulsbreedtemodulatie (PWM) die meerdere golfvormen in de vorm van blokgolven genereert. Deze PWM-uitgangen kunnen worden gebruikt voor het aansturen van synchrone belastingen, zoals stappenmotoren in mechanische systemen en vermogens-MOSFET's voor stroomomvormers. Voor de juiste werking van de doelbelasting is het belangrijk voor dit soort belastingen dat de PWM-golfvormen nauwkeurig worden gesynchroniseerd.

Als de PWM-peripheral niet zorgvuldig wordt geprogrammeerd, kan dit leiden tot tijdelijke fasevertragingen tussen de golfvormen, wat leidt tot verlies van synchronisatie wanneer de signaalflanken van de golfvormen niet precies gelijk vallen. Deze fasevertragingen resulteren in een inefficiënte aansturing van belastingen, wat resulteert in onnodig stroomverlies en overmatige warmteontwikkeling. Voor de meeste PWM-peripherals kan een PWM worden in- of uitgeschakeld terwijl er fasevertragingen optreden bij andere PWM-uitgangen.

Dit is vooral een probleem voor kleinere IoT-toepassingen die op batterijen werken en waarbij een enkel PWM-peripheral met 16 of 32 uitgangen wordt gebruikt om meerdere externe belastingen te regelen. Voor deze IoT-toepassingen kunnen fasevertragingen onnodige accustroom verbruiken. Bovendien kunnen ze, omdat de fasevertragingen niet worden gedetecteerd, worden gemist tijdens een netwerkdiagnose van het IoT-eindpunt.

In dit artikel worden enkele toepassingen besproken voor PWM-peripherals in microcontrollers en uitgelegd wanneer het belangrijk is dat PWM-golfvormen in deze toepassingen synchroon blijven. Vervolgens wordt een microcontroller van Maxim Integrated geïntroduceerd die een pulstrein-peripheral bevat die speciaal is ontworpen om synchronisatieverlies van golfvormen voor deze toepassingen te voorkomen, waarna we laten zien hoe deze peripheral kan worden geconfigureerd zodat de doelbelasting efficiënt wordt aangestuurd.

PWM-peripherals in microcontrollers en hun doelbelastingen

De meeste microcontrollers voor algemene doeleinden bevatten ten minste één PWM-peripheral die wordt gebruikt om regelmatige, herhalende blokgolven te genereren. Er zijn veel belastingen die kunnen profiteren van een PWM-aansturing, van eenvoudige belastingen tot complexere mechanische aanstuursystemen.

Leds (light emitting diodes) zijn een voorbeeld van een eenvoudige belasting die zeer efficiënt kan worden aangestuurd met een PWM-signaal, vooral voor toepassingen waarbij een gekleurde led moet worden gedimd. Vergeleken met het dimmen van een led door de DC-doorlaatstroom te variëren, zorgt PWM-dimmen voor een nauwkeuriger lichtkwaliteit zonder dat de kleur merkbaar verandert. Een PWM-peripheral kan probleemloos een of meer leds aansturen. Als de leds dienen als visuele indicator voor een operator, zijn faseverschillen tussen twee of meer leds niet merkbaar. Maar als de leds worden gebruikt in een complexere toepassing, bijvoorbeeld wanneer meerdere leds door middel van lichtmodulatie gegevens naar optische receptoren communiceren, kan het synchroniseren van de leds een belangrijke overweging zijn.

Een andere eenvoudige belasting voor een microcontroller-PWM is een gelijkstroommotor die wordt aangedreven door een motoraansturings-IC. Terwijl het toerental van de gelijkstroommotor eenvoudig kan worden gewijzigd door de spanning over de twee klemmen te variëren, zorgt PWM-regeling voor een nauwkeurigere regeling van de draairichting van de motor. Als een toerentalsensor wordt gebruikt voor een gesloten-lusbesturingssysteem, kan het motortoerental nauwkeuriger worden gehandhaafd. Bij gebruik van twee of meer gelijkstroommotoren die samen moeten worden bestuurd, kan het nodig zijn om de PWM-signalen te synchroniseren om een exacte toerentalregeling tussen de motoren te handhaven.

Aansturen van bipolaire stappenmotoren

De ontwerpsituatie wordt complexer bij het aansturen van bipolaire stappenmotoren. Bipolaire stappenmotoren worden aangestuurd door twee omkeerbare stroomwikkelingen (Afbeelding 1). Elke wikkeling vereist twee PWM’s, dus vier PWM’s in totaal.

Schema van bipolaire stappenmotor, aangestuurd door twee stroomwikkelingenAfbeelding 1: Een bipolaire stappenmotor wordt aangestuurd door twee stroomwikkelingen (weergegeven als rode en groene spoel) die worden gebruikt om stroom in beide richtingen te voeren. Door de fase en duur van de stroom in de wikkelingen te regelen, kunnen de snelheid en de positie van de motor eenvoudig worden bestuurd. (Bron afbeelding: Digi-Key)

Zoals in afbeelding 1 te zien is, moeten de twee stroomwikkelingen, weergegeven als rode en groene spoel, in de juiste volgorde worden aangestuurd om de motor te laten werken. De volgorde die wordt weergegeven in afbeelding 2 stuurt de bipolaire stappenmotor bij elke verandering van de golfvorm een volledige stap aan.

Schema van het aansturen van twee spoelen op een bipolaire stappenmotorAfbeelding 2: Elk van de twee spoelen op een bipolaire stappenmotor moet volgens het bovenstaande schema worden aangestuurd, zodat de motor gedurende elke golfvorm een volledige stap maakt. De stroom in de spoel wordt eerst in één richting gestuurd, waarna de spoel inactief wordt. Vervolgens wordt de stroom in de tegenovergestelde richting gestuurd. (Bron afbeelding: Digi-Key)

Elke stap van de motor begint bij een overgang van de golfvorm. Zoals in afbeelding 2 is weergegeven, verandert bij elke stap de polariteit van de spanning over de wikkeling en dus de stroom door de wikkeling. Fasevertragingen in een PWM-signaal kunnen leiden tot haperen van de motor, wat vooral bij lage snelheden leidt tot koppelverlies.

Een microcontroller met een PWM-peripheral die slechts vier uitgangen gebruikt, kan de stappenmotor eenvoudig regelen en zonder veel moeite de synchronisatie handhaven. De situatie wordt echter complexer als dezelfde PWM-peripheral wordt gebruikt om meerdere belastingen te regelen. Van een PWM met 16 uitgangen kunnen bijvoorbeeld vier PWM-uitgangen zijn toegewezen aan een stappenmotor en de overige PWM-uitgangen aan andere belastingen, zoals DC-motoren of leds. Nadat de PWM-uitgangen met behulp van de juiste registers zijn geconfigureerd voor frequentie- en bedrijfscyclus, wordt er voor elke PWM in een register een bit ingesteld voor in-/uitschakelen. In een microcontroller van Arm® kan de firmware door middel van bit-banding de juiste bits instellen. Bit-banding voert echter een RMW (read/modify/write) uit op het doelregister. Als er andere PWM-uitgangen geprogrammeerd zijn om tijdens de RMW-bewerking te starten of te stoppen, kan het resultaat onvoorspelbaar zijn en kan in sommige situaties een PWM in- of uitgeschakeld worden,in strijd met de firmwarebesturing.

Maxim Integrated lost dit probleem op met behulp van de MAX32650 Arm Cortex®-M4F microcontroller die op 120 megahertz (MHz) werkt. Deze microcontroller bevat tal van peripherals, waaronder drie standaard SPI-interfaces, één Quad SPI, drie UART’s, twee I2C-poorten, een USB 2.0 hi-speed-interface met fysieke laag (PHY), zes 32-bits timers en een AES-256-coderingseenheid (Afbeelding 3).

Schema van de MAX32650 van Texas Instruments (klik om te vergroten)Afbeelding 3: De MAX32650 van Maxim Integrated is gebaseerd op een 120 MHz Arm Cortex-M4F en bevat een compleet assortiment peripherals en geheugenopties gericht op hoogwaardige IoT-edgecomputingtoepassingen. (Bron afbeelding: Maxim Integrated)

Dankzij 3 megabyte (MB) flash en 1 MB SRAM richt de MAX32650 zich op geavanceerde IoT-eindpunten die edgecomputing vereisen. Ook bevat de MAX32650 een pulstrein-peripheral met 16 uitgangen die geavanceerde PWM-signalen kan genereren. Deze kan blokgolven genereren met een configureerbare frequentie en 50% bedrijfscyclus, evenals een pulstrein gebaseerd op een programmeerbaar bitpatroon dat tot 32 bits lang kan zijn.

Het voorkomen van fasevertragingen

De pulstrein-generator kan met behulp van het 32-bits register PTG_ENABLE elk van de 16 PWM-uitgangen afzonderlijk in- of uitschakelen. Door een 1 naar een bitpositie te schrijven, wordt die specifieke pulstrein ingeschakeld en uitgevoerd zoals geconfigureerd. Het schrijven van een 0 stopt de pulstreinklokken en -logica, waardoor de uitgang de huidige logische status behoudt. Dit register heeft dezelfde RMW-beperkingen als de in-/uitschakelregisters in de meeste microcontrollers, Daarom wordt bit-banding afgeraden.

Om fasesynchronisatie tussen golfvormen te handhaven, ondersteunt de pulstrein-peripheral in de MAX32650 een unieke functie, Safe Enable (veilig inschakelen) genoemd, met behulp van een 32-bits register PTG_SAFE_EN, en Safe Disable (veilig uitschakelen) met behulp van een 32-bits register PTG_SAFE_DIS. De bovenste 16 bits van deze registers worden niet gebruikt en aanbevolen wordt om de ongebruikte posities altijd met nullen te schrijven.

Om de uitvoer veilig in te schakelen, schrijft firmware een 1 naar de overeenkomstige bitposities in PTG_SAFE_EN. Hierdoor worden ook onmiddellijk de bitposities voor de uitgangen in PTG_ENABLE ingesteld en de PWM-uitgang gestart. Het schrijven van een 0 naar een willekeurige bitpositie in PTG_SAFE_EN heeft geen invloed op pulstreinuitgangen.

Om uitgangen veilig uit te schakelen, schrijft firmware een 1 naar de overeenkomstige bitposities in PTG_SAFE_DIS. Hierdoor worden ook onmiddellijk de bitposities voor de uitgangen in PTG_ENABLE gewist, waardoor de PWM-uitgang wordt gestopt. Het schrijven van een 0 naar een willekeurige bitpositie in PTG_SAFE_DIS heeft geen invloed op pulstreinuitgangen.

Schrijven naar deze registers voert geen RMW uit. Met de Safe Enable/Disable-functie kunnen een of meer pulstreinen direct worden gestart of gestopt, terwijl andere pulstreinen gegarandeerd niet worden beïnvloed. Bit-banding wordt niet ondersteund voor PTG_SAFE_EN- en PTG_SAFE_DIS-registers.

Zoals de bipolaire stappenmotor in afbeelding 1 laat zien, kunnen pulstreinuitgangen 0 en 1 worden gebruikt voor A en B voor de groene spoelwikkeling, terwijl pulstreinuitgangen 2 en 3 kunnen worden gebruikt voor C en D voor de rode spoelwikkeling. Aangezien de grafieken in afbeelding 2 zogenaamde dead spots bevatten, is het beter om de pulstreinfunctie te gebruiken om een patroon te programmeren dat kan worden geconfigureerd zodat het een willekeurig aantal keer wordt herhaald zonder tussenkomst van de firmware.

Zodra de motor is ingesteld, kan deze worden gestart door 0000000Fh naar PTG_SAFE_EN te schrijven. Dit start tegelijkertijd de pulstreinuitgangen 0 t/m 3, die de motor starten zonder dat dit invloed heeft op andere uitgangen van de pulstrein. De motor kan worden gestopt door 0000000Fh naar PTG_SAFE_DIS te schrijven. Beide bewerkingen hebben geen invloed op andere actieve pulstreinen.

Als een van de andere 12 pulstreinuitgangen in- of uitgeschakeld moeten worden, kunnen deze probleemloos worden geregeld met behulp van deze twee registers. Zolang er geen 1 naar de onderste vier bitposities in deze registers wordt geschreven, wordt de werking van de stappenmotor niet beïnvloed. Dit in tegenstelling tot het gebruik van een standaard enable-register met een RMW, waarbij uitgangen kunnen haperen en er een faseverschuiving kan ontstaan die het koppel negatief kan beïnvloeden. De Safe Enable/Disable-functie is vergelijkbaar met die van een Atomic-bewerking en zorgt ervoor dat de stappenmotor efficiënt werkt, geen energie verspilt en continu het maximale koppel handhaaft.

De uitgangspennen van de microcontroller hebben onvoldoende vermogen om een stappenmotor aan te sturen en vereisen een motoraandrijving of een H-brug. De A3909GLYTR-T van Allegro MicroSystems is een dubbele H-brug-driver die motoren kan bedienen die tussen 4 en 18 volt en max. 1 ampère (A) per wikkeling vereisen (Afbeelding 4).

Diagram van de A3909 dubbele H-brug-driver van Allegro MicroSystemsAfbeelding 4: De A3909 van Allegro MicroSystems is een dubbele H-brug-driver met een toe- of afvoer van maximaal 1 A voor stappenmotorspoelen. (Bron afbeelding: Allegro MicroSystems)

De A3909 is voorzien van een thermische uitschakelbeveiliging, een overstroombeveiliging en een kortsluitbeveiliging. Elke ingang (INx) stuurt de bijbehorende uitgang (OUTx) aan. De MAX32650 PWM kan pulstreinuitgangen 0 en 1 met ingangen IN1 en IN2 (groen) verbinden om de groene spoel via OUT1 en OUT2 aan te sturen. Pulstreinuitgangen 2 en 3 worden met IN3 en IN4 (rood) verbonden om de rode spoel via OUT3 en OUT4 aan te sturen. Hierdoor kan de A3909 de stappenmotor direct aansturen.

De A3909 ondersteunt ook een handige functie met hoge impedantie. Als beide ingangen van een H-brug langer dan een milliseconde (ms) logisch 0 zijn, worden beide uitgangen in een hoge impedantiemodus geplaatst. Dit is handig als de motor vrij moet draaien (coasten) of als bepaalde stappen van een stappenmotor een uitvoer met hoge impedantie vereisen. Zoals we in afbeelding 2 hebben gezien, zou elk inactief deel van de golfvorm kunnen profiteren van een hoge impedantie. Dit verbetert de efficiëntie door te voorkomen dat de spoel de werking van de motor verstoort omdat deze door de andere spoel wordt gebruikt.

Als alle vier de ingangen (beide paren) langer dan 1 ms laag worden gehouden, schakelen beide uitgangsparen over naar een modus met hoge impedantie precies zoals hierboven beschreven. In het gegevensblad wordt dit ‘sleep mode’ (slaapstand) genoemd omdat ook sommige interne circuits worden uitgeschakeld.

Conclusie

Veelgebruikte peripherals in microcontrollers bevatten vaak PWM-functies die worden gebruikt voor het aansturen van externe belastingen zoals motoren en vermogensmosfet's. Omdat het uitvoeren van bit-manipulatiebewerkingen op het PWM-activeringsregister in sommige gevallen onvoorspelbare resultaten kan opleveren, lossen leveranciers van microcontroller dit op met nieuwe PWM-peripherals die functionaliteit bieden waarmee afzonderlijke PWM-uitgangen veilig kunnen worden in- en uitgeschakeld, zonder dat andere PWM-uitgangen worden verstoord. Hierdoor wordt voorkomen dat er af en toe fasevertragingen optreden en dat de synchronisatie verloren gaat.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

Achtergrondinformatie over deze auteur

Bill Giovino

Bill Giovino is een ingenieur in elektronica met een BSEE van de Syracuse University. Hij is een van de weinigen die met succes de overstap maakten van ontwerpingenieur naar ingenieur veldtoepassingen en vervolgens naar technologiemarketing.

Meer dan 25 jaar lang heeft Bill met veel toewijding nieuwe technologieën gepromoot ten overstaan van zowel technisch als niet-technisch publiek voor vele bedrijven, waaronder STMicroelectronics, Intel en Maxim Integrated. Toen hij bij STMicroelectronics actief was, hielp Bill bij de doorbraak van de eerste successen van het bedrijf in de sector van microcontrollers. Bij Infineon stond Bill in voor de eerste toepassingen van het microcontrollerontwerp van het bedrijf in de Amerikaanse autosector. Als marketing consultant voor zijn bedrijf CPU Technologies, hielp Bill vele bedrijven om laag presterende producten op te krikken en er een succesverhaal van te maken.

Bill was een van de eersten die het Internet of Things toepaste. Hij plaatste de eerste volledige TCP/IP-stack op een microcontroller. Bill is trouw aan het motto “Verkoop via opvoeding” en wijst op het toenemende belang van duidelijke, goed geschreven mededelingen om producten online te promoten. Hij is moderator van de populaire LinkedIn Semiconductor Sales & Marketing Group en spreekt vlot B2E.

Over deze uitgever

De Noord-Amerikaanse redacteurs van Digi-Key