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).
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.
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.
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.
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.
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.
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.
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.
La Tabella 2 illustra, invece, le fasi da utilizzare in corrispondenza delle possibili posizioni del motore.
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.
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.
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.
nel controllo motore a livello generale restano due fermi punti: garantire un valore costante per il numero di giri, assicurare una conformità meccanica per evitare perdite di coppia (vedi robot).
Ciao Maurizio,
per quanto riguarda i motori DC BL per bici elettriche con motore su ruota posteriore che tipo di sensori vengono montati? I primi forse? il limite di 25 km/h imposto per legge si ottiene limitando la corrente di alimentazione del motore attraverso un opportuno controllo PWM dell’inverter?
Ciao, Sensori Hall dovrebbero essere. Si limitando la corrente del driver.
un saluto a tutti 🙂