Controllo di motori brushless

I brushless DC sono una particolare tipologia di motori sincroni che garantiscono un movimento estremamente preciso a differenza di quelli brushed (con spazzole). Si esaminerà la serie di microcontrollori PIC18Fxx31 della Microchip che fornisce tutti gli strumenti (PCPWM, Quadrature Encoder, ADC ad elevata velocità) per sviluppare applicazioni in tal senso con un time-to-market drasticamente ridotto.

Introduzione

La sigla BLDC (Brushless DC) indica un motore elettrico a magneti permanenti e senza spazzole. A differenza di uno a spazzole, non ha bisogno di contatti elettrici striscianti sull’albero motore per funzionare. La commutazione tra il rotore e lo statore del motore, infatti, non avviene per via meccanica, ma elettronicamente. Ciò comporta minore resistenza meccanica, evita la formazione di scintille al crescere della velocità di rotazione e riduce notevolmente la necessità di manutenzione periodica. In un motore  brushed,  il contatto  meccanico delle spazzole con quelli elettrici sul rotore chiudono il circuito tra l’alimentazione e l’avvolgimento del rotore (figura 1).

Figura 1. Un motore brushless (in figura un dettaglio dello statore) funziona mediante controllo elettronico e non meccanico. Non utilizzando contatti elettrici striscianti riduce la resistenza meccanica, la formazione di scintille e la necessità di manutenzione

Figura 1: Un motore brushless (in figura un dettaglio dello statore) funziona mediante controllo elettronico e non meccanico. Non utilizzando contatti elettrici striscianti riduce la resistenza meccanica, la formazione di scintille e la necessità di manutenzione

Il rotore e le spazzole producono una corrente che cambia continuamente direzione, invertendo il campo magnetico. In un motore  brushless, l’inversione di corrente è ottenuta elettronicamente, tramite un banco di transistor di potenza (generalmente si tratta di IGBT) comandati da un microcontrollore. Il problema principale nel loro pilotaggio consiste nel conoscere la posizione esatta del motore. Solo in questo modo il controller può sapere quale fase azionare. La posizione del rotore rispetto allo statore viene ottenuta solitamente usando un sensore ad effetto Hall oppure uno di tipo ottico. Il primo vantaggio riguarda la vita attesa del motore, dato che le spazzole sono il “tallo d’Achille” di un motore in corrente continua. In questo modo si elimina anche la principale fonte di rumore elettromagnetico. Il rapporto ingombro/potenza risulta molto basso, pari a quello di un motore a combustione interna di piccola cilindrata. In termini di efficienza, i motori brushless sviluppano molto meno calore rispetto ad un equivalente motore in corrente alternata, grazie alla riduzione degli attriti. Gli avvolgimenti sullo statore inoltre hanno una buona capacità di dissipazione  e  permettono  di  costruire  motori “lisci” senza alette dissipatrici. L’assenza di scintille  è  fondamentale  quando  il  motore  opera  in ambienti saturi di composti chimici volatili come i carburanti. In questo tipo di motori i magneti sono posizionati sul rotore e sono realizzati con speciali materiali che permettono di avere un’inerzia rotorica molto bassa. Questo assicura un controllo estremamente preciso sia in velocità che in coppia, con accelerazioni e decelerazioni brusche e precise.

Queste caratteristiche li rendono adatti all’utilizzo nei lettori CD/DVD, stampanti, robots ma  anche,  nelle  versioni  più  grandi  (fino  a 100kW), nell’aeromodellismo, nei veicoli elettrici, nei compressori per condizionatori. Movimenti così precisi sarebbero impensabili con semplici motori brushed DC. Il principale svantaggio risiede nel maggiore costo. Al contrario dei motori a spazzole, infatti, il controllo viene effettuato elettronicamente con un circuito integrato; per questo non è solitamente possibile utilizzare un potenziometro od un reostato, che sarebbero estremamente economici. La Tabella 1 propone  un confronto  tra i motori BLDC e quelli con spazzole, riassumendone vantaggi e svantaggi.

Tabella 1. Confronto tra le prestazioni dei motori BLDC e brushed

Tabella 1: Confronto tra le prestazioni dei motori BLDC e brushed

Per tutti gli appassionati e non di questa tipologia di motori, Microchip fornisce un grande aiuto nella progettazione del controller grazie ai micro della serie PIC18Fxx31. Si vedrà quali sono le periferiche indispensabili per ottenere un controllo semplice ma al contempo efficiente dei BLDC.

PRINCIPI OPERATIVI E REALIZZATIVI

I motori BLDC sono un tipo particolare di motore sincrono. Questo significa  che  il campo magnetico generato dal rotore e dallo statore presentano la stessa frequenza. I BLDC si suddividono in tre categorie: a singola fase, a 2 fasi e a 3 fasi. Il numero di fasi corrisponde al numero di avvolgimenti presenti sullo statore. Il rotore è realizzato con magneti permanenti il cui numero può variare tra due e dieci coppie di poli con alternanza Nord(N) e Sud(S); la Figura 2 mostra la sezione trasversale di alcuni tipi di rotori.

Figura 2. Sezione magnetica del rotore di un motore brushless. (a) Rotore con magneti sulla periferia; (b) Rotore con magneti incorporati; (c) Rotore con magneti inseriti. I materiali utilizzati possono essere ferrite o leghe. La prima scelta risulta più economica, la seconda consente di contenere le dimensioni

Figura 2: Sezione magnetica del rotore di un motore brushless. (a) Rotore con magneti sulla periferia; (b) Rotore con magneti incorporati; (c) Rotore con magneti inseriti. I materiali utilizzati possono essere ferrite o leghe. La prima scelta risulta più economica, la seconda consente di contenere le dimensioni

A seconda della densità del campo magnetico richiesta, sono utilizzati materiali appropriati come ferrite o leghe. Diversamente dai motori brushed, la commutazione di un BLDC è controllata elettronicamente. Per ruotarlo, gli avvolgimenti dello statore (normalmente collegati a stella tra loro) devono essere energizzati in una ben precisa sequenza (ogni sequenza è costituita da 6 step).  È  importante, perciò, conoscere la posizione del rotore in ogni istante. Questa è rilevata, generalmente, usando sensori ad effetto Hall che sono incorporati all’interno dello statore. La maggior parte dei motori hanno tre sensori Hall. Se i poli magnetici  del  rotore  passano vicino questi sensori, essi danno un segnale alto o basso a seconda che sia passato un polo N oppure un polo S. La Figura 3 illustra il concetto appena esposto.

Figura 3. Il controllo della posizione in un motore brushless è ottenuto tramite sensori ad effetto Hall. La lettura del sensore da parte del micro permette di attuare il giusto movimento sugli avvolgimenti

Figura 3: Il controllo della posizione in un motore brushless è ottenuto tramite sensori ad effetto Hall. La lettura del sensore da parte del micro permette di attuare il giusto movimento sugli avvolgimenti

I sensori richiedono una sorgente di alimentazione che può variare tra 4V e 24V. Mentre la corrente  richiesta,  normalmente,  non  supera i 15mA. L’uscita del sensore è di tipo open-collector, perciò sono richiesti dei resistori di pull up sul controller.

I PIC18FXX31 PER  COMANDARE MOTORI BLDC

La serie 18Fxx31 dei PIC presenta molte periferiche utili per applicazioni di controllo motori. Nel presente articolo se ne discuteranno le più importanti. In base alle esigenze esistono i modelli 18F2331, 18F2431, 18F4331, 18F4431; oltre che per il package (28-pin e 40-pin), essi si differenziano  anche per  la quantità  di  memoria on-board (8kB e 16kB).

Controllo con sensori Hall

La Figura 4 mostra l’interfaccia hardware, basata su PIC, usata per il controllo di un motore BLDC.

Figura 4. Controllo di un motore brushless attraverso sensori ad effetto Hall e microcontrollore PIC.

Figura 4: Controllo di un motore brushless attraverso sensori ad effetto Hall e microcontrollore PIC.

I sensori Hall servono per la commutazione; essi possono essere connessi sia ai pin di “Interrupt on Change” del PIC (porta C) sia ai pin di input del modulo Motion Feedback. Opzionalmente, il Timer 5 può catturare ogni transizione, permettendo di determinare la velocità alla quale il motore gira. La risoluzione che  assicura questo  metodo  risulta, comunque,  ridotta.  Per il  calcolo  della  velocità usando il Timer 5 è sufficiente conoscere la frequenza del master clock, il valore del prescaler ed il numero di coppie di poli del rotore. La formula sarà quindi la seguente (con la velocità espressa in giri al minuto):

Per variare la velocità del motore è utilizzato un potenziometro collegato sul canale AN0. In questo modo sarà effettuata una conversione da analogico a digitale della  posizione  del potenziometro. Un  parametro  fondamentale nel controllo dei BLDC è, ovviamente, la velocità. Il modulo usato in questo caso è il PCPWM. La principale caratteristica  che lo differenzia dal classico  modulo  PWM  (presente su altri modelli di PIC) è la presenza del registro OVDCOND. Quando un bit  di tale registro è impostato ad “1”,  la corrispondente uscita del PWM diventa attiva e viceversa. La Figura 5 mostra il tipico collegamento a stella di un motore BLDC a tre fasi; esiste una sequenza ben precisa per muovere il motore in una certa direzione.

Figura 5. Collegamento a stella degli avvolgimenti di un BLDC a tre fasi. Gli interruttori sono chiusi alternativamente in modo da determinare il movimento

Figura 5: Collegamento a stella degli avvolgimenti di un BLDC a tre fasi. Gli interruttori sono chiusi alternativamente in modo da determinare il movimento

La Figura 6 mostra come è semplice implementare questo sistema utilizzando il registro OVDCOND messo a disposizione per il modulo PCPWM. Per energizzare gli avvolgimenti H3 ed L2, per esempio, è sufficiente impostare OVDCOND = 00100100.

Figura 6. Utilizzo per registro OVDCOND per il controllo delle uscite del PCPWM

Figura 6: Utilizzo per registro OVDCOND per il controllo delle uscite del PCPWM

Per attuare la variazione della velocità è necessario agire sul duty cycle di ciascun PWM. Per incrementare  la  velocità,  è  necessario  aumentare  il duty-cycle.  Il concetto è ulteriormente chiarito dal diagramma di flusso in Figura 7.

Figura 7. Diagramma di flusso per il controllo della velocità del motore

Figura 7: Diagramma di flusso per il controllo della velocità del motore

La Tabella 2 illustra, invece, le fasi da utilizzare in corrispondenza  delle possibili posizioni del motore.

Tabella 2. Per comandare un motore brushless è indispensabile conoscere la posizione tramite i sensori Hall. Nota la posizione è possibile energizzare di conseguenza gli avvolgimenti. La tre fasi sono specificate in Figura 5

Tabella 2: Per comandare un motore brushless è indispensabile conoscere la posizione tramite i sensori Hall. Nota la posizione è possibile energizzare di conseguenza gli avvolgimenti. La tre fasi sono specificate in Figura 5

Fondamentalmente, è necessario controllare se ci sono variazioni da parte dei sensori Hall, quindi modificare di conseguenza il registro OVDCOND; inoltre, bisogna verificare eventuali  variazioni  di  velocità  per adattare il duty-cycle. Il controllo  della posizione del motore e l’attuazione della corrispondente fase devono essere eseguire nel più  breve tempo possibile. Il Listato 1 riposta le istruzioni assembler per caricare in RAM i valori che saranno poi trasferiti nel registro OVDCOND al fine di velocizzare il controllo del motore. In questo modo l’operazione di attuazione del movimento, da parte del micro, sarà più celere.

#define MOTOR_RATED_SPEED ‘3500’
#define MAX_SPEED_REFERENCE ‘256’
SPEED_REF_RATIO = MOTOR_RATED_SPEED* 0xFF / MAX_SPEED_REFERENCE

CALCULATE_SPEED_REF
MOVLW LOW(SPEED_REF_RATIO)
MULWF SPEED_REFH           ;SPEED_REF_RATIO * velocità letta dal pot.
MOVFF PRODH,TEMP           ;da ADC (SPEED_REFH = 8 MSB’s)
MOVLW HIGH(SPEED_REF_RATIO)
MULWF SPEED_REFH           ;Per semplicità sono utilizzati soltanto gli 8 MSB
MOVF PRODL,W
ADDWF TEMP,F
CLRF WREG
ADDWFC PRODH, W                 ;Gli 8 LSB sono scartati
MOVWF SPEED_REF_RPMH            ;Il riferimento di velocità è caricato in:
MOVFF TEMP,SPEED_REF_RPML  ;SPEED_REF_RPM<H:L>

RETURN
Listato 1

Controllo ottico

Per applicazioni in cui è richiesta una risoluzione superiore per la misura della velocità si può ricorrere al modulo QEI, che fornisce anche posizione e verso di rotazione. Il suo schema a blocchi è mostrato in Figura 8.

Figura 8. Schema a blocchi dell’interfaccia Quadrature Encoder del PIC per il controllo ottico di motori BLDC. Questo metodo assicura una precisione maggiore rispetto all’uso dei sensori ad effetto Hall

Figura 8: Schema a blocchi dell’interfaccia Quadrature Encoder del PIC per il controllo ottico di motori BLDC. Questo metodo assicura una precisione maggiore rispetto all’uso dei sensori ad effetto Hall

Il QEI permette di implementare un tipo di controllo alternativo ai sensori ad effetto Hall. Si utilizza una doppia corona circolare, come quella mostrata in Figura 9, che presenta un’alternanza di zone chiare e di zone opache.

Figura 9. La doppia corona circolare utilizzata negli encoder a quadratura

Figura 9: La doppia corona circolare utilizzata negli encoder a quadratura

Tra le due corone esiste uno sfasamento di 90°. Si usano, inoltre, un laser ed un ricevitore ottico per ciascuna corona, posizionati su punti fissi del motore. Ne risultano due treni di impulsi (‘1’ in corrispondenza di zone chiare e ‘0’ per quelle scure) il cui sfasamento reciproco fornisce l’informazione sul senso di rotazione, mentre la frequenza di uno dei due (è indifferente quale) caratterizza la velocità di rotazione.

 

3 Commenti

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 18 dicembre 2017
  2. Stefano Da Lio 25 ottobre 2018

Scrivi un commento

EOS-Academy
Abbonati ora!