Il pilotaggio dei motori bipolari passo-passo

I motori bipolari sono caratterizzati dall'avere solo quattro fili di connessione. Per questi motori la corrente deve attraversare gli avvolgimenti nei due versi e questo rende piuttosto complesso il circuito di pilotaggio. Il vantaggio deriva dal fatto che, essendo le fasi due anziché quattro, a parità di potenza del motore, il peso e la dimensione sono minori in quanto è necessario usare una minor quantità di rame. Inoltre, usando appositi schemi, è possibile ottenere circuiti di pilotaggio più efficienti in termini di consumo energetico e velocità di rotazione ottenibile.

Infine si rende possibile introdurre nuove modalità di pilotaggio senza appesantire in modo sostanziale le difficoltà di progettazione dell'elettronica di potenza.

Nel pilotaggio bipolare, come in quello unipolare sono possibili diverse modalità:

WaveMode: una sola fase alla volta è attiva. Da notare che le condizioni di funzionamento per ciascuna fase sono tre: corrente in un verso, corrente nell'altro verso, assenza di corrente (situazioni indicate rispettivamente con I, -I e 0 nella tabella).

Passo Ph1 Ph2
1 I 0
2 0 I
3 -I 0
4 0 -I

Two phase-on: la corrente è sempre presente nelle due fasi ma cambia verso. In questo caso si hanno degli effetti sulla coppia che aumenta di 1.4 volte e la corrente assorbita che raddoppia.

Passo Ph1 Ph2
1 I I
2 -I I
3 -I -I
4 I -I

Half-step senza controllo di coppia: è l'insieme dei due metodi precedenti, con l'effetto principale di ottenere il raddoppio del numero dei passi.

Passo Ph1 Ph2
1 I 0
2 I I
3 0 I
4 -I I
5 -I 0
6 -I -I
7 0 -I
8 I -I

Quello che mi propongo di fare in questa breve descrizione è il controllo di un motore passo-passo (recuperato da un lettore di floppy disk) mediante un PIC16F876. Il controllo avviene secondo la modalità wave mode e il circuito di potenza lo realizzo inizialmente mediante componenti discreti, e in un secondo momento mediante il chip LB1838. Prima di passare alla descrizione del codice assembler relativo al PIC, volevo introdurre un semplice circuito di potenza per il controllo dello stepper, il cosiddetto ponte ad H:

Come si può vedere dallo schema, se v1 = 5 V e v2 = 0, i transistor Q1,Q3 sono in conduzione, mentre Q2,Q4 sono interdetti per la fase del motore risulta polarizzata con un certo verso. Se invece, v1 = 0 e v2 = 5 V, i transistor Q1,Q3 sono interdetti, mentre Q2,Q3 sono in conduzione e la polarizzazione sulla fase risulta invertita. Naturalmente per il controllo del motore bipolare a quattro fili sono necessari due circuiti identici a quelli riportati sopra, uno per ogni avvolgimento. Le resistenze R le ho utilizzate per limitare la corrente nella giunzione base-emettitore dei transistor.

Nella figura sottostante viene visualizzata una immagine del circuito di potenza in questione montato su bread board. Poichè il circuito è realizzato a scopo puramente didattico, come si può notare dalla figura, i transistor sono stati recuperati da vecchi apparati elettronici, per cui sono diversi tra loro. In particolare per il controllo delle prime due fasi vengono utilizzati quattro BDX53C, mentre per il controllo delle fasi rimanenti vengono utilizzati quattro BC301. Questa scelta è sicuramente non ottimale, ma ai nostri fini non importa.

Nella figura seguente è invece riportato il circuito completo comprensivo di PIC e motore passo-passo.

Nella figura che segue viene riportato il video del funzionamento del motore passo-passo.

 

Il controllo del motore viene effettuato mediante un PIC16F876 il cui codice relativo non viene qui riportato, ma è di facile intuizione. Il controllo delle fasi avviene mediante le linee RB7,RB6,RB5,RB4 configurate come uscite, i cui livelli di tensione vengono invertiti in maniera opportuna al fine di avere la giusta sequenza di inversione delle fasi del motore.

A questo punto ho pensato di utilizzare l'integrato LB1838 che contiene al suo interno tutta la logica di controllo e il circuito di potenza a ponte H. Il circuito in questione è facilmente reperibile in quanto è un componente che ho recuperato da un vecchio lettore di floppy disk. Qui di seguito riporto lo schema interno del chip LB1838, mentre per un maggior approfondimento consiglio di scaricare il datasheet completo nella sezione "Elettronica".

Il codice assembler di controllo, presente all'interno del PIC16F876 è riportato qui di seguito:

Motor Bsf Port_C,0
Movlw 0xFF
Call Del1
Bcf Port_C,0
Movlw 0xFF
Call Del1
Btfss Port_C,7
Goto Motor
Movlw 0x30
Movwf Cnt
RotDir Movlw B'00000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'10000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'11000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'01000000'
Movwf Port_B
Movlw 0x04
Call Del1
Decfsz Cnt,1
Goto RotDir
;Inversione rotazione
Movlw 0x35
Movwf Cnt
RotInv Movlw B'00000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'01000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'11000000'
Movwf Port_B
Movlw 0x04
Call Del1
Movlw B'10000000'
Movwf Port_B
Movlw 0x04
Call Del1
Decfsz Cnt,1
Goto RotInv
Goto Motor

Le sub-routine Del1 sono delle semplici istruzioni che ritardano l'esecuzione del codice. Come si può vedere dal codice, il controllo delle fasi avviene attraverso i pin RB7,RB6 della porta B del PIC configurati come uscite e si può notare come nell'esecuzione del codice vengano invertiti i livelli su tali linee, consentendo così l'inversione delle fasi. Nella figura che segue invece, viene riportata la tabella di verità relativa al controllo del motore passo-passo mediante l'integrato LB1838:

Nella figura che segue invece viene riportato il circuito in questione montato su bread board:

Di seguito sono riportati anche i filmati relativi al controllo del motore passo-passo.

Michele Marino - M.M.Electronics