Klik hier voor de Engelse versie van de broncode.

Versnel de ontwikkeling van BLDC-motortoepassingen voor de auto-industrie en IoT met de A4964KJPTR-T-motordriver

Door Jacob Beningo

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Borstelloze DC-motoren (BLDC-motoren) worden steeds vaker gebruikt in tal van uiteenlopende toepassingen, van op afstand bediende, door het Internet of Things (IoT) aangestuurde garageopeners en autoruiten tot aandrijvingscontrollers voor satellieten. Het probleem waarmee ontwerpers bij BLDC-motoren worden geconfronteerd, is dat de regelalgoritmen die nodig zijn om deze motoren aan te drijven, complex en vaak gespecialiseerd zijn. Dit maakt het voor de gemiddelde ingenieur moeilijk om er binnen een redelijke tijd een in bedrijf te stellen.

Ontwikkelaars moeten in het algemeen kiezen tussen een op software gebaseerde oplossing die op een microcontroller draait, wat een flexibele software-oplossing biedt maar ook een rekenbelasting voor de microcontroller inhoudt, of het gebruik van een specifieke geïntegreerde schakeling (IC). Deze laatste kapselt de volledige BLDC-motorbesturingsfunctie in en ontlast de host van de BLDC-besturing.

Dit artikel bespreekt de verschillen tussen een software-oplossing op basis van een microcontroller en een specifieke hardware-chipoplossing. Vervolgens wordt diep ingegaan op het gebruik van de Allegro MicroSystems A4964KJPTR-T, een motordriver die is ontworpen om de besturing van BLDC-motoren te vereenvoudigen, specifiek voor toepassingen in de automobielsector. Het artikel zal laten zien hoe te interageren met de A4964KJPTR-T, samen met een paar beste praktijken om onverwacht gedrag te voorkomen.

Een (zeer) korte inleiding tot BLDC-motoren

BLDC-motoren leveren een efficiënt koppel over een breed toerentalbereik, zijn stil en hebben geen last van de mechanische wrijving van borstelmotoren. BLDC-motoren worden geregeld door stroom, niet door spanning, waardoor zij kunnen worden gebruikt in een groot aantal toepassingen, waarvoor zij in een groot aantal vormen, afmetingen en kostenposten verkrijgbaar zijn.

De QBL4208-41-04-006 van TRINAMIC Motion Control bijvoorbeeld is een motor van 24 volt en 4000 omwentelingen per minuut (RPM) die een koppel levert tot 0,06 Newtonmeter (Nm) (Afbeelding 1). De motor is licht (0,662 pond (lb)) en biedt een ontwikkelaar verschillende mogelijkheden om de motor te besturen, bijvoorbeeld door middel van sensorloze werking met behulp van teruggekoppelde elektromotorische kracht (BEMF), of met behulp van ingebouwde sensoren die de positie rapporteren.

Afbeelding van TRINAMIC QBL4208-41-04-006 is een 24 volt, 4000 RPM BLDC-motorAfbeelding 1: De QBL4208-41-04-006 is een BLDC-motor van 24 volt en 4000 omw/min die iets meer dan 0,06 Nm koppel kan leveren bij maximaal toerental. (Bron afbeelding: TRINAMIC Motion Control GmbH)

Voor meer koppel kunnen ontwerpers de QBL4208-41-04-025 gebruiken, eveneens van TRINAMIC Motion Control (Afbeelding 2). Dit is een 24 volt, 4000 RPM BLDC-motor die iets meer dan 0,25 Nm koppel kan leveren.

Afbeelding van TRINAMIC Motion Control QBL4208-41-04-025 24 volt, 4000 RPM BLDC-motorFiguur 2: De TRINAMIC Motion Control QBL4208-41-04-025 is een 24 volt, 4000 RPM BLDC motor die iets meer dan 0,25 Nm koppel kan leveren bij maximum toerental. (Afbeelding bron: TRINAMIC Motion Control GmbH)

BLDC-motoren worden aangedreven via driefasige leidingen die een magnetisch veld opwekken dat vervolgens tegen permanente magneten drukt om de stator in beweging te brengen en de motor te doen draaien.

In theorie klinkt dit eenvoudig, maar in de praktijk is het aansturen van een BLDC-motor tamelijk gecompliceerd, zodat ontwikkelaars moeten kiezen tussen het gebruik van een softwareframework om de motor aan te drijven of het kiezen voor een speciale chipoplossing.

Software versus specifieke chipoplossingen

Er zijn verschillende factoren die ontwikkelaars in overweging moeten nemen als het erom gaat een oplossing te vinden voor het draaien van hun BLDC-motor. Deze factoren komen in feite neer op:

  • BOM-kosten versus arbeidskosten
  • Boordcomplexiteit versus softwarecomplexiteit
  • Onderhoudstijd en -kosten

Vanuit hardwareperspectief kan het erg verleidelijk zijn om voor de software te kiezen, omdat een specifieke chipoplossing extra kosten met zich meebrengt voor de aanschafprijs. In plaats van een speciale chip, kunt u die kosten wegnemen, een fractie meer uitgeven aan een microcontroller en alle besturingsalgoritmen in die microcontroller stoppen. Het lijkt een win-win situatie, maar teams denken vaak niet aan de volledige gevolgen van deze beslissing.

Ja, het verlaagt de BOM-kosten, maar het legt een extra last op de microcontroller om de BLDC-statusgegevens te verwerken en de motor continu aan te drijven. Als de microcontroller ook nog probeert andere sensoren te bemonsteren, met een radio te communiceren en andere apparaten te besturen, kunnen de kosten voor softwareontwikkeling en onderhoud de pan uit rijzen als niet zorgvuldig te werk wordt gegaan.

Een softwaregebaseerde oplossing in een microcontroller kan echter flexibiliteit bieden, omdat een team de motorbesturingsalgoritmen nauwkeurig kan afstellen. Het gebruik van software betekent ook niet dat het altijd te ingewikkeld moet worden.

Het is bijvoorbeeld typisch dat het verplaatsen van het motorbesturingsalgoritme naar de microcontroller meer RAM in beslag kan nemen en veel flash vereist. Als een team echter een microcontroller gebruikt die voor motorbesturing is ontworpen, zoals de F280049CRSHSR-microcontroller van Texas Instruments, zijn de algoritmen ingebouwd in een bibliotheek die zich in het ROM van de microcontroller bevindt. Dit betekent dat de enige extra code die aan de toepassing wordt toegevoegd de functie-aanroepen zijn om toegang te krijgen tot de bibliotheek die al het zware werk doet.

Het laten draaien van een BLDC-motor is echter niet alleen een kwestie van software, er is ook hardware voor nodig. Figuur 3 toont een voorbeeldtoepassing die gebruik maakt van een C2000-microcontroller, waarvan de F280049CRSHSR een familielid is, en illustreert alles wat vereist en optioneel is om een BLDC-motor aan te drijven. Naast een microcontroller moet er ook een driefasige stroomtrap zijn die de drie fasen van de BLDC-motor kan aandrijven om hem te laten draaien.

Schema van Texas Instruments C2000-microcontrollers (klik om te vergroten)Afbeelding 3: De Texas Instruments C2000-microcontrollers zijn ontworpen voor motorbesturingstoepassingen. Deze afbeelding toont een voorbeeldtoepassing met de microcontroller in het midden en de vereiste en optionele circuits die nodig zijn om een BLDC motor aan te drijven. (Bron afbeelding: Texas Instruments)

Het gebruik van een microcontroller om de motor aan te drijven is zeker interessant, maar hoe ziet een specifieke hardware-oplossing eruit? Laten we eens kijken naar de A4964KJPTR-T-motordriverchip van Allegro MicroSystems.

De Allegro MicroSystems A4964KJPTR-T motordriver

De Allegro MicroSystems A4964KJPTR-T-motordriverchip is een speciale BLDC motor driver die alle slimmigheidjes bevat die nodig zijn om een motor aan te drijven (Afbeelding 4). De chip, die speciaal is ontworpen voor toepassingen in de automobielsector en voor gebruik met N-kanaals MOSFET's, heeft een sensorloze opstart en commutatie, zodat hij een minimale hoeveelheid externe hardware vereist. De A4964KJPTR-T werkt ook over een breed spanningsbereik, van 5,5 tot 50 volt, waarmee vrijwel elke standaardtoepassing wordt gedekt, samen met automobielsystemen.

Misschien wel het meest interessante kenmerk is dat de A4964KJPTR-T kan worden gekoppeld aan een microcontroller of centrale elektronische regeleenheid (ECU) via de seriële perifere interface (SPI) om de verschillende registers voor de werking van de motor te configureren. Het is duidelijk dat de microcontroller niet zo krachtig hoeft te zijn als de microcontroller die de motorbesturingsalgoritmen zelf uitvoert.

Schema van Allegro A4964KJPTR-T BLDC-motordriver (klik om te vergroten)Afbeelding 4: De A4964KJPTR-T BLDC-motordriver kan werken op 5,5 tot 50 volt en biedt sensorloze opstart- en commutatiefuncties. De motorsnelheid kan worden geconfigureerd via SPI of via een specifiek PWM-signaal. (Bron afbeelding: Allegro MicroSystems)

Als alternatief, en dit is het interessante deel, kan de motorsnelheid van de A4964KJPTR-T ook zonder SPI worden geregeld door eenvoudig een pulsbreedtemodulatiesignaal (PWM) te leveren. Er is een niet-vluchtig geheugen waarin de instellingen voor de motor kunnen worden opgeslagen die bij het inschakelen worden geladen, zodat de motor alleen met een PWM-signaal kan worden aangestuurd.

Vanuit het oogpunt van configuratie heeft de A4964KJPTR-T 32 adresseerbare 16-bit registers, plus een statusregister. Het statusregister is uniek in die zin dat de eerste 5 bits bij elke lees/schrijf-bewerking op de SPI worden verzonden, zodat de software een algemene status kan controleren om te zien of er fouten of problemen zijn. Alle statusregisters kunnen worden uitgelezen tijdens schrijfoperaties naar de chip, omdat er geen gegevens worden teruggezonden van de A4964KJPTR-T.

In de 32 adresseerbare registers zijn er ook twee speciale registers. Register 30 is alleen beschrijfbaar en register 31 is alleen beschrijfbaar. Het alleen-schrijven register stelt een ontwikkelaar in staat om de vraaginput, of de duty cycle rate waarmee de motor zal worden aangedreven, in te stellen met een waarde tussen 0 - 1023. De gegevens van het alleen-lezen register veranderen op basis van de gevraagde gegevens die naar register 29, het terugleesselectieregister, worden geschreven. Met dit register kan een breed scala van telemetrie-informatie worden opgevraagd, zoals:

  • Diagnose
  • Motorsnelheid
  • Gemiddelde voedingsstroom
  • Voedingsspanning
  • Temperatuur van de chip
  • Vraag input
  • Toegepaste brugpiek activiteitscyclus
  • Toegepaste fasevoorsprong

Naast deze speciale registers kunnen met de resterende 30 registers de specifieke motortoepassing worden afgestemd en kunnen fouten worden in- of uitgeschakeld, zoals stroomlimiet- en poortaandrijvingsfouten.

Specifieke motordrivers zijn interessant omdat zij alles wat geconfigureerd moet worden om de motor te laten draaien, samenvatten in enkele tientallen configuratieregisters. Dit neemt alle software-overhead weg die anders op een microcontroller zou bestaan, en wat misschien nog belangrijker is, het kan de software-ontwikkelings- en onderhoudskosten drastisch verlagen. Het aansturen van de BLDC is dan niets meer dan het sturen van een PWM die geen overhead kan hebben in een microcontroller, of het inschakelen van de motorbit en het leveren van een SPI-gebaseerde vraagingang om de BLDC te laten draaien.

Tips en trucs voor het gebruik van de A4964KJPTR-T

De A4964KJPTR-T is vrij eenvoudig te interfacen, maar er zijn verschillende "tips en trucs" die ontwikkelaars in gedachten moeten houden die hun ontwikkeling kunnen vereenvoudigen en versnellen, zoals:

  • Het statusregister wordt tijdens elke schrijfoperatie naar de chip teruggestuurd via de SPI-interface en is niet beschikbaar als een specifiek adresseerbaar register. Dit betekent dat de stuurprogrammacode de SDO-lijn van de SPI-bus moet controleren tijdens het schrijven naar de chip om statusinformatie te verkrijgen.
  • Foutinformatie is opgenomen in het statusregister, maar een overzicht van de chipstatus is bij elke SPI-transactie beschikbaar in de eerste vijf bits wanneer de microcontroller de adrestoegangsinformatie levert. Deze gegevens kunnen worden gebruikt om vast te stellen of er zich problemen hebben voorgedaan.
  • Er zijn twee unieke registers in de geheugenkaart die alleen-lezen en alleen-schrijven zijn. Dit is rechttoe rechtaan, maar wees voorzichtig dat u niet probeert te lezen uit het alleen schrijven-register, want dan worden de dummy-gegevens die in de lees-sequentie worden gebruikt, naar het register geschreven.
  • De chip heeft een niet-vluchtig geheugen dat kan worden gebruikt om standaardparameters op te slaan. Deze parameters worden in het RAM geladen en gebruikt tijdens het opstarten. Om ervoor te zorgen dat de chip zo efficiënt mogelijk opstart in de gereed-stand, dient u "veilige" opstartwaarden in de chip te programmeren.
  • Als het eindtoestel in een lawaaierige of stralingsrijke omgeving werkt, is het geen slecht idee om de toepassingscode zo te ontwerpen dat de configuratiegegevens periodiek opnieuw worden bevestigd. De chipconfiguratie wordt opgeslagen in RAM, wat betekent dat zij kwetsbaar is voor kosmische stralen, bit flips, en al die leuke, zeldzame gebeurtenissen die zich met elektronica kunnen voordoen.

Conclusie

BLDC-motorimplementaties voor auto-, IoT- of andere toepassingen zijn vrij gebruikelijk, maar het aansturen ervan kan complex zijn. Om de complexiteit van de software te beheersen, kunnen ontwikkelaars gebruik maken van een speciale BLDC-motordriver, zoals de A4964KJPTR-T, die alle motorbesturingsfunctionaliteit inkapselt.

Hoewel nog steeds software nodig is voor interactie met de chip, hoeft de microcontroller waarop de software draait alleen de configuratie-instellingen in te stellen, en de A4964KJPTR-T zorgt voor de aandrijving van de motor. Ontwikkelaars die de bijgeleverde "tips en trucs" volgen, zullen merken dat ze heel wat tijd en verdriet besparen wanneer ze proberen de A4964KJPTR-T te gebruiken.

DigiKey logo

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 DigiKey or official policies of DigiKey.

Achtergrondinformatie over deze auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is een embedded software consultant. Hij heeft meer dan 200 artikelen over embedded software ontwikkelingstechnieken gepubliceerd, is een veelgevraagde spreker en technische trainer en heeft drie universitaire graden, waaronder een Masters of Engineering bij de University of Michigan.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey