Controllo motore con micro 2000

Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. Questo articolo descrive come realizzare un controllo di range elettrico utilizzando un circuito elettronico estremamente low-cost. Questa soluzione elimina tutti i problemi che invece presenta una soluzione elettro-meccanica. L’esempio di applicazione è quello di un termostato per fornello elettrico.

Introduzione

Rispetto ai tempi in cui le MCU utilizzavano le semplici commutazioni per realizzare un controllo motore, i tempi sono cambiati così come le MCU. Attualmente sul mercato ci sono moltissimi prodotti che consentono di realizzare controlli motore in maniera efficace ed economica. Alla base di tutto, c'è l’utilizzo di algoritmi di controllo estremamente complessi che controllano accelerazione, velocità e posizione in maniera molto accurata, permettendo di ottenere la massima coppia, efficienza energetica e massima precisione abbassando i costi. In questo articolo ci concentreremo in particolare sulla famiglia di microcontrollori di Texas Instruments, la TMS320C2000, composta da moltissimi prodotti per tutte le tasche e applicazioni, ma soprattutto in grado sulla carta di realizzare qualsiasi tecnica di controllo motore.

MOTORI AD ALTE PRESTAZIONI

I motori monofase (o universali), i DC a spazzole e gli stepper sono i più utilizzati nelle applicazioni dove sia richiesto l’uso di un motore, principalmente per il loro costo e la semplicità del controllo. Tuttavia, per applicazioni dove performance ed efficienza sono un punto chiave, esiste la possibilità di sfruttare meccanismi di controllo più complessi ma più intelligenti che giustificano il passaggio a motori più costosi, come per esempio motori AC trifase ad induzione (ACI), motori DC Brushless (BLDC) e motori sincroni a magneti permanenti (PMSM). I motori ACI sono estremamente robusti e sono utilizzati nell’industria del bianco, per movimentare pompe, ventole e compressori. In questi motori il flusso dello statore interno è controllato variando la corrente fornita, di conseguenza viene indotto anche il flusso sul rotore (in questo motore non sono presenti magneti). La coppia si determina dall’angolo tra il flusso di rotore e quello di statore. I motori ACI sono di tipo asincrono, i vettori di campo dello statore e del rotore ruotano a velocità differenti. Il loro beneficio maggiore è di offrire un eccellente controllo di velocità e di coppia, un costo relativamente basso se l’applicazione prevede di operare ad elevate velocità. Lo svantaggio principale è la complessità del feedback e del meccanismo di controllo per mantenere una efficienza elevata per velocità variabili o molto basse. Al contrario, i BLDC e i PMSM sono motori sincroni, il flusso di statore è controllato variando la corrente, ma il flusso di rotore viene mantenuto costante da un magnete permanente o da avvolgimenti alimentati in corrente. L’angolo tra i flussi di rotore e statore determina la quantità di coppia generata, e la rotazione del rotore è alla stessa frequenza del campo dello statore. Per i motori sincroni la posizione può essere misurata o stimata per ottenere la sincronizzazione e un controllo ottimale.

Per questo, il loro impiego ottimale è in sistemi di posizionamento estremamente accurati. I motori BLDC e PMSM differiscono per il numero di stati utilizzati per controllare la posizione. Un motore BLDC trapezoidale ha sei stati rispetto al controllo continuo richiesto da un PMSM sinusoidale (Figura 1). Più stati abbiamo, più il controllo della posizione risulta accurato, più stati di controllo significa più complessità e capacità di processamento necessaria. I BLDC sono ottimali per applicazioni come automazione, trazione, precisione e industria del bianco, dove le coppie richieste sono medie e il controllo deve essere efficiente e affidabile. In più, il vantaggio di non avere le spazzole elimina la necessità di manutenzione e riduce le EMI. Su questi prodotti le nuove tecnologie stanno evolvendo fornendo prodotti più economici in grado di erodere settori di mercato ai motori DC a spazzole. Anche applicazioni storicamente destinate ai motori ACI come per esempio il controllo di ventole, stanno passando ai motori BLDC per l’esigenza di velocità variabili o ridotte. Pilotare i motori brushless DC attraverso le commutazioni è piuttosto semplice e consente di risparmiare sul progetto del motore e sull’elettronica di controllo. I motori PMSM rispetto ai BLDC consentono di ottenere una accuratezza migliore sul controllo di posizione, lavorando a velocità più elevate e coppie maggiori. L’utilizzo è tipico nei settori del controllo della trazione, automazione di precisione, robotica, e per i veicoli ibridi ed elettrici. Il vantaggio di utilizzare i PMSM deriva dalla coppia ottenibile e dalle velocità elevate, dal poter lavorare con avvolgimenti dal costo basso e dal basso rumore prodotto. Il metodo di controllo di tipo sinusoidale continuo aiuta sotto l’aspetto del rumore prodotto e della reattività alle variazioni del carico.

Figura 1: BLDC Vs PMSM

Figura 1: BLDC Vs PMSM

METODI DI CONTROLLO

Per i motori ACI, il metodo di controllo più popolare è quello scalare detto anche tensione-frequenza poiché richiede un basso costo dell’elettronica e un controllo semplice. La velocità del motore si controlla semplicemente aumentando o diminuendo la frequenza dell’onda sinusoidale utilizzata per pilotare il motore, senza curarsi di controllare corrente e coppia. Questa tecnica ha delle performance dinamiche abbastanza scadenti, una risposta lenta ai cambiamenti e la possibilità di avere overshoot in corrispondenza del set point. In più, la coppia fornita non è efficiente a velocità basse e alte e le perdite interne a bassa velocità disperdono una notevole quantità di energia. Il metodo di controllo ad orientamento di campo (FOC), può essere usato sia per i motori ACI che per i PMSM e permette un ottimo controllo per qualsiasi range di coppia e velocità (Figura 2).

Figura 2: Confronto tra il metodo tensione-frequenza e il metodo FOC

Figura 2: Confronto tra il metodo tensione-frequenza e il metodo FOC

Il metodo FOC consente di rispondere velocemente ai cambiamenti di set point o di carico e permette di arrivare a controllare anche velocità bassissime. Poiché il metodo prevede un controllo in corrente, l’inverter di potenza può essere ottimizzato riducendo il costo e dimensionando in maniera appropriata il motore in base all’applicazione. Bisogna però considerare che implementare il controllo FOC è più complicato, richiede la misura dell’angolo tra rotore e statore, così come il controllo indipendente di flusso e coppia in real time. Ci sono diversi modi comunemente utilizzati per creare un feedback di misura dell’angolo e della velocità, essenzialmente si distinguono in base all’utilizzo di sensori o meno. L’utilizzo di sensori aumenta il costo e il numero di componenti del sistema, ma sono necessari se si vuole ottenere una precisione elevata. In alternativa, i metodi sensorless richiedono del software e delle risorse di processamento per modellare il motore (stimare angolo e velocità) utilizzando solamente le misure real-time di corrente e tensione. Una volta calcolato o stimato l’angolo e la velocità, l’anello di retroazione è regolato in maniera tale da controllare velocità, posizione/angolo, corrente, flusso e coppia. Per i motori ACI si possono utilizzare dei tachimetri che producono un'onda quadra proporzionale alla velocità. Per i motori PMSM si possono utilizzare degli encoder o dei resolver per tracciare la posizione e calcolare la velocità misurando gli spostamenti nel tempo. Un approccio sensorless richiede invece la misura della tensione delle fasi e della corrente di almeno due su 3 fasi.

Una trasformata matematica consente di ricavare l’angolo di fase e successivi calcoli di stimare velocità e flusso modellando lo specifico motore (sliding mode, MRAS, etc…). Per i motori BLDC si può scegliere tra un controllo trapezoidale o sinusoidale, il primo è il più diffuso per la semplicità e per il basso costo richiesto per l’implementazione. Il metodo sinusoidale offre un migliore controllo della coppia e un minore rumore elettrico. Questo punto non è da sottovalutare poiché l’interferenza elettromagnetica può introdurre instabilità in tutto il sistema e ridurre le performance complessive del prodotto. Gli sviluppi delle moderne MCU rendono oggi possibile implementare un controllo sinusoidale dove un tempo si utilizzava un controllo trapezoidale, migliorando precisione ed efficienza. Per entrambi i tipi di controllo, una rete di retroazione è necessaria per controllare posizione, velocità e, per il controllo di coppia, la corrente. Velocità e posizione possono essere misurati con un sensore o possono essere calcolati controllando la tensione elettromotrice inversa (Back EMF) delle tre fasi per contare la sequenza degli stati e dei giri (posizione), la velocità si ricava dal variare della posizione nel tempo. La misura di corrente viene solitamente effettuata per questioni di costo e affidabilità.

CONTROLLO MOTORE CON LA FAMIGLIA C2000

Le MCU della famiglia C2000 possono essere una piattaforma comune che permette di implementare qualsiasi tipologia di controllo motore. Si parte dalla famiglia Piccolo™, entry-level, fino alla famiglia Delfino™ che lavora fino a 300MHz in floating point. Quello che questa famiglia offre sono le capacità di un DSP in una architettura da microcontrollore, frequenze operative da 40 a 300 MHz e una serie di feature hardware che consentono di accelerare l’esecuzione del codice, come una MAC da 32x32 bit a singolo ciclo, una pipeline da 8 livelli e altre funzioni tipiche dei DSP. Come opzioni si può avere una unità floating point o un Control Law Accelerator per processare in maniera parallela senza pesare sulla CPU un anello di retroazione di tipo FOC, per esempio. La famiglia C2000 offre un sistema di interrupt flessibile e dalla risposta rapida e la possibilità di eseguire il debug real time in maniera non intrusiva, grazie all’integrazione della feature nel silicio. Questo aspetto non è da trascurare, infatti. quando il codice si ferma ad un breakpoint anche l’anello di retroazione si interrompe smettendo di pilotare il motore. Gli sviluppatori devono quindi utilizzare un debug monitor che lavora in parallelo al controllo motore e il cui codice viene poi rimosso al momento del rilascio del prodotto. Questo problema è superato per la famiglia C2000 grazie al circuito di Real Time Debug integrato che permette agli sviluppatori l’accesso diretto alle risorse interne della MCU. In particolare, si possono interrompere le parti non critiche del codice e accedere a memoria e registri mentre gli interrupt real time continuano ad essere gestiti, inoltre, la realizzazione hardware non impiega risorse della CPU, rendendo il sistema non intrusivo. Per i vari prodotti della famiglia esiste un corredo di periferiche molto vasto, composto da ADC ad elevate prestazioni, PWM, interfacce sensore integrate, e le interfacce di comunicazione più diffuse (CAN, LIN, SPI, I2C e UART).

SOFTWARE PER IL DESIGN

L’ambiente di sviluppo software per la famiglia C2000 si chiama ControlSUITE ed è stato studiato per minimizzare i tempi di sviluppo. Include driver di periferica, API, utilità e librerie utilizzate per gli esempi e per la costruzione di framework di sistema su hardware open source. Uno dei componenti della ControlSUITE è la libreria DMC (Digital Motor Control) e i relativi esempi. Questa libreria è composta da funzioni rappresentate come blocchi, i vari blocchi sono raggruppati in categorie, ci sono trasformate e stime (Clarke, Park, Sliding Mode Observer, Phase Voltage Calculation, Resolver, Flux, Speed Calculators, Estimators) , controllo (Signal Generation, PID, BEMF Commutation, Space Vector Generation) e infine driver di periferica (PWM, ADC, motor-sensor interfaces). Ogni blocco è una macro software modulare con ingressi e uscite variabili, il tutto documentato con sorgenti, utilizzo e teoria. Negli esempi forniti da TI si va semplicemente ad inizializzare le variabili di libreria e le uscite di un blocco sono poste in ingresso al successivo.

A run time le funzioni dei vari blocchi sono chiamate in ordine. Questo permette anche di costruire il controllo in maniera incrementale, verificando ogni singola sezione dell’applicativo. Per esempio, in Figura 3 si può vedere un sistema FOC sensorless per motore PMSM. In un primo step si utilizza un segnale simulato e si verifica se la trasformata inversa di Park, i vettori e i driver PWM producono la corretta forma d’onda. Nel secondo step, si verifica la conversione ADC, il calcolo della fase della tensione e le trasformate di Park e Clark. Al passo 3 si verifica l’anello di retroazione PID per la corrente e al passo 4 si verifica lo Sliding Mode Observer e la stima della velocità. Infine, al passo 5 si verifica l’anello di retroazione PID per il controllo di velocità. TI per semplificare il progetto di algoritmi complessi mette a disposizione anche la potentissima libreria IQMath per la quale si può selezionare il range numerico e la risoluzione selezionando quali bit della rappresentazione sono Interi (I) e quali sono Quozienti (Q). Quando si utilizza una MCU fixed point è lo sviluppatore a diventare responsabile della gestione del punto decimale. Se per vari motivi, come per esempio il cambio di piattaforma, potrebbe rendersi necessario spostare il punto digitale per aggiustare il range, sarà la libreria a gestire il tutto, facilitando anche il passaggio da fixed point a floating point, se necessario.

Figura 3: Passo 1 e passo 5 per lo sviluppo di un sistema FOC sensorless per motore PMSM.

Figura 3: Passo 1 e passo 5 per lo sviluppo di un sistema FOC sensorless per motore PMSM

CONCLUSIONI

L’implementazione di tecniche di controllo motore complesse richiede operazioni matematiche complicate, da questo punto di vista i dispositivi C2000 eseguono queste operazioni in maniera estremamente veloce, lasciando spazio alle altre funzioni da eseguire. Questa particolarità permette di scrivere anche un codice modulare che, seppur non il massimo dal punto di vista delle performance (compensate dall’hardware), potrebbe avere il vantaggio della portabilità e del riutilizzo. Il tempo risparmiato nel processamento potrebbe essere utilizzato per implementare altre funzionalità significative per l’applicazione, come per esempio la correzione del fattore di potenza (PFC), anziché demandarlo ad un chip dedicato lo si può realizzare direttamente con la MCU principale, risparmiando spazio e denaro. Inoltre, non bisogna dimenticare che i vari prodotti della famiglia sono compatibili a livello di codice, in questo modo anche investimenti a lungo termine sul codice a beneficio del riutilizzo e trasversali a più progetti di controllo motore potrebbero risultare una scelta intelligente.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend