Snabbare utveckling av tillämpningar med BLDC-motorer för fordon och IoT med motordrivkretsen A4964KJPTR-T
Bidraget med av DigiKeys nordamerikanska redaktörer
2021-10-26
Borstlösa DC-motorer (BLDC) används i allt större utsträckning i många olika tillämpningar. Från fjärrstyrda garageöppnare och bilfönster som styrs via sakernas internet (IoT) till styrenheter för satellitmotorer. Problemet för konstruktörer med BLDC-motorer är att de styralgoritmer som krävs för att driva dem är komplicerade och ofta specialiserade. Detta gör det svårt för den genomsnittlige ingenjören att ta fram en sådan lösning inom rimlig tid.
Utvecklare måste i allmänhet välja mellan en mjukvarubaserad lösning som körs på en mikrokontroller, vilket ger en flexibel mjukvarulösning men också innebär en beräkningsbörda för mikrokontrollern, eller använda en dedicerad integrerad krets (IC). Den sistnämnda kapslar in hela styrfunktionen för BLDC-motorn och avlastar värden med BLDC-styrningen.
Artikeln diskuterar skillnaderna mellan en mikrokontrollerbaserad mjukvarulösning och en dedikerad hårdvarulösning med en krets. Därefter granskar den hur man kan använda motordrivkretsen A4964KJPTR-T från Allegro MicroSystems, som är särskilt utformad för att förenkla styrningen av BLDC-motorer i fordonstillämpningar. Artikeln visar hur man interagerar med A4964KJPTR-T tillsammans med några rekommenderade metoder för att undvika oväntat beteende.
En (väldigt) kort introduktion till BLDC-motorer
BLDC-motorer har ett effektivt vridmoment i ett brett varvtalsområde, de är tysta och lider inte av den mekaniska friktion som borstmotorer gör. BLDC-motorer styrs med ström, inte med spänning, vilket gör att de kan användas i en mängd olika tillämpningar, för vilka de finns i många olika former, storlekar och kostnadsnivåer.
Ett exempel är QBL4208-41-04-006 från TRINAMIC Motion Controls som är en motor på 24 V, 4000 varv/min med ett vridmoment på upp till 0,06 Nm (figur 1). Motorn är lätt (0,3 kg) och förser utvecklaren med flera alternativ för att styra motorn, t.ex. genom sensorlös drift med hjälp av BEMF (motriktad elektromotorisk kraft) eller med hjälp av inbyggda sensorer som rapporterar positionen.
Figur 1: QBL4208-41-04-006 är en BLDC-motor för 24 V, 4000 varv/min som kan ge lite över 0,06 Nm i vridmoment vid maximal hastighet. (Bildkälla: Trinamic Motion Control GmbH)
För mer vridmoment kan konstruktörer använda QBL4208-41-04-025, också från TRINAMIC Motion Control (figur 2). Det är en BLDC-motor för 24 V, 4000 varv/min som kan ge lite över 0,25 Nm i vridmoment.
Figur 2: QBL4208-41-04-025 från TRINAMIC Motion Control är en BLDC-motor för 24 V, 4000 varv/min som kan ge lite över 0,25 Nm i vridmoment vid maximal hastighet. (Bildkälla: Trinamic Motion Control GmbH)
BLDC-motorer drivs via trefaslinjer som genererar ett magnetfält som sedan trycker mot permanentmagneter för att flytta statorn och få motorn att snurra.
I teorin låter det enkelt, men i praktiken är det ganska komplicerat att driva en BLDC-motor, vilket gör att utvecklare måste välja mellan att använda ett mjukvaruramverk för att driva motorn eller välja en lösning med särskilda kretsar.
Mjukvara jämfört med dedikerade kretslösningar
Det finns flera faktorer som utvecklare bör ta hänsyn till när de ska lösa hur de ska få sin BLDC-motor att snurra. Faktorerna kan i princip sammanfattas på följande sätt:
- Kostnader för materiallista kontra arbetskostnader
- Kretskortets komplexitet jämfört med mjukvarans komplexitet
- Tid och kostnad för underhåll
Ur ett hårdvaruperspektiv kan det vara väldigt frestande att välja mjukvaruvägen, eftersom en dedikerad kretslösning ger ytterligare kostnader för materiallistan. Istället för en särskild krets kan du ta bort den kostnaden, spendera en bråkdel mer på en mikrokontroller och placera alla styralgoritmer i mikrokontrollern. Det verkar vara en situation som alla vinner på, men teamen överväger ofta inte samtliga konsekvenser av detta beslut.
Ja, det minskar kostnaden för materiallistan, men det lägger till en ytterligare börda på mikrokontrollern för bearbetning av statusinformation från BLDC-motorn och kontinuerlig drift av motorn. Om mikrokontrollern även försöker hämta prov från andra sensorer, prata med en radio och styra andra enheter kan kostnaderna för utveckling och underhåll av programvaran stiga i höjden om man inte är försiktig.
Med det sagt, kan en mjukvarubaserad lösning i en mikrokontroller dock erbjuda flexibilitet genom att ett team kan finjustera sina algoritmer för motorstyrning. Att använda programvara innebär inte heller att saker och ting alltid måste vara alltför komplicerade.
Det är till exempel vanligt att algoritmen för motorstyrning att ta upp mer RAM-minne och kräva mycket flashminne, när man flyttar in motorstyrningens algoritm i mikrokontrollern. Om ett team använder en mikrokontroller som är utformad för motorstyrning, t.ex. mikrokontrollern F280049CRSHSR från Texas Instruments, är algoritmerna inbyggda i ett bibliotek som finns i mikrokontrollerns ROM-minne. Detta innebär att den enda ytterligare kod som läggs till i programmet är de funktionsanrop som sker för att komma åt det bibliotek som utför merparten av uppgiften.
Att snurra en BLDC-motor är dock inte bara en fråga om mjukvara, utan kräver även hårdvara. Figur 3 visar ett exempel på en tillämpning som använder en C2000-mikrokontroller, där F280049CRSHSR är en familjemedlem, och som illustrerar allt som krävs och är valbart för att driva en BLDC-motor. Förutom en mikrokontroller måste det även finnas ett effektsteg för trefas, som kan driva BLDC-motorns tre faser för att få den att snurra.
Figur 3: mikrokontroller-serien C2000 från Texas Instruments är utformade för motorstyrningstillämpningar. Bilden visar ett exempel på en tillämpning med mikrokontrollern i mitten och de nödvändiga och valfria kretsarna som krävs för att driva en BLDC-motor. (Bildkälla: Texas Instruments)
Att använda en mikrokontroller för att driva motorn är definitivt intressant, men hur ser en dedikerad hårdvarulösning ut? Låt oss ta en titt på motordrivkretsen A4964KJPTR-T från Allegro MicroSystems
Motordrivkretsen A4964KJPTR-T från Allegro MicroSystems
Motordrivkretsen A4964KJPTR-T från Allegro MicroSystems är en dedikerad BLDC-motordrivkrets som innehåller alla de smarta funktioner som krävs för att driva en motor (figur 4). Kretsen är särskilt utformad för fordonstillämpningar och för användning med N-kanaliga MOSFET:ar och har en sensorlös start och kommutation, vilket innebär att den kräver en minimal mängd extern hårdvara. A4964KJPTR-T arbetar även med ett stort antal spänningar, från 5,5 till 50 V, vilket omfattar nästan alla standardtillämpningar och även fordonssystem.
Den kanske mest intressanta funktionen hos A4964KJPTR-T är att den kan anslutas till en mikrokontroller eller en elektronisk centralenhet (ECU) via SPI (seriellt gränssnitt för kringutrustning) för att konfigurera de olika registren för motordrift. Självklart behöver mikrokontrollern inte vara lika kraftfull som den som kör algoritmerna för motorstyrning.
Figur 4: BLDC-motordrivkretsen A4964KJPTR-T kan arbeta från 5,5 till 50 V och har sensorlös start och kommutation. Motorhastigheten kan konfigureras via SPI eller via en dedikerad PWM-signal. (Bildkälla: Allegro MicroSystems)
Eller, och detta är den intressanta delen, kan motorhastigheten i A4964KJPTR-T även drivas utan SPI genom att helt enkelt tillhandahålla en pulsbreddsmodulerad signal (PWM). Det finns ett icke-flyktigt minne där inställningarna för motorn kan lagras, som läses in när strömmen slås på, vilket gör att det endast är en PWM-signal som styr motorn.
Ur ett konfigurationsperspektiv har A4964KJPTR-T 32 adresserbara 16-bitarsregister plus ett statusregister. Statusregistret är unikt eftersom de första fem bitarna överförs under varje läs- och skrivoperation via SPI, vilket gör det möjligt för programvaran att utföra en generell kontroll av statusen för att se om det finns några fel eller problem. Alla statusregister kan läsas vid skrivoperationer till kretsen eftersom ingen information överförs tillbaka från A4964KJPTR-T.
Bland de 32 adresserbara registren finns även två specialregister. Register 30 är skrivskyddat och register 31 är får endast läsas. Det skrivskyddade registret gör det möjligt för en utvecklare att ställa in behovsinmatningen, eller den arbetscykelhastighet som motorn ska drivas med, med ett värde från 0 till 1023. Information i det skrivskyddade registret ändras baserat på den begärda information som skrivs till register 29, registret för val av återläsning. Detta register gör det möjligt att hämta en stor mängd telemetriinformation, t.ex:
- Diagnostik
- Motorhastighet
- Genomsnittlig matningsström
- Matningsspänning
- Kretstemperatur
- Behovsinmatning
- Tillämpad topp för bryggans driftcykel
- Tillämpad fasförskjutning
Utöver dessa specialregister gör de återstående 30 registren det möjligt att justera den specifika motortillämpningen och tillåta att fel aktiveras eller inaktiveras, t.ex. strömbegränsning och fel i grindstyrningen.
Dedicerade motordrivkretsar är intressanta eftersom de sammanfattar allt som måste konfigureras för att driva motorn i några dussin konfigurationsregister. Detta innebär att man avlägsnar all onödig programvara som annars skulle finnas på en mikrokontroller, och kanske ännu viktigare är att man kan minska kostnaderna för programvaruutveckling och underhåll drastiskt. Att driva BLDC:n handlar då inte om något annat än att skicka en PWM som inte kan ha något överskott i en mikrokontroller, eller att aktivera motorbiten och tillhandahålla en SPI-baserad för att få BLDC:n att snurra.
Tips och tricks för att använda A4964KJPTR-T
A4964KJPTR-T är ganska enkel att ansluta till, men det finns flera "tips och tricks" som utvecklare bör ha i åtanke för att förenkla och påskynda utvecklingen, som exempelvis:
- Statusregistret returneras via SPI-gränssnittet vid varje skrivning till kretsen och är inte tillgängligt som ett dedicerat, adresserbart register. Det innebär att drivkretsens kod måste övervaka SPI-bussens SDO-linje vid skrivning till kretsen för att hämta statusinformation.
- Felinformation ingår i statusregistret, men en översikt över kretsens status finns tillgänglig i de första fem bitarna av varje SPI-transaktion mikrokontrollern tillhandahåller information via adressåtkomst. Uppgifterna kan användas för att avgöra om några problem har uppstått.
- Det finns två unika register i minneskartan som är endast läs- och skrivskyddade. Detta är enkelt, men var försiktig så att du inte försöker läsa från det skrivskyddade registret, eftersom detta kommer att skriva in den dummy-data som används i registrets läsningssekvens.
- Kretsen har ett icke-flyktigt minne som kan användas för att lagra standardparametrar. Parametrarna läses in i RAM-minnet och används vid start. Programmer "säkra" startvärden i kretsen, för att se till att kretsen startar i redo-läge så effektivt som möjligt.
- Om slutenheten arbetar i en miljö med mycket störningar eller strålning är de en bra idé att utforma programkoden så att konfigurationsuppgifterna regelbundet bekräftas med jämna mellanrum. Kretsens konfiguration lagras i RAM-minnet, vilket innebär att den är sårbar för kosmisk strålning, bitfel och alla de där roliga, sällsynta händelserna som kan inträffa med elektronik.
Sammanfattning
BLDC-motorer för bilar, IoT och andra tillämpningar är ganska vanliga, men det kan vara komplicerat att driva dem. För att hantera mjukvarans komplexitet kan utvecklare använda en dedikerad BLDC-motordrivkrets, som exempelvis A4964KJPTR-T, som kapslar in all funktionalitet för motorstyrning.
Det krävs fortfarande programvara för att interagera med kretsen, men den mikrokontroller som kör programvaran behöver bara ställa in konfigurationsinställningarna, så tar A4964KJPTR-T hand om att driva motorn. Utvecklare som följer de tillhandahållna "tipsen och tricksen" kommer att upptäcka att de besparar sig en hel del tid och frustration när de försöker utveckla en IoT-produkt.
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.




