Da tempo ho sentito parlare di questo driver e finalmente ho trovato l’occasione di acquistare e testare il BigEasyDriver con arduino e dei pulsanti.
L’esperimento che ho eseguito è simile a quello che già ti ho mostrato con la sorella minore: EasyDriver che qualche settimana fa ho bruciato nel tentativo di testare i suoi limiti con motori molto potenti.
Il collegamento della BigEasyDriver
Lo schema delle connessioni è indicato sul sito ufficiale:
ho riprodotto il collegamento utilizzando anche arduino e cinque pulsanti con cui regolare sia il taglio dei passi ( full,half,quarter,eighth ) sia il verso di rotazione, ed ho realizzato un video del montaggio:
Oltre al video puoi consultare le foto per verificare i collegamenti del motore alla BigEasyDriver:
e dei pulsanti ad Arduino:
Ricorda che ciascun pulsant ha una resistenza di 33ohm verso il polo negativo che ti serve ad evitare di mandare in corto circuito arduino alla pressione del pulsante stesso.
Caratteristiche della BigEasyDriver
Puoi leggere il Datasheet ufficiale della sparkfun sul driver da loro realizzato tuttavia alcune caratteristiche principali sono:
- Massimo 2A per Phase
- Massimo Voltaggio: 35V
- Regolatore di alimentazione 5V/3.3V già sulla BigEasyDriver
inoltre la BigEasyDriver è in grado di gestire in completa autonomia anche frazioni di passo ossia il 1/2 passo, il 1/4 di passo, l’1/8 di passo ed il 1/16 di passo semplicemente portando ad HIGH o LOW i valori di MS1,MS2 ed MS3 secondo lo schema:
per il test puoi collegare questi pin ad arduino, rispettivamente ai pin 9,10 ed 11 e collegare 3 pulsanti ai pin 4,5,6 normalmente collegati al pin negativo mediante la resistenza da 330ohm e quindi LOW che alla pressione portano i pin arduino al valore HIGH.
Il compito di arduino in questo caso è solo quello di trasferire tale valore al pin MSx corrispondente.
Sketch di test della BigEasyDriver
int DIR = 2; int STEP = 3; int pinMS1 = 4; int pinMS2 = 5; int pinMS3 = 6; int pinDir = 7; int pinGo = 8; int MS1 = 9; int MS2 = 10; int MS3 = 11; void setup() { pinMode(DIR, OUTPUT); pinMode(STEP, OUTPUT); pinMode(MS1, OUTPUT); pinMode(MS2, OUTPUT); pinMode(MS3, OUTPUT); pinMode( pinDir,INPUT ); pinMode( pinGo,INPUT ); pinMode( pinMS1,INPUT ); pinMode( pinMS2,INPUT ); pinMode( pinMS3,INPUT ); } void loop() { digitalWrite(MS1, digitalRead( pinMS1 ) ); digitalWrite(MS2, digitalRead( pinMS2 ) ); digitalWrite(MS3, digitalRead( pinMS3 ) ); digitalWrite(DIR,digitalRead( pinDir )); if ( digitalRead( pinGo ) == HIGH ) { stepGo(); delay(1); } } void stepGo() { digitalWrite(STEP, HIGH); delayMicroseconds(100); digitalWrite(STEP, LOW); delayMicroseconds(100); }
Troverai molte similitudini con precedenti sketch utilizzati per il test di driver simili, tuttavia ci sono alcune differenze che ti elenco:
linee 01-02: definisci i pin a cui hai collegato i segnali di DIR ( direzione ) e STEP ( passo );
linee 04-08: definisci i pin a cui hai collegato i pin dei pulsanti, 4,5,6 per MSx, 7 per il pin con cui scegli la direzione e 8 per il pin che attiva la rotazione;
linee 10-12: imposta i pin a cui hai collegato i terminale MS1,2 e 3 della BigEasyDriver;
linee 15-19: attiva la modalità OUTPUT per i pin DIR,STEP,MS1,MS2,MS3 che inviano i comandi al driver;
linee 21-25: attiva i pin relativi ai 5 pulsanti in modalità INPUT;
linee 30-32: per ciascun pin di INPUT connesso ai pulsanti MS1,MS2 ed MS3 leggi con il comento digitalRead() il suo valore e invialo al pin di OUTPUT corrispondente con il comendo digitalWrite();
linea 33: leggi il valore del pulsante DIR ed invialo al rispettivo pin STEP, otterrai che premendo o rilasciando il pulsante connesso al pin 7 il motore ruoterà in senso orario o antiorario;
linea 35: alla pressione del pulsante pinGo ( 8 ) il valore letto dal comando digitalRead() passerà a HIGH e la condizione sarà verificata eseguendo quando definito tra l parentesi graffe;
linea 36: richiama la funzione stepGo() che impartisce il comando al driver;
linea 37: attendi 1 millisecondo per consentire al motore di eseguire il passo prima di ricominciare il coclo di loop();
linee 41-46: definisci la funzione di tipo void stepGo() il cui scopo è far avanzare il motore di un passo ogni volta che viene invocata. Per impartire tale comando utilizza digitalWrite() intervallato da tempo in microsecondi di 100. Il passaggio da HIGH a LOW del pin STEP indica al motre di eseguire un passo ( step ).
Il video del test
Puoi vedere il test di funzionamento del driver nel video seguente:
Ora sai come utilizzare al meglio il BigEasyDriver per il tuo progetto. Puoi iniziare a sperimentare e scrivere il tuo sketch di progetto.
Buon divertimento !!!
Prima di inserire un commento, per favore, leggi il regolamento
6 pings