Hvis der er uklarheder i denne artikel, bedes du se den originale engelske version.

Fremskynde udviklingen af BLDC-motorapplikationer til bilindustrien og IoT med A4964KJPTR-T-motordriver

Af Jacob Beningo

Bidraget af DigiKeys nordamerikanske redaktører

Børsteløse DC-motorer (BLDC-motorer) anvendes i stigende grad i mange og varierede applikationer, lige fra flernbetjente IoT-styret garageåbner og bilvinduer til styring af satellitdrevne motorer. Det problem, som designere står over for med BLDC-motorer, er, at de kontrolalgoritmer, der er nødvendige for at drive dem, er komplekse og ofte specialiserede. Det gør det vanskeligt for den gennemsnitlige ingeniør at få et system op at køre på en rimelig tid.

Udviklerne må generelt vælge mellem en softwarebaseret løsning, der kører på en mikrocontroller, som giver en fleksibel softwareløsning, men som også lægger en beregningsbyrde på mikrocontrolleren, eller at bruge et dedikeret integreret kredsløb (IC). Sidstnævnte indkapsler den fulde BLDC-motorstyringsfunktion og aflaster hosten for BLDC-kontrol.

I denne artikel diskuteres forskellene mellem en mikrocontrollerbaseret softwareløsning og en dedikeret hardwarechip-løsning. Derefter ser den i dybden på, hvordan man bruger Allegro MicroSystems A4964KJPTR-T, som er en motordriver, der er designet til at forenkle BLDC-motorstyring specielt til bilapplikationer. Artiklen viser, hvordan man interagerer med A4964KJPTR-T sammen med et par "bedste praksis" for at undgå uventet adfærd.

En (meget) kort introduktion til BLDC-motorer

BLDC-motorer leverer et effektivt drejningsmoment over et bredt spektrum af hastigheder, er støjsvage og lider ikke under den mekaniske friktion, som børstemotorer har. BLDC-motorer styres af strøm, ikke spænding, hvilket gør det muligt at anvende dem i en lang række applikationer, hvortil de findes i mange forskellige former, størrelser og prisniveauer.

F.eks. er TRINAMIC Motion Controls QBL4208-41-04-006 en 24 volts motor med 4000 omdrejninger pr. minut (RPM), der leverer drejningsmomenter på op til 0,06 Newtonmeter (Nm) (Figur 1). Motoren er let (0,662 pund (lb)) og giver udvikleren flere muligheder for at styre motoren, f.eks. gennem sensorløs drift ved hjælp af BEMF (back electromotive force) eller ved hjælp af indbyggede sensorer, der rapporterer positionen.

Billedet af TRINAMIC QBL4208-41-04-006 er en 24 volt, 4000 RPM BLDC-motorFigur 1: QBL4208-41-04-006 er en 24 volt BLDC-motor med 4000 omdrejninger pr. minut, der kan levere et drejningsmoment på lidt over 0,06 Nm ved maksimal hastighed. (Billedkilde: TRINAMIC Motion Control GmbH)

For at opnå et større drejningsmoment kan konstruktører bruge QBL4208-41-04-025, også fra TRINAMIC Motion Control (Figur 2). Dette er en 24 volt, 4000 RPM BLDC-motor, der kan levere et drejningsmoment på lidt over 0,25 Nm.

Billede af TRINAMIC Motion Control QBL4208-41-04-025 24 volt, 4000 RPM BLDC-motorFigur 2: TRINAMIC Motion Control QBL4208-41-04-025 er en BLDC-motor på 24 volt, 4000 RPM, der kan levere et drejningsmoment på lidt over 0,25 Nm ved maksimal hastighed. (Billedkilde: TRINAMIC Motion Control GmbH)

BLDC-motorer drives via trefasede linjer, der genererer et magnetfelt, som derefter skubber mod permanente magneter for at flytte statoren og dreje motoren.

I teorien lyder det nemt, men i praksis er det ret kompliceret at køre en BLDC-motor, så udviklerne må vælge mellem at bruge en software framework til at køre motoren eller vælge en dedikeret chip-løsning.

Software versus dedikerede chip-løsninger

Der er flere faktorer, som udviklere bør overveje, når de skal finde ud af, hvordan de skal dreje deres BLDC-motor. Disse faktorer er grundlæggende:

  • BOM-omkostninger i forhold til lønomkostninger
  • Kompleksitet af styringsplatformen versus kompleksitet af softwaren
  • Tid og omkostninger til vedligeholdelse

Ud fra et hardwareperspektiv kan det være meget fristende at vælge softwarevejen, fordi en dedikeret chip-løsning øger omkostningerne til BOM. I stedet for en dedikeret chip kan du fjerne denne omkostning, bruge en brøkdel mere på en mikrocontroller og placere alle styringsalgoritmerne i denne mikrocontroller. Det virker som en win-win-situation, men ofte overvejer holdene ikke de fulde konsekvenser af denne beslutning.

Ja, det reducerer BOM-omkostningerne, men det lægger en ekstra byrde på mikrocontrolleren til at behandle BLDC-tilstandsdataene og til kontinuerligt at drive motoren. Hvis mikrocontrolleren også skal sample andre sensorer, kommunikere med en radio og styre andre enheder, kan udgifterne til softwareudvikling og vedligeholdelse stige til skyhøje beløb, hvis man ikke passer på.

Når det er sagt, kan en softwarebaseret løsning i en mikrocontroller give fleksibilitet, idet et team kan finjustere sine algoritmer til motorstyring. At bruge software betyder heller ikke, at tingene altid skal være alt for komplicerede.

Det vil f.eks. typisk være tilfældet, at hvis man flytter motorstyringsalgoritmen ind i mikrocontrolleren, kan det optage mere RAM og kræve en masse flash. Hvis et hold imidlertid bruger en mikrocontroller, der er designet til motorstyring, som f.eks. Texas Instruments F280049CRSHSR-mikrocontroller til motorstyring, er algoritmerne indbygget i et bibliotek, der ligger i mikrocontrollerens ROM. Det betyder, at den eneste ekstra kode, der tilføjes til programmet, er funktionskald for at få adgang til biblioteket, som gør alt det tunge arbejde.

At dreje en BLDC-motor er dog ikke kun et spørgsmål om software, det kræver også hardware. Figur 3 viser et eksempel på en applikation med en C2000-mikrocontroller, som F280049CRSHSR er et familiemedlem af, der illustrerer alt, hvad der kræves og er valgfrit for at drive en BLDC-motor. Ud over en mikrocontroller skal der også være et 3-faset strømtrin, der kan drive BLDC-motorens tre faser for at få den til at dreje rundt.

Diagram over Texas Instruments C2000-mikrocontrollere (klik for at forstørre)Figur 3: Texas Instruments C2000-mikrocontrollere er udviklet til motorstyringsapplikationer. Dette billede viser et eksempel på en applikation med mikrocontrolleren i midten og det nødvendige og valgfrie kredsløb, der er nødvendigt for at drive en BLDC-motor. (Billedkilde: Texas Instruments)

Det er bestemt interessant at bruge en mikrocontroller til at drive motoren, men hvordan ser en dedikeret hardwareløsning ud? Lad os tage et kig på Allegro MicroSystems' A4964KJPTR-T motordriver-chip.

Allegro MicroSystems A4964KJPTR-T motordriver

Allegro MicroSystems A4964KJPTR-T motordriverchip er en dedikeret BLDC-motordriver, der indeholder alle de smarte funktioner, der er nødvendige for at drive en motor (Figur 4). Chippen er specielt designet til bilapplikationer og til brug med N-kanals MOSFET'er og har sensorløs opstart og kommutation, hvilket gør at den kræver et minimum af ekstern hardware. A4964KJPTR-T fungerer også over et bredt spændingsområde fra 5,5 til 50 volt, hvilket dækker næsten alle standardanvendelser samt bilsystemer.

Den måske mest interessante funktion er, at A4964KJPTR-T kan forbindes til en mikrocontroller eller en central elektronisk styreenhed (ECU) via SPI (Serial Peripheral Interface) for at konfigurere de forskellige registre til motordrift. Det er klart, at mikrocontrolleren ikke behøver at være lige så kraftig som den, der kører selve motorstyringsalgoritmerne.

Diagram af Allegro A4964KJPTR-T BLDC-motordriver (klik for at forstørre)Figur 4: A4964KJPTR-T BLDC-motordriveren kan fungere med 5,5 til 50 volt og giver sensorløs opstart og kommutation. Motorens hastighed kan konfigureres via SPI eller via et dedikeret PWM-signal. (Billedkilde: Allegro MicroSystems)

Alternativt, og dette er den interessante del, kan A4964KJPTR-T motorhastigheden også styres uden SPI ved blot at levere et PWM-signal (pulsbreddemodulation). Der er en ikke-flygtig hukommelse, hvor indstillingerne for motoren kan gemmes, som indlæses ved tændingen, så motoren styres blot af et PWM-signal.

Set fra et konfigurationsperspektiv har A4964KJPTR-T 32 adresserbare 16-bit registre plus et statusregister. Statusregisteret er unikt, idet de første 5 bits overføres under hver læse-/skriveoperation på SPI, hvilket gør det muligt for softwaren at kontrollere en generel status for at se, om der er nogen fejl eller problemer. Alle statusregistrene kan læses under skriveoperationer til chippen, da der ikke sendes data tilbage fra A4964KJPTR-T.

Blandt de 32 adresserbare registre er der også to specielle registre. Register 30 er write-only, og register 31 er read-only. Register 30 (write-only) gør det muligt for udvikleren at indstille efterspørgsels-input eller hastighed af den driftscyklus, som motoren vil blive drevet med en værdi mellem 0 og 1023. Data i register 31 (read-only) ændres på grundlag af de ønskede data, der skrives til register 29, readback select-registeret. Dette register giver mulighed for at hente en lang række telemetrioplysninger, f.eks:

  • Diagnostik
  • Motorhastighed
  • Gennemsnitlig strømforsyning
  • Forsyningsspænding
  • Chip-temperatur
  • Input til efterspørgsel
  • Anvendt bro peak-driftscyklusser
  • Anvendt faseforskydning

Ud over disse specialregistre giver de resterende 30 mulighed for at indstille den specifikke motorapplikation og for at aktivere eller deaktivere fejl, f.eks. strømgrænse og fejl i gate-drev.

Dedikerede motordrivere er interessante, fordi de samler alt det, der skal konfigureres for at køre motoren, i et par dusin konfigurationsregistre. Dette fjerner dramatisk ethvert softwareoverhead, som ellers ville være til stede på en mikrocontroller, og måske endnu vigtigere, kan det reducere omkostningerne til softwareudvikling og vedligeholdelse dramatisk. At drive BLDC'en er så ikke andet end at sende en PWM, som ikke kan have noget overhead i en mikrocontroller, eller at aktivere motorbitten og give en SPI-baseret efterspørgselsindgang til at dreje BLDC'en.

Tips og tricks til brug af A4964KJPTR-T

A4964KJPTR-T er forholdsvis ligetil at interface til, men der er flere "tips og tricks", som udviklere bør huske på, som kan forenkle og fremskynde deres udvikling, f.eks:

  • Statusregisteret returneres på SPI-interfacet ved hver skrivning til chippen og er ikke tilgængeligt som et dedikeret, adresserbart register. Det betyder, at driverkoden skal overvåge SPI-bussens SDO-linje, mens der skrives til chippen for at få statusoplysninger.
  • Fejlinformation er inkluderet i statusregisteret, men en oversigt over chip-status er tilgængelig i hver SPI-transaktion i de første fem bit, når mikrocontrolleren leverer adresseadgangsinformation. Disse data kan bruges til at fastslå, om der er opstået problemer.
  • Der er to unikke registre i hukommelseskortet, som kun kan læses og skrives. Dette er ligetil, men vær forsigtig med ikke at forsøge at læse fra write-only-registeret, da dette vil skrive alle de dummy-data, der bruges i læsesekvensen, til registret.
  • Chippen har en ikke-flygtig hukommelse, som kan bruges til at gemme standardparametre. Disse parametre indlæses i RAM og bruges under opstart. For at sikre, at chippen starter op i klar tilstand mest effektivt, skal du programmere "sikre" opstartsværdier i chippen.
  • Hvis enheden arbejder i et støjende eller strålingsrigt miljø, er det en god idé at designe applikationskoden til at genindføre konfigurationsdatae med jævne mellemrum. Chipkonfigurationen er gemt i RAM, hvilket betyder, at den er sårbar over for kosmisk stråling, bitflips og alle de sjove, sjældne hændelser, der kan ske med elektronik.

Konklusion

BLDC-motorimplementeringer til bilindustrien, IoT og andre applikationer er ret almindelige, men det kan være komplekst at køre dem. For at håndtere softwarekompleksiteten kan udviklere bruge en dedikeret BLDC-motordriver, som f.eks. A4964KJPTR-T, der indkapsler alle motorstyringsfunktionerne.

Der kræves stadig software til at interagere med chippen, men den mikrocontroller, der kører softwaren, behøver kun at indstille konfiguration, og A4964KJPTR-T tager sig af at køre motoren. Udviklere, der følger de medfølgende "tips og tricks", vil opdage, at de sparer en hel del tid og ærgrelse, når de forsøger at bruge A4964KJPTR-T.

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.

Om denne forfatter

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

Om udgiveren

DigiKeys nordamerikanske redaktører