Controllo motori stepper con dsPIC33F

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. I dsPic33F possono essere utilizzati per il controllo di motori stepper con la tecnica PWM.

Introduzione

I dsPic33F sono dispositivi appartenenti alla famiglia DSC ,dedicati alla generazione di segnali digitali. L’articolo presenta un’applicazione che fa uso del kit dsPIC MCSM DV330022. L’utilizzo di otto canali per la generazione del segnale PWM permette di controllare un motore di tipo stepper in varie maniere, siano essi unipolari o bipolari, in modalità open o closed loop e con diverse tecniche di controllo, full step o microstepping, con pochi componenti aggiuntivi. Il kit comprende la scheda di sviluppo dsPICDEM MCSM, un motore stepper, alimentatore e modulo Plug-in (PIM). In Figura 1 è mostrato uno schema a blocchi del circuito usato: il dsPIC33F è collegato a drivers che generano segnali che controllano un doppio H-bridge di mosfet: ciascun mosfet è controllato da un unico segnale PWM; le quattro paia di canali PWM possono funzionare indipendentemente o no a seconda del tipo di segnale che si vuole generare per i mosfet di potenza.

Figura 1: Schema a blocchi del circuito

Figura 1: Schema a blocchi del circuito

Un possibile uso del dsPIC DSC è ottenere elevate prestazioni con la tecnica del microstepping in modalità closed loop. Sono necessarie alte tensioni per avere rapidi cambiamenti nell’andamento delle correnti che alimentano il motore; queste tensioni richiedono un’alta frequenza PWM con un convertitore ADC che permette di avere un controllo veloce ed accurato. La scheda di sviluppo dsPICDEM MCSM è stata progettata per essere alimentata da tensioni sino ad 80 V e funzionare con un’ampia gamma di motori stepper e algoritmi di controllo. Una frequenza PWM di 40 kHz si può scegliere per avere tempi di risposta molto brevi: in un motore stepper con fasi caratterizzate da un’induttanza di 4mH e resistenza di 2,3 ohm, alimentato da una tensione di 80 V la corrente raggiunge il valore di regime di 1,4 A in appena 70 microsecondi. Questo tempo corrisponde a nemmeno tre periodi del segnale PWM; con una tensione di 24 V ciò avviene in dieci periodi del segnale PWM.

TECNICHE DI CONTROLLO

Si possono vedere alcune tecniche di controllo di motori stepper che si possono selezionare via software attraverso definizioni o in tempo reale:

  • Open Loop
  • Tensione determinata Open Loop
  • Corrente determinata Closed Loop
  • Controllo in corrente

Ciascuna di queste tecniche può produrre tensioni di alimentazione del motore attraverso la scelta di diversi parametri di controllo o Step:

  • Full Step Mode (1/1 Step)
  • Half Step Mode (1/2 Step)
  • Microstepping (1/4 Step, 1/8 Step, 1/16 Step, 1/32 Step, 1/64 Step)

Sono inoltre presi in considerazione diversi modi di alimentazione del motore o Decay Modes, che si possono usare nelle diverse tecniche di controllo esaminate e con gli step visti: Fixed Decay Mode che si può configurare in Slow e Fast decay, Alternating Decay Mode che si può configurare in Slow e Fast decay. I Decay Modes sono descritti in dettaglio più avanti nell’articolo.

FULL STEP, HALF E MICROSTEP

Applicazioni che richiedono precisione nell’ottenere posizioni legate alla rotazione del motore, poche vibrazioni e basso rumore possono fare uso di un segnale sinusoidale per alimentare ogni fase del motore: per esempio un motore a due fasi sarà alimentato da due segnali sinusoidali sfasati tra loro di 90 gradi. E’ possibile avere ad ogni istante solo una fase attiva o entrambe le fasi attive. Tutte le altre tensioni corrispondenti a diverse scelte dei parametri o step possono riprodurre la tensione sinusoidale. Il Full Step Mode corrisponde ad un periodo di tempo di controllo corrispondente ad un quarto del periodo dell’onda sinusoidale, l’Half Step Mode corrisponde alla metà del primo e così via. Scelte di tempi più brevi possono incrementare l’accuratezza nell’ottenere la posizione voluta dal rotore, ridurre vibrazioni o rumore durante il funzionamento: la scelta di 1/32 Step è più che sufficiente nelle applicazioni di un tipico motore stepper. Tempi di controllo più brevi non comportano miglior precisione riguardo alla posizione ma una diminuzione del rumore. La scelta di fasi con valori dell’induttanza bassi o tensioni elevate possono migliorare le prestazioni in tal senso. La risoluzione di 1/64 Step significa considerare 256 punti di suddivisione del periodo: i valori della tensione possono essere letti da una look-up table dove sono memorizzati i valori del segnale sinusoidale corrispondenti ad una suddivisione opportuna, per esempio in 1024 punti del periodo di una funzione coseno: sono sufficienti per esempio 256 valori, corrispondenti ad un quarto del periodo, dal momento che i restanti si possono ricavare da questi senza doverli memorizzare.

MODO DI CONTROLLO OPEN LOOP A TENSIONE E CORRENTE DETERMINATI

Ci sono due modalità di controllo in open loop: a tensione e corrente determinati; con la prima non si modifica il duty cycle del segnale PWM, con la seconda il duty cycle è modificato in modo da ottenere il valore dell’intensità di corrente voluto. I motori stepper sono caratterizzati da determinati valori dell’intensità di corrente (valori nominali); a questa corrispondono determinati valori della tensione di alimentazione. A seconda dell’andamento della corrente e dei valori che essa assume intorno ai valori nominali, la tensione che si ha ai capi delle fasi del motore può assumere valori più elevati di quelli nominali. Un esempio dell’andamento della corrente in modalità microstepping (1/4 Step) è riportato in Figura 2: al segnale PWM scelto corrisponde il segnale di tensione determinato. All’aumentare della velocità di rotazione del motore tale modo di controllo può comportare un abbassamento della coppia del motore.

Figura 2 : Andamento della corrente e segnale PWM

Figura 2: Andamento della corrente e segnale PWM

Per ovviare a questo problema la soluzione più semplice consiste nel modificare il segnale di tensione in modo da avere un andamento della corrente e una coppia opportuni: in Figura 3 e 4 sono riportati gli andamenti della corrente corrispondenti alle due modalità di controllo in corrispondenza di una determinata velocità di rotazione del motore.

Figura 3 : Andamento della corrente in open loop e tensione determinata

Figura 3: Andamento della corrente in open loop e tensione determinata

 

Figura 4: Andamento della corrente in open loop e corrente determinata

Figura 4: Andamento della corrente in open loop e corrente determinata

DECAY MODES

Quando una fase non viene alimentata la corrente che la percorre inizia a diminuire fino a zero o fino a quando viene nuovamente alimentata. Il modo in cui la corrente diminuisce dipende dall’alimentazione dei mosfet dell’H-bridge. I diversi modi in cui la corrente viene fatta diminuire prendono il nome di decay modes. Nell’articolo sono considerati due tipi di decay modes. Fast Decay: quando alla tensione ai capi della fase del motore viene fatta assumere una polarità opposta in modo da ottenere una rapida diminuzione dell’intensità di corrente. Slow Decay: quando la fase viene cortocircuitata; l’intensità di corrente decresce più lentamente senza applicare tensione ai suoi capi. Entrambi i decay modes si possono usare in due modi. Fixed Decay: quando solo un decay mode è usato, solitamente lo Slow Decay. Alternating Decay: il dsPIC usa i due decay modes in modo alternato.

FAST DECAY

In Fast Decay quando la corrente percorre una fase del motore e i mosfet sono disattivati, la tensione ai capi di quella fase è pari all’inverso della tensione di alimentazione più la tensione di soglia sui due diodi in conduzione come mostrato in Figura 5. L’intensità di corrente viene fatta diminuire in modo opportuno cortocircuitando uno o due diodi tramite i mosfets corrispondenti. La tensione inversa presente ai capi della spira non si modificherà molto poiché la tensione di soglia del diodo (1 V) è piccola rispetto alla tensione di alimentazione (24 V): la corrente percorrerà il mosfet per un breve periodo di tempo e la dissipazione in esso è contenuta. Sia quando la fase viene alimentata che durante il decay mode la corrente percorrerà la resistenza di shunt.

Figura 5: Esempio di percorso della corrente in Fast Decay

Figura 5: Esempio di percorso della corrente in Fast Decay

SLOW DECAY

In Slow Decay viene cortocircuitata la fase del motore quando essa non viene alimentata: ciò si ottiene mantenendo uno dei mosfets sempre non in conduzione, per esempio il Q1A o il Q2B come mostrato in Figura 6; la corrente percorre la fase, il mosfet che viene alimentato è quello riportato in figura o il diodo vicino. Esistono diversi Slow Decay modes che si ottengono a seconda di quale configurazione si sceglie nell’attivare i mosfets; si possono adottare configurazioni per avere poca dissipazione di corrente. La corrente non percorrerà la resistenza di shunt.

Figura 6: Esempio di percorso della corrente in Slow Decay

Figura 6: Esempio di percorso della corrente in Slow Decay

USO DI FAST E SLOW DECAY MODES IN MODO FISSO O ALTERNATO

Nell’articolo sono considerati due modi di usare i decay modes: nel Fixed Decay solo uno dei decay modes è usato (fast o slow); nell’Alternating Decay entrambi i decay modes vengono attivati. Il Fixed Decay è preferibilmente usato nella configurazione di Slow Decay e con la corrente che attraversa la fase cortocircuitata e i mosfet Q1B e Q2B (low mosfet recirculation), come mostrato in Figura 7.

Figura 7: Esempio di percorso della corrente in Fixed Decay

Figura 7: Esempio di percorso della corrente in Fixed Decay

Lo Slow Decay mode si può usare quando la velocità di rotazione non è elevata; all’aumentare della velocità di rotazione è più difficile controllare l’andamento dell’intensità di corrente; si può ricorrere all’Alternating Decay quando si desidera una decrescita rapida dell’intensità di corrente: la forza controelettromotrice si oppone a variazioni di corrente entro la fase del motore: vedi Figura 8.

Figura 8: Andamenti della corrente in Fixed e Alternate Decay con Slow e Fast Decay evidenziati

Figura 8: Andamenti della corrente in Fixed e Alternate Decay con Slow e Fast Decay evidenziati

CONTROLLO DELL’INTENSITÀ DI CORRENTE VIA SOFTWARE TRAMITE MISURA DI CORRENTE E TRAMITE CLOSED LOOP PI CONTROL

E’ possibile avere un controllo della corrente di alimentazione della fase del motore tramite una misura di corrente che percorre l’H-bridge: questa può servire per realizzare un controllo PI closed loop che fa uso di convertitore ADC che fornisce una lettura dell’intensità di corrente; questa lettura permette all’algoritmo di controllo di modificare ad istanti scelti la corrente che alimenta la fase. In Figura 9 è riportato un diagramma di flusso che mostra l’utilizzo dell’ADC. In Figura 10 sono riportati gli andamenti delle correnti che percorrono la fase e la resistenza di shunt e i segnali PWM relativi ai mosfet Q1A e Q2B.

Figura 9: Diagramma di flusso di utilizzo dell’ADC per il controllo della corrente

Figura 9: Diagramma di flusso di utilizzo dell’ADC per il controllo della corrente

 

Figura 10: Andamento della corrente in closed loop PI control

Figura 10: Andamento della corrente in closed loop PI control

Quando Q1A è in conduzione e la tensione DC è applicata alla fase, la corrente che la percorre cresce; quando Q2B è in conduzione si ha il Fast Decay mode; quando entrambi i segnali sono bassi si ha lo Slow Decay mosfet recirculation e la resistenza di shunt non è percorsa da corrente. La lettura dell’ADC fornisce valori utili per il controllo della corrente quando la lettura è fatta relativamente a periodi di tempo superiori a 1,75 microsecondi: per un segnale PWM di 40 KHz ciò significa considerare duty cycle del 7%. Un controllo dell’intensità di corrente tramite un closed loop PI control richiede la scelta di un tempo di risposta che è legato ai parametri e al guadagno del PI controller. Un possibile andamento della corrente e il confronto con una corrente di riferimento è riportato in Figura 11.

Figura 11 Confronto tra andamento della corrente e corrente di riferimento in closed loop PI control

Figura 11: Confronto tra andamento della corrente e corrente di riferimento in closed loop PI control

In Figura 12 è riportato un andamento della corrente e il confronto con quella di riferimento nel caso di un PI control che fa uso di un anti-windup gain in modo da non avere saturazione dei segnali in uscita o wind-up.

Figura 12: Confronto tra andamento della corrente e corrente di riferimento con antiwindup gain

Figura 12: Confronto tra andamento della corrente e corrente di riferimento con anti-windup gain

E’ possibile avere un controllo della corrente anche in caso di elevate velocità di rotazione del motore tramite l’anti-windup gain: si ha uno sfasamento della corrente rispetto alla tensione d’uscita e alla corrente di riferimento, phase advance, ma l’ampiezza e la fase della corrente consentono di ottenere una coppia accettabile anche a elevate velocità come mostrato in Figura 13; in caso di elevate velocità è consigliabile usare parametri di step più piccoli nel controllo della tensione o microstepping a risoluzione più elevata. Un PI control a guadagno variabile può essere utile nell’ottenere un controllo della rotazione o controllo in posizione del motore.

Figura 13: Andamento della corrente e corrente di riferimento con phase advance

Figura 13: Andamento della corrente e corrente di riferimento con phase advance

CONCLUSIONI

L’articolo prende in considerazione tre tecniche di controllo di motori stepper: quello a tensione e corrente determinati e il Closed Loop PI control. E’ disponibile sul sito della Microchip un’implementazione software che permette la gestione del motore stepper con la tecnica del microstepping con una risoluzione di 1/256 di ciclo.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend