jueves, 20 de marzo de 2014

Motor paso a paso 1

http://hobbytron.altervista.org/circuiti/stp2.htm

Motori passo passo : parte 2

Semplice circuito di pilotaggio
ULN2803
Figura 1

Il primo circuito che prendiamo in esame, Figura 1, e' basato su un integrato ULN2803 che contiene un array di 8 darlington capaci di erogare circa 500mA ciascuno. Un circuito di questo tipo puo' essere utilizzato proficuamente a scopo didattico mentre per un hardware maggiormente intelligente si consiglia di utilizzare degli integrati dedicati, ad esempio la coppia L297-L298.
L'ULN2803 e' fatto apposta per il pilotaggio di carichi induttivi, notiamo infatti la presenza di diodi di ricircolo integrati all'interno del componente. Collegheremo le uscite dei darlington alle varie fasi e gli ingressi corrispondenti ad una logica di controllo piu' o meno evoluta. Un circuito di questo tipo, semplicissimo dal punto di vista hardware, si presta notevolmente per essere utilizzato con un microcontrollore oppure con la porta parallela di un pc. Naturalmente, trattandosi di un semplice array di darlington, tutte le operazioni necessarie per generare i treni di impulsi sulle fasi e tutti i controlli del caso, sono demandati al software. Piu' l'hardware e' semplice piu' il software e' complicato, e viceversa.


Semplice circuito di pilotaggio
stupid driver
Figura 2

Il circuito di Figura 2 e' concettualmente identico a quello predecentemente descritto, l'unica differenza e' che si possono pilotare carichi induttivi con correnti fino a 8 A. Il BDX53C infatti e' un darlington bjt con un hfe di circa 700 capace di sostenere correnti di questa entità. Il connettore a 2 poli in altro a destra serve per collegare la Vl (tensione di alimentazione del motore), al pin 1 e la massa al pin 2. Il connettore a 5 poli immediatamente a fianco serve per collegare le fasi A, B, C e D del motore rispettivamente fra i pin 1 e 2, 1 e 3, 1 e 4, 1 e 5. Ho collegato questo circuito alla parallela del mio pc e da li' posso pilotare praticamente tutti i motori passo passo unipolari a 4 fasi. Il connettore di connessione con la parallela e' quello a 5 poli in basso a sinistra. Si consideri che i circuiti descritti in questa pagina, vengono tutti connessi alla parallela utilizzando i primi 4 bit del Data Register, da D0 a D3 ed ovviamente il riferimento di massa comune GND. Se non avete dimestichezza con la porta parallela vi consiglio di consultare il tutorial che trovate nella sezione teoria. A seguire, dopo la tabella dei datasheets, viene presentata una libreria di funzioni, scritte in C, per il pilotaggio Wave mode, Two Step e Half Step di un motore passo passo unipolare a quattro fasi attraverso le schede sopra descritte.


Datasheets dei componenti utilizzati per questi driver
ULN2803Array di 8 darlingtonDatasheet
BDX53CDarlington NPNDatasheet
1N4007DiodoDatasheet



Librerie e programmi per driver passo passo (in ambiente Turbo C++ 3.11).
FileDescrizione
stepper.hlibreria con funzioni per il pilotaggio dei passo passo
steprova.cppprogramma che fa uso della libreria vista sopra

Salvare la libreria stepper.h nella directory include e da programma principale (steprova.cpp) includerla attraverso la direttiva #include .

Tutte le funzioni che la libreria mette a disposizione, esse sono state scritte assumendo che i bit di pilotaggio dei darlington siano D0, D1, D2 e D3 sul registro DATA della porta parallela. Ovviamente e' possibile passare per parametro alle funzioni l'indirizzo della parallela del proprio pc.

Con le opportune modifiche e' possibile far funzionare il tutto anche considerando che i bit di pilotaggio delle fasi siano altri, ad esempio D4, D5, D6 e D7. La libreria in questione fa largo uso di puntatori, tecnica di programmazione abbastanza ostica ma sicuramente molto efficiente dal punto di vista della velocita' e delle risorse macchina impiegate. Il tutto e' stato implementato in ambiente DOS su un vecchio 286 ma funziona benissimo anche sui Pentium piu' moderni.

E' stato prima di tutto definito un tipo di dato astratto che simulasse la struttura interna di un motore passo passo unipolare a 4 fasi dal punto di vista di un osservatore esterno. Per fare questo ho definito una struttura a campo di bit costituita da 4 bit i quali corrispondono alle 4 fasi, in seguito e' stato definito un puntatore a questo tipo di struttura :
Successivamente sono state definite alcune funzioni primitive che si occupano di effettuare operazioni primitive sulla struttura appena definita : mostrare il nibble in notazione binaria, azzerare il nibble, assegnare al nibble una determinata configurazione di bit, shiftare il nibble a destra e a sinistra, ruotare il nibble a destra e a sinistra, convertire il valore del nibble in una variabile char, convertire una variabile char (preventivamente controllata dal processo main() affinche' sia inferiore a 15) nel nibble di struttura.

E' da notare come quasi tutte le funzioni restituiscano in uscita un puntatore a struttura del tipo indicato affinche' questo parametro possa essere utilizzato in ingresso dalle funzioni successive.

"Sopra" queste funzioni primitive sono state costruite le funzioni evolute, esse si occupano di muovere effettivamente il motore.

Esse sono :
giro completo in senso antiorario, giro completo in senso orario, rotazione in gradi di un angolo pari a angle, apre di un angolo in senso orario o antiorario e poi ritorna al luogo di partenza.


Controllo remoto di un motore passo passo attraverso il meccanismo cgi.

Con questo tipo di circuiti ho realizzato un controllo di un motore passo passo attraverso inernet. Secondo lo schema riportato nella figura sottostante, un client puo' controllare la rotazione di un motore passo passo connesso ad un server remoto. Le operazioni che puo' svolgere sono la rotazione in un senso o nell'altro, scegliendo di quanti gradi ruotare, ed il blocco dell'albero motore.

Controllo PP remoto

Di seguito viene riportato il form di controllo del motore passo passo ed il suo codice html sorgente.

Selezionare l'angolo di rotazione

Di seguito i sorgenti dei moduli C di progetto per la gestione del motore passo passo via web, il progetto e' stato realizzato in ambiente lccwin-32. Oltre a gestire il motore passo passo viene anche effettuato un log di ogni rotazione su file e output su browser/client della rotazione o del blocco effettuato, segnando anche, sul log file, data e ora.

HeaderModuloDescrizione
stephead.h stepimple.c Implementazione di funzioni per gestione motore pp

stp.c Programma principale


No hay comentarios:

Publicar un comentario