L’uso del driver pololu a4983 del tutto simile al modello a4988 che lo ha sostituito lo hai già letto nell’articolo dedicato a questo driver.
In un precedente articolo hai già visto come si possono dimezzare o ridurre a 1/4 ed 1/8 i passi di un motore bipolare con l’easy driver.
In questo articolo ti mostrerò come utilizzare anche il driver pololu a4983 per ottenere passi di ampiezza 1/2, 1/4 e 1/8 del passo completo da un motore bipolare.
Il pololu a4983 o il suo successore a4988 è utilizzato in molte stampanti 3D autocostruite come la rep rap grazie proprio alla sua capacità di ridurre il passo fino a 1/16 del passo base.
Se vuoi leggere tutta la teoria relativa a come puoi verificare che il singolo passo sia dimezzato o diviso in quattro, in otto o oltre puoi leggere l’articolo dedicato all’easy driver, la teoria non cambia cambiando il driver per pilotare il motore passo-passo.
Collegamento pololu a4983 arduino
I collegamenti tra arduino e il driver pololu a4983 puoi eseguirli secondo questo schema:
io ho utilizzato fili di colore blu per connettere i pin arduino ai pin MS1,MS2 ed MS3
ed i cavi di colore verde per connettere i pulsanti ad arduino, pulsanti che ti servono per inviare al driver pololu a4983 i segnali che riducono il passo del motore bipolare:
il cavo giallo è connesso al primo pulsante della breadboard ed al pin 8 di arduino con la funzione di far avanzare il motore un passo alla volta ad ogni pressione.
Come funziona il driver pololu a4983
La risoluzione del motore passo-passo, ossia l’ampiezza in gradi di ogni passo, è regolabile inviando segnali di tipo HIGH o LOW sui terminale MS1, MS2 ed MS3 secondo una matrice definita:
in pratica inviando un segnale HIGH sul pin MS1 e lasciando a LOW MS2 ed MS3 otterrai che ogni step sarà dimezzato nella sua ampiezza, se il passo del tuo motore è 1,8° in questo modo sarà 0,9° e se un giro completo ( 360° ) il motore lo compie in 200 passi dimezzandolo con 200 passi arriverai a compiere solo 180°.
Per dimostrare questa teoria ho realizzato un quadrante montato su di un motore passo passo con definiti alcuni punti specifici a 1/2 giro, 1/4 di giro e 1/8 di giro:
utilizzando lo sketch che ti propongo nelle righe successive potrai testare la risoluzione del tuo motore bipolare.
Important!
Probabilmente ti sei chiesto a cosa serva collegare i pulsanti ad arduino e poi i contatti MSx ad arduino quando a queti ultimi è sufficente inviare un segnale di tipo HIGH ( +5v ) o LOW ( 0v ) …
La motivazione è duplice:
- questo circuito è dimostrativo ed è più semplice provarlo premendo un pulsante per testare il funzionamento;
- in un progetto potrebbe esserti utile eliminare i pulsanti e variare l’ampiezza del passo e la risoluzione in corsa o rispetto al punto del progetto in cui stai operando.
Lo sketch del tutorial arduino
int DIR = 2; int STEP = 3; int MS1 = 4; int MS2 = 5; int MS3 = 6; int Rotate = 7; int pinGo = 8; int pinMS1 = 9; int pinMS2 = 10; int pinMS3 = 11; void setup() { pinMode(DIR, OUTPUT); pinMode(STEP, OUTPUT); pinMode(MS1, OUTPUT); pinMode(MS2, OUTPUT); pinMode(MS3, OUTPUT); pinMode( pinGo,INPUT ); pinMode( pinMS1,INPUT ); pinMode( pinMS2,INPUT ); pinMode( pinMS3,INPUT ); pinMode( Rotate,INPUT ); } void loop() { digitalWrite(MS1, digitalRead( pinMS1 ) ); digitalWrite(MS2, digitalRead( pinMS2 ) ); digitalWrite(MS3, digitalRead( pinMS3 ) ); digitalWrite(DIR,HIGH); delay(50); if ( digitalRead( Rotate ) == HIGH ) { for ( int i=0; i<200; i++) { stepGo(); delay(10); } } if ( digitalRead( pinGo ) == HIGH ) { delay( 300 ); stepGo(); } } void stepGo() { digitalWrite(STEP, HIGH); delayMicroseconds(100); digitalWrite(STEP, LOW); delayMicroseconds(100); }
Lo sketch proposto non è molto differente da quello che hai già incontrato in altri tutorial, la variante principale riguarda la presenza del 3° contatto e del 3° pulsante per aumentare la risoluzione del motore fino ad 1/16 di passo.
linea 05: definisci la variabile MS3 a cui è connesso il pin MS3 del driver pololu a4983;
linee 30-32: trasferisci il valore letto sul pin corrispondente ai 3 pulsanti pinMSx ai terminali MSx;
linea 38: definisci un ciclo for da 200 step in cui per ciascun passo esegui la funzione stepGo() definita alle linee 46-51 che hai già incontrato in altri articoli dedicati ai driver per motori passo-passo come l’easydriver ed il pololu a4983.
Ho realizzato un video demo del progetto:
Buon divertimento !!!
Prima di inserire un commento, per favore, leggi il regolamento
16 pings
Skip to comment form