Accelerare lo sviluppo di applicazioni di motori BLDC automotive e IoT con il driver per motori A4964KJPTR-T

Di Jacob Beningo

Contributo di Editori nordamericani di DigiKey

I motori c.c. brushless (BLDC) sono sempre più utilizzati in molte applicazioni, dagli apriporta per garage radiocomandati via Internet delle cose (IoT) e dai finestrini delle automobili, ai controller di propulsione satellitare. Il problema che i progettisti devono affrontare con i motori BLDC è che gli algoritmi di controllo necessari per pilotarli sono complessi e spesso specializzati. Questo rende difficile per l'ingegnere medio metterne uno in funzione in un tempo ragionevole.

Gli sviluppatori devono generalmente scegliere tra una soluzione basata su software installato su un microcontroller, che è flessibile ma addossa anche un carico computazionale sul microcontroller o un circuito integrato (CI) dedicato. Quest'ultimo incapsula l'intera funzione di controllo motori BLDC ed elimina il controllo BLDC dall'host.

Questo articolo discute le differenze tra una soluzione software basata su microcontroller e una soluzione con chip hardware dedicato. Spiega poi come utilizzare A4964KJPTR-T di Allegro MicroSystems, un driver per motori progettato per semplificare il controllo di motori BLDC specificamente per le applicazioni automotive. L'articolo mostrerà come interagire con A4964KJPTR-T e alcune best practice per evitare comportamenti inaspettati.

Una (molto) breve introduzione ai motori BLDC

I motori BLDC forniscono un'efficiente erogazione di coppia su un ampio intervallo di velocità, sono silenziosi e non soffrono dell'attrito meccanico tipico dei motori a spazzole. I motori BLDC sono controllati dalla corrente, non dalla tensione, il che permette loro di essere utilizzati in un'ampia varietà di applicazioni in una grande varietà di forme, dimensioni e livelli di prezzo.

Ad esempio, QBL4208-41-04-006 di TRINAMIC Motion Control è un motore a 24 V, 4000 giri al minuto (RPM) che fornisce coppie fino a 0,06 Nm (Figura 1). Il motore è leggero (0,3 kg) e dà allo sviluppatore diverse opzioni per il controllo motore, ad esempio attraverso il funzionamento senza sensori utilizzando la forza controelettromotrice (f.c.e.m.) o utilizzando sensori integrati che indicano la posizione.

Immagine del motore BLDC a 24 V, 4000 giri/min QBL4208-41-04-006 di TrinamicFigura 1: QBL4208-41-04-006 è un motore BLDC a 24 V, 4000 giri/min che può fornire poco più di 0,06 Nm di coppia alla massima velocità. (Immagine per gentile concessione di TRINAMIC Motion Control GmbH)

Per una coppia maggiore, i progettisti possono usare QBL4208-41-04-025, sempre di TRINAMIC Motion Control (Figura 2). Si tratta di un motore BLDC a 24 V e 4000 giri/min che può fornire poco più di 0,25 Nm di coppia.

Immagine del motore BLDC a 24 V, 4000 giri/min QBL4208-41-04-025 di TRINAMIC Motion ControlFigura 2: QBL4208-41-04-025 di TRINAMIC Motion Control è un motore BLDC a 24 V, 4000 giri/min che può fornire poco più di 0,25 Nm di coppia alla massima velocità. (Immagine per gentile concessione di TRINAMIC Motion Control GmbH)

I motori BLDC sono azionati da linee trifase che generano un campo magnetico che poi spinge contro i magneti permanenti per muovere lo statore e far girare il motore.

In teoria è facile, ma in pratica, pilotare un motore BLDC è abbastanza complicato, e agli sviluppatori non resta che scegliere tra l'utilizzo di una soluzione software per pilotare il motore o di una soluzione con chip dedicato.

Software o chip dedicati?

Gli sviluppatori dovrebbero considerare diversi fattori quando si tratta di decidere come azionare un motore BLDC. Questi fattori si riducono fondamentalmente ai seguenti punti:

  • Costo della distinta base rispetto ai costi di manodopera
  • Complessità della scheda rispetto alla complessità del software
  • Tempo e costi di manutenzione

Dal punto di vista hardware, può essere molto allettante optare per la soluzione software, perché una soluzione con chip dedicato aggiunge costi alla distinta base. Invece di un chip dedicato, gli ingegneri eliminano quel costo, spendono qualcosa in più per un microcontroller e lo caricano con tutti gli algoritmi di controllo. Sembra una soluzione vantaggiosa per tutti, ma i team spesso non considerano tutte le ramificazioni di questa decisione.

Sì, abbassa il costo della distinta base, ma poi pone un ulteriore onere sul microcontroller per elaborare i dati di stato BLDC e pilotare continuamente il motore. Se il microcontroller deve anche campionare altri sensori, parlare con una radio e controllare altri dispositivi, i costi di sviluppo e manutenzione del software potrebbero lievitare se non si fa attenzione.

Detto questo, una soluzione basata su software in un microcontroller può offrire flessibilità in quanto un team può mettere a punto gli algoritmi di controllo motori. Usare una soluzione software non significa anche che le cose debbano essere sempre troppo complicate.

Ad esempio, spostare l'algoritmo di controllo motori nel microcontroller potrebbe occupare più RAM e richiedere molta flash. Tuttavia, se il team utilizza un microcontroller progettato per il controllo motori, come F280049CRSHSR di Texas Instruments, gli algoritmi sono presenti in una libreria che risiede nella ROM del microcontroller. Questo significa che l'unico codice aggiunto all'applicazione sono le chiamate di funzione per accedere alla libreria che si occupa di tutto il resto.

Far girare un motore BLDC non è solo una questione di software, ma anche di hardware. La Figura 3 mostra un'applicazione di esempio utilizzando un microcontroller della famiglia C2000, di cui fa parte F280049CHSR, illustrando tutto ciò che è necessario e opzionale per pilotare un motore BLDC. Oltre a un microcontroller, serve anche uno stadio di potenza trifase che possa pilotare le tre fasi del motore BLDC.

Schema dei microcontroller C2000 di Texas Instruments (fare clic per ingrandire)Figura 3: I microcontroller C2000 di Texas Instruments sono progettati per applicazioni di controllo motori. Questa immagine mostra un'applicazione di esempio con il microcontroller al centro e i circuiti necessari e opzionali per pilotare un motore BLDC. (Immagine per gentile concessione di Texas Instruments)

Usare un microcontroller per pilotare il motore è sicuramente interessante, ma come sarebbe una soluzione hardware dedicata? Diamo un'occhiata al chip del driver per motori A4964KJPTR-T di Allegro MicroSystems.

Il driver per motori A4964KJPTR-T di Allegro MicroSystems

Il chip del driver per motori A4964KJPTR-T di Allegro MicroSystems è un driver per motori BLDC dedicato con tutte le funzioni necessarie per pilotare un motore (Figura 4). Appositamente progettato per applicazioni automotive e per l'uso con MOSFET a canale N, il chip ha un avvio e una commutazione senza sensori, quindi richiede una quantità minima di hardware esterno. A4964KJPTR-T funziona anche su un ampio intervallo della tensione, da 5,5 a 50 V, che copre quasi tutte le applicazioni standard, oltre ai sistemi automotive.

Forse la sua caratteristica più interessante, A4964KJPTR-T può essere interfacciato a un microcontroller o a un'unità di controllo elettronico (ECU) tramite SPI (interfaccia periferica seriale) per configurare i vari registri per il funzionamento del motore. Ovviamente, il microcontroller non ha bisogno di essere così potente come quello che esegue gli algoritmi di controllo motori.

Schema del driver per motori BLDC A4964KJPTR-T di Allegro (fare clic per ingrandire)Figura 4: Il driver per motori BLDC A4964KJPTR-T può funzionare da 5,5 a 50 V e fornisce avvio e commutazione senza sensori. La velocità del motore può essere configurata tramite SPI o tramite un segnale PWM dedicato. (Immagine per gentile concessione di Allegro MicroSystems)

In alternativa, e questa è la parte interessante, la velocità del motore A4964KJPTR-T può anche essere pilotata senza SPI fornendo semplicemente un segnale a modulazione della larghezza di impulso (PWM). Nella memoria non volatile possono essere memorizzate le impostazioni per il motore caricate all'accensione, permettendo così al solo segnale PWM di controllare il motore.

Dal punto di vista della configurazione, A4964KJPTR-T ha 32 registri indirizzabili a 16 bit, più un registro di stato. Il registro di stato è unico in quanto i primi 5 bit sono trasmessi durante ogni operazione di lettura/scrittura su SPI, il che permette al software di controllare lo stato generale e rilevare eventuali guasti o problemi. Tutti i registri di stato possono essere letti durante le operazioni di scrittura sul chip, poiché nessun dato viene ritrasmesso da A4964KJPTR-T.

I 32 registri indirizzabili contengono anche due registri speciali. Il registro 30 è di sola scrittura e il registro 31 è di sola lettura. Il registro di sola scrittura permette allo sviluppatore di impostare la domanda o la velocità del ciclo di lavoro al quale il motore sarà pilotato, su un valore compreso tra 0 e 1023. I dati del registro di sola lettura cambiano in base ai dati richiesti scritti nel registro 29, il registro di selezione della lettura a ritroso. Questo registro permette di recuperare molte informazioni di telemetria ad esempio:

  • Diagnostica
  • Velocità del motore
  • Corrente di alimentazione media
  • Tensione di alimentazione
  • Temperatura del chip
  • Input della domanda
  • Ciclo di lavoro di picco ponte applicato
  • Avanzamento di fase applicato

Oltre a questi registri speciali, i 30 rimanenti permettono di sintonizzare l'applicazione specifica del motore e di abilitare o disabilitare i guasti, come il limite di corrente e i guasti di pilotaggio del gate.

I driver per motori dedicati sono interessanti perché riassumono tutto ciò che deve essere configurato per far funzionare il motore in poche decine di registri di configurazione. Questo elimina qualsiasi sovraccarico del software che altrimenti esisterebbe su un microcontroller, e forse più importante, può ridurre drasticamente i costi di sviluppo e manutenzione del software. Pilotare il BLDC quindi significa inviare un PWM senza sovraccarico a un microcontroller o abilitare il bit del motore e fornire un input di domanda basato su SPI per far girare il BLDC.

Suggerimenti e consigli per l'utilizzo di A4964KJPTR-T

A4964KJPTR-T è abbastanza semplice da interfacciare, ma ci sono diversi "trucchi" che gli sviluppatori dovrebbero tenere a mente per semplificare e accelerare lo sviluppo, tra cui:

  • Il registro di stato è restituito all'interfaccia SPI durante ogni scrittura al chip e non è disponibile come registro dedicato e indirizzabile. Questo significa che il codice del driver deve monitorare la linea SDO del bus SPI mentre scrive sul chip, per ottenere informazioni di stato.
  • Le informazioni sui guasti sono incluse nel registro di stato, ma una panoramica dello stato del chip è disponibile in ogni transazione SPI nei primi cinque bit quando il microcontroller fornisce le informazioni di accesso all'indirizzo. Questi dati possono essere utilizzati per determinare se si sono verificati dei problemi.
  • Ci sono due registri unici di sola lettura e scrittura nella mappa di memoria. Sebbene sia semplice, bisogna fare attenzione a non leggere dal registro di sola scrittura, poiché questo scriverà nel registro qualsiasi dato fittizio utilizzato nella sequenza di lettura.
  • Il chip ha una memoria non volatile che può essere utilizzata per memorizzare i parametri predefiniti. Questi parametri sono caricati nella RAM e utilizzati durante l'avvio. Per assicurare che il chip si avvii in stato pronto nel modo più efficiente, programmate nel chip dei valori di avvio "sicuri".
  • Se il dispositivo finale lavora in un ambiente rumoroso o in presenza di radiazioni, non è una cattiva idea scrivere il codice applicativo per riaffermare periodicamente i dati di configurazione. La configurazione del chip è memorizzata nella RAM, il che significa che è vulnerabile ai raggi cosmici, ai bit-flip (disturbi da evento singolo) e a tutti quei divertenti, rari eventi che possono accadere con l'elettronica.

Conclusione

Le implementazioni di motori BLDC per applicazioni automotive, IoT e di altro tipo sono abbastanza comuni, ma il pilotaggio può essere complesso. Per gestire la complessità del software, gli sviluppatori possono usare un driver per motori BLDC dedicato, come A4964KJPTR-T, che incapsula tutte le funzionalità di controllo motori.

Mentre è sempre necessario il software per interagire con il chip, il microcontroller che esegue il software deve solo impostare i parametri di configurazione e A4964KJPTR-T si occupa di pilotare il motore. Seguendo questi consigli, gli sviluppatori risparmieranno parecchio tempo ed eviteranno grattacapi nell'utilizzo di A4964KJPTR-T.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo è un consulente software embedded e attualmente lavora con clienti in più di una decina di paesi per trasformare radicalmente le loro attività migliorando la qualità dei prodotti, i costi e il time-to-market. Ha pubblicato più di 200 articoli sulle tecniche di sviluppo di software embedded, è un relatore e un istruttore tecnico e ha conseguito tre lauree, tra cui un master in ingegneria presso University of Michigan. Risponde all'indirizzo jacob@beningo.com, ha un sito web personale www.beningo.com e produce una Newsletter mensile Embedded Bytes cui è possibile iscriversi.

Informazioni su questo editore

Editori nordamericani di DigiKey