Controllo motori brushless

In questo articolo analizziamo un’applicazione con microprocessori AVR ATmega32M1 per motori DC brushless.

motori brushless sono idealmente derivati dai motori in DC con il proposito di eliminare il collettore a lamelle e quindi le spazzole. Esistono due tipi di motore brushless: DC o trapezoidali, AC o sinusoidali. In un motore in DC a spazzole, l’avvolgimento rotorico (indotto) è alimentato dall’esterno attraverso le spazzole e le lamelle di collettore. La rotazione del rotore determina lo spostamento relativo delle spazzole sul collettore e la conseguente alimentazione delle spire opportune. Il collettore a lamelle insieme alle spazzole funge da commutatore automatico dell’alimentazione sugli avvolgimenti rotorici. Nel motore brushless il collettore viene sostituito da un commutatore elettronico controllato. Ciò rende possibile lo scambio delle posizioni tra rotore e statore, ovvero il campo viene ora generato da magneti permanenti posti sul rotore, mentre gli avvolgimenti sono realizzati sullo statore (Figura 1).

Figura 1: motore brushless.

Figura 1: motore brushless

Un’evoluzione ha portato alla realizzazione di questa macchina con tre avvolgimenti statorici posti a 120° meccanici. Il brushless trapezoidale ha una magnetizzazione del rotore tale che, una volta posto in rotazione, esso produce sugli avvolgimenti statorici una f.e.m indotta con caratteristiche di profilo trapezoidale. Tale sarà, dunque, il profilo della f.c.e.m. durante l’esercizio della macchina. I tre avvolgimenti statorici, posti a 120° meccanici, vedranno E con i rispettivi ritardi temporali. Alimentando il motore e pilotando opportunamente le correnti I, in modo che siano come nella Figura 2, si nota come in ogni istante il prodotto E*I, equivalente alla potenza meccanica e dunque legato alla coppia, è dovuto a due avvolgimenti per volta ed è costante. Dunque: P = 2*E*I. Il motore per funzionare ha bisogno di un circuito di comando che tenga conto della posizione angolare dell’albero, tramite alcuni sensori (effetto Hall), che vanno correttamente posizionati in fase sullo statore.

Figura 2: correnti e f.c.e.m. in un motore brushless.

Figura 2: correnti e f.c.e.m. in un motore brushless

APPLICAZIONE

Dopo questa breve presentazione teorica dei motori DC brushless, diamo un’idea di una possibile applicazione pratica con l’aiuto di un esempio. La prossima parte di questo articolo si occuperà dell’hardware e software con ATmega32M1 per un’applicazione nei motori DC brushless. Il software include il controllo della velocità attraverso un correttore PID. Tale correttore è composto da tre coefficienti principali: KP (coefficiente proporzionale), KI (coefficiente integrale), e KD (coefficiente derivativo). L’errore tra la velocità desiderata e la velocità reale (Figura 3) viene moltiplicato per ogni guadagno.

Figura 3: PID.

Figura 3: PID

Quindi, la somma dei tre termini fornisce il comando da applicare al motore e ottenere la corretta velocità. ATmega32M1 è stato sviluppato per fornire una soluzione integrata per il motore avanzato per applicazioni di controllo con connettività CAN e LIN. Sulla base del rendimento elevato dell’architettura RISC AVR a 8-bit, ATmega32M1 integra tutte le periferiche di base necessarie per soddisfare le esigenze di algoritmi complessi. Formato da blocchi come ADC 10 bit ed amplificatori differenziali con opzioni di guadagno programmabile, questo tipo di microcontrollore fornisce tutte le funzionalità necessarie per il controllo di motori BLDC nel loro sistema ambientale. ATmega32M1 include ingressi indipendenti di confronto per consentire controllo sensorless in assenza di componenti esterni e tre singoli comparatori disponibili per le misurazioni di campo elettromagnetico. Un ulteriore confronto è disponibile per il rilevamento di correnti. Il suo riferimento può essere fissato con una qualsiasi tensione di riferimento; la frequenza di clock arriva fino a 64 Mhz. Il bit versatile Power Stage Controller, inoltre, genera segnali programmabili per il controllo del motore. Alcune caratteristiche di ATmega32M1:

  • memoria di programma dati e non volatile;
  • memoria Flash programmabile a 32 KB, in-system;
  • EEPROM programmabile a 1024 byte, in-system;
  • fino a 11 canali single ended e 3 coppie di canali ADC totalmente differenziali;
  • guadagno programmabile (5x, 10x, 20x, 40x) sui canali differenziali;
  • tensione di riferimento interna;
  • DAC a 10 bit per riferimento di tensione variabile (comparatori, ADC);
  • timer watchdog programmabile con oscillatore separato on-chip;
  • sensore di temperatura on-chip.

Questa applicazione è stata sviluppata e testata con schede ATAVRMC310 e ATAVRMC300.

La scheda ATAVRMC300 è la scheda di alimentazione, mentre ATAVRMC310 è la scheda processore costruito per ATmega32M1F (Figura 4).

Figura 4: schema hardware generico dell’applicazione..

Figura 4: schema hardware generico dell’applicazione

Come mostrato in Figura 5, il microcontrollore contiene uno Stage Controller (PSC). Il PSC può essere visto come un modulatore di larghezza di impulso con sei segnali in uscita. Un ingresso di guasto (Over_Current) è legato alla PSCIN; questo ingresso consente di disattivare tutte le uscite PSC.

Figura 5: implementazione hardware.

Figura 5: implementazione hardware

È possibile misurare la corrente con un differenziale amplificato a due canali programmabili: 5, 10, 20 e 40 stadio di guadagno. Inoltre, la resistenza di shunt deve essere adatta al range di amplificazione. In Figura 6 osserviamo l’implementazione delle porte I/O del microcontrollore.

Figura 6: microcontroller I/O.

Figura 6: microcontroller I/O

Le uscite UH, UL, VH, VL, WH e WL sono utilizzate per controllare il power bridge che dipende dallo stadio Power Control (PSC), il quale genera segnali PWM. Per tali applicazioni si consiglia la modalità mostrata in Figura 7. Il registro POCRnRA viene utilizzato per regolare la sincronizzazione dell’ADC per la misura della corrente.

Figura 7: Power Control (PSC).

Figura 7: Power Control (PSC)

CONFIGURAZIONE SOFTWARE

Atmel fornisce le librerie per il controllo dei motori DC Brushless. Il primo passo è configurare il microcontrollore. La funzione da utilizzare è mc_init (). Esso invia le funzioni di inizializzazione software e hardware e imposta tutti i parametri del motore (direzione, velocità, accensione e arresto del motore). Dopo la configurazione del microcontrollore e l’inizializzazione, il motore può essere avviato. Solo poche funzioni sono necessarie per controllare il motore (Figura 8):

  • mci_run void (void), utilizzato per avviare il motore;
  • Bool mci_motor_is_running (void), ottiene lo stato del motore;
  • mci_stop void (void), utilizzato per arrestare il motore.

Attraverso le funzioni mc_set_speed_loop () e mc_set_open_loop() è possibile settare la velocità del motore opportunamente regolando il guadagno del PID. Nelle Figure 9 e 10 viene mostrato l’andamento dei fattori K del PID per una buona configurazione parametrica del motore.

Figura 8: configuration loop.

Figura 8: configuration loop

 

Figura 9: K (proporzionale).

Figura 9: K (proporzionale)

 

Figura 10: K (integrale).

Figura 10: K (integrale)

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend