10. Pilotaggio unipolare di un motore passo-passo

Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
10. Pilotaggio unipolare di un motore passo-passo
Scopo della prova
Pilotare un motore passo-passo, in questo caso il modello 103-547-52500 della Sanyo le cui
caratteristiche principali sono quelle di figura1.
Fig.1 – Caratteristiche del motore passo-passo 103-547-52500 (Sanyo).
La prova di laboratorio può essere suddivisa in tre parti:
La prima parte consiste nel comando manuale del motore passo-passo facendogli eseguire dei passi
operando con quattro switch che forniscono la sequenza di passo.
Quest’operazione consente la di verificare il corretto funzionamento dell’interfaccia del motore e
della sua rotazione (Fig. 2).
La presenza delle resistenze di collettore limita fortemente la velocità di rotazione e la copia utile
del motore.
La seconda parte (Fig. 3) esegue il pilotaggio del motore mediante il microcontrollore PIC 16F84,
(le cui caratteristiche e modo funzionamento sono consultabili e/o scaricabili dal sito
http://ww1.microchip.com/downloads/en/DeviceDoc/35007C.pdf) ne presuppone la conoscenza di
programmazione.
La terza parte (Fig. 5) esegue il pilotaggio del motore mediante un driver di potenza
che permette di sfruttare a pieno le potenzialità del motore di coppia e velocità (la coppia del
motore aumenta all’aumentare dell’intensità di corrente assorbita mentre la velocità di rotazione
aumenta con l’aumentare della tensione d’alimentazione , Fig. 2) senza l’utilizzo di transistor e
resistenze limitatrici di corrente.
In alternativa è possibile pilotare il motore mediante una scheda programmabile contenente il driver
di potenza (soluzione meno economica, Fig. 8).
1
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
Fig. 2 - Caratteristica coppia-velocità del motore per le diverse tensioni d’alimentazione.
Materiali e strumentazione
Prima parte:
alimentatore stabilizzato duale
motore passo-passo 103-547-52550 (Sanyo)
4 transistor 2N2218 (High Speed Switch; VCESAT = 0,3 V ; hFEMIN  40; ICMAX = 800 mA; VCE0MAX =
30 V) o equivalenti (caratteristiche complete scaricabili dal sito: http://www.alldatasheet.com)
4 resistori da 1,6 kΩ
4 resistori da 840 Ω
4 resistori da 1 kΩ
4 interruttori
Seconda parte:
alimentatore stabilizzato duale
motore passo-passo 103-547-52550 (Sanyo)
microcontrollore PIC 16F84 e relativo programmatore
quarzo da 1 MHz
2 condensatori da 22 pF
condensatore da 100 nF
4 transistor 2N2218
4 resistori da 1,6 kΩ
4 resistori da 840 Ω
8 resistori da 1 kΩ
5 interruttori
pulsante
Terza parte:
alimentatore stabilizzato duale
motore passo-passo 103-547-52550 (Sanyo)
driver di potenza o scheda programmabile provvista di driver di potenza
microcontrollore PIC 16F84 e relativo programmatore (solo con l’utilizzo di un driver di potenza)
quarzo da 1 MHz
2 condensatori da 22 pF
condensatore da 100 nF
8 resistori da 1 kΩ
5 interruttori
pulsante
2
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
Schema elettrico della prima parte
Lo schema elettrico è quello di figura 3 dove con U4, U3, U2 e U1 si indicano i quattro
avvolgimenti del motore, con 1 è indicata la presenza di tensione ai capi dell’avvolgimento e con 0
l’assenza.
Si ha un passo in avanti tutte le volte che si passa da una configurazione, impostata ai quattro
switch, alla successiva e un passo all’indietro quando si passa da una configurazione alla precedente
(percorrenza della tabella dal basso verso l’alto: pilotaggio di tipo “two phase-on” in cui la corrente
è applicata contemporaneamente a due fasi del motore).
La sequenza di passo è periodica in modulo quattro, cioè arrivati alla quarta configurazione si passa
alla prima per avere di nuovo un passo in avanti e dalla prima alla quarta per avere ancora un passo
all’indietro.
Il circuito d’interfaccia del motore comprende quattro transistor NPN 2N2218 funzionanti ON-OFF
(saturo-interdetto). Ogni transistor fornisce una corrente di collettore IC di 200 mA, quando è
applicata alla sua base una tensione VBESAT (interruttore aperto = 1), e una IC  0 con VBE = 0
(interruttore chiuso = 0). Il funzionamento dell’interfaccia è riassunto dalla tabella di figura 4.
Fig. 3 – Schema elettrico e sequenza di passo del motore comandato da quattro interruttori.
Stato degli
Stato degli ingressi Stato dei transistor avvolgimenti del motore
SW3 SW2 SW1 SW0 T4 T3 T2 T1
U4 U3 U2 U1
1
0
0
1
0
1
1
0
0
0
1
1
1
1
0
0
ON OFF OFF ON
OFF ON OFF ON
OFF ON ON OFF
ON OFF ON OFF
1
0
0
1
0
1
1
0
0
0
1
1
1
1
0
0
Con SW = 1 interruttore aperto e SW = 0 interruttore chiuso; U = 1 presenza di tensione ai capi dell’avvolgimento
(transistor saturo) e U = 0 assenza di tensione (transistor interdetto).
Fig. 4 – Tabella riassuntiva del funzionamento dell’interfaccia.
3
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
Schema elettrico della seconda parte
Fig. 5 - Schema elettrico e possibile sequenza di passo del motore comandato dal microcontrollore.
Stato delle uscite Stato dei transistor
Stato degli
del microcontrollore T4 T3 T2 T1
avvolgimenti del motore
RB3 RB2 RB1 RB0
U4 U3 U2 U1
1
0
0
1
0
1
1
0
0
0
1
1
1
1
0
0
ON OFF OFF ON
OFF ON OFF ON
OFF ON ON OFF
ON OFF ON OFF
1
0
0
1
0
1
1
0
0
0
1
1
1
1
0
0
Con RB = 1 uscita al livello alto (+5V) e RB = 0 uscita al livello basso (0 V); U = 1 presenza di tensione ai capi
dell’avvolgimento (transistor saturo) e U = 0 assenza di tensione (transistor interdetto).
Fig. 6 - Tabella riassuntiva del funzionamento dell’interfaccia.
4
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
Schema elettrico della terza parte
Fig. 7 - Pilotaggio del motore con microcontrollore e driver di potenza.
Fig. 8 - Pilotaggio del motore mediante una scheda programmabile provvista di driver di potenza.
Dimensionamento delle resistenze
Il valore delle resistenze di collettore che limitano la corrente in ogni avvolgimento del motore a
200 mA (valore inferiore di quello massimo possibile di 1 A) è dato da:
RC 
VCC  VCESAT
12  0,3
 Ravvolgimento 
 3,15  56  (valore commerciale) - 2,5 W
I CSAT
0,2
2
( I CSAT
 RC  4  10 2  57  2,3 W)
5
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
La tensione U ai capi di ogni avvolgimento in conduzione è pari a:
U  RC  I  3,15  0,2  0,63 V
Questo piccolo valore di tensione limita fortemente la velocità di rotazione del motore.
La corrente di base necessaria alla saturazione IBSAT di ogni transistor vale:
I
200  10 3
I BSAT  CSAT 
 5 mA
hFEMIN
40
Il valore della resistenza di base RB, supponendo la VBESAT di 0,8 V, è uguale a:
RB 
VDD  VBESAT 5  0,8

 840 
I CSAT
5  10 3
Le resistenze R di pull-up di 1 kΩ hanno la doppia funzione di mantenere al livello logico alto
(+VDD) gli ingressi del microcontrollore se gli interruttori sono aperti, e di evitare cortocircuiti verso
massa quando vengono chiusi.
Esecuzione della prima parte
L’esecuzione della prima parte esegue la rotazione del motore facendogli compiere dei passi
mediante quattro switch che forniscono la sequenza di passo.
Quest’operazione consente di verificare il corretto funzionamento dell’interfaccia del motore e della
sua rotazione (Fig. 3).
Omettendo le resistenze di collettore, la corrente che attraversa i transistor e gli avvolgimenti è di:
I CSAT 
VCC  VCESAT 12  0,3

 3,7 A
Ravvolgimento
3,15
Questo valore, essendo molto più grande di quello sopportabile dagli avvolgimenti del motore e dai
transistor, porterebbe alla loro bruciatura.
Esecuzione della seconda parte
Lo svolgimento della seconda parte presuppone la conoscenza del microcontrollore PIC 16F84A.
Il programma, una volta editato viene assemblato, è caricato in formato binario nella memoria
flash interna del microcontrollore mediante il programmatore in cui è stato caricato
preventivamente il formato .HEX prodotto dall’assemblatore.
Il software proposto effettua la rotazione in avanti del motore di un giro (200 passi) con una
velocità di circa un passo al secondo.
Il programma testa la linea RA1 della Porta A (bit 1) programmata come ingresso e se la trova al
livello logico 0 (0 V, interruttore chiuso) avvia il motore facendogli compiere un giro per poi
fermarlo.
Chiudendo in qualsiasi momento uno dei quattro interruttori collegati alle linee RB4-RB7 (Fig. 5) il
motore viene arrestato. Per far ripartire il programma dall’inizio occorre resettare il sistema
mediante l’apposito pulsante P, questo perché la subroutine dell’interrupt è in loop mediante una
istruzione di salto incondizionato.
6
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
Una possibile sequenza di passo del motore è quella di figura 5:
rotazione in avanti
RB3 RB2
1
0
0
1
0
1
1
0
RB1
0
0
1
1
RB0
1
1
0
0
rotazione all’indietro
corrispondente nella notazione esadecimale a :
09H-05H-06H-0AH per il movimento in avanti
e
0AH-06H-05H-09H per il movimento all’indietro.
Nella tabella di figura 9 sono riportati le modalità di funzionamento del sistema in corrispondenza
dello stato di SW1 e dei cambiamenti di stato di RB4-RB7.
Stato di
SW1
Aperto
Chiuso
Cambiamento
di stato di
RB4-RB7?
Ingresso
RA1
Modalità di funzionamento
del motore passo-passo
+5 V
0V
motore OFF (fermo)
il motore effettua solo 1 giro in avanti, poi si arresta
SÌ
NO
arresto del motore
nessuna azione
Fig. 9 - Modalità di funzionamento.
Il flow-chart e la lista di un possibile programma (non ottimizzato), cui è stato dato il nome
Passo.asm, in grado di far compiere al motore la rotazione voluta sono quelli sotto riportati :
Fig. 10 - Flow-chart.
7
Pilotaggio unipolare di un motore passo-passo
Marco Coppelli - Bruno Stortoni
List p=16F84A ; Comando di un motore passo-passo (Passo.asm).
PORTA
TRISA
PORTB
TRISB
STATUS
RP0
INTCON
STEP
CONTA1
CONTA2
CONTA3
EQU
EQU
05H
EQU
06H
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
ORG
85H
86H
03H
05H
0BH
0DH
0EH
0FH
10H
0000H
GOTO Start
ORG
Start
Ripeti
Giro
Passo
0100H
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
MOVLW
MOVWF
MOVF
BTFSS
STATUS,RP0
1FH
TRISA
0F0H
TRISB
STATUS,RP0
88H
INTCON
PORTA,F
PORTA,1
GOTO
MOVLW
MOVWF
GOTO
MOVLW
Giro
00H
PORTB
Ripeti
32H
MOVWF
MOVLW
MOVWF
CALL
MOVLW
MOVWF
CALL
MOVLW
MOVWF
CALL
MOVLW
MOVWF
CALL
DECFSZ
STEP
09H
PORTB
Ritardo
05H
PORTB
Ritardo
06H
PORTB
Ritardo
0AH
PORTB
Ritardo
STEP
GOTO
GOTO
Passo
Stop
; Seleziona il banco 1.
; Porta A come ingresso.
; Porta B come uscita.
; Seleziona il banco 0.
; Abilita le interruzioni
; sulle linee RB4-RB7.
; Leggi la Porta A.
; Se RA1 è 1 (SW1 aperto) salta
; la prossima istruzione.
; Salta a Giro (SW1 chiuso).
; Arresta il motore.
; Esegui un'altra lettura.
; Carica il contatore di passi
; 32H=50 decimale (50x4=200 passi)
; corrispondenti ad un giro.
; Esegui un passo.
; Chiama il ritardo.
; Esegui un passo.
; Chiama il ritardo.
; Esegui un passo.
; Chiama il ritardo.
; Esegui un passo.
; Chiama il ritardo.
; Salta la prossima istruzione
; se il contenuto di STEP è zero.
; Continua il decremento.
; Salta a Stop.
; Subroutine di ritardo
Ritardo MOVLW
MOVWF
40H
CONTA1
; Carica il ritardo.
8
Pilotaggio unipolare di un motore passo-passo
Rit1
Rit2
Rit3
MOVWF
MOVWF
DECFSZ
GOTO
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
Marco Coppelli - Bruno Stortoni
CONTA2
CONTA3
CONTA3,1
Rit3
CONTA2,1
Rit2
CONTA1,1
Rit1
; Rientra nel programma principale.
; Subroutine dell'interruzione.
ORG
Stop
MOVLW
MOVWF
GOTO
END
0004H
00H
PORTB
Stop
; Arresta il motore.
; Ripeti l'operazione.
Esecuzione della terza parte
Questa fase prevede l’utilizzo di un driver di potenza, compatibile, suggerito dal produttore del
motore in riferimento al tipo di motore utilizzato, contenente l’hardware d’interfaccia.
Di solito il driver di potenza ha un ingresso “di passo” e uno di direzione (Fig. 7); l’elettronica
interna del driver provvede a fornire la sequenza di passo necessaria per la rotazione del motore.
Sebbene l’utilizzo del driver sia una soluzione costosa, essa è quella attualmente più utilizzata
perché permette di ottenere elevate prestazioni associate ad una alta affidabilità di funzionamento.
Oltre ai driver di potenza sono spesso utilizzate delle schede programmabili, provviste di driver di
potenza, che gestiscono completamente la rotazione di un motore passo-passo con altissima
precisione e affidabilità (Fig. 8).
Osservazioni
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
9