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