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 !!!
6 commenti
Vai al modulo dei commenti
Buon giorno Mauro
Mi chiamo Nicola apprendista di arduino. Subito i complimenti per le tue guide sempre utili ed interessanti. Ti spiego i miei dubbi sul driver Big Easy. Ho la necessità di pilotare due stepper per un progetto che sto realizzando. Ho due driver big easy e due motori entrambi da 12v uno da 0.3A e uno da 0.6A. da 200 passi giro. Ho letto un po in giro sulle tensioni da fornire ma non ho capito molto,ossia devo fornire i 12v o piu? Se alimento con un grosso alimentatore che eroga oltre 30A devo limitare la corrente al valore max gestibile dal driver ovvero 0.6A? Aggiungo che un motore si muoverà a dx e sx di qualche decina di step per un numero variabile di volte al minuto circa da 10 a 50 volte e serve coppia e che tenga la posizione. L altro girerà continuamente per un numero di giri da 10 a 70 al minuto e serve che dia la sua massima coppia. Per il lato programmazione ci arrivo fuori . Mi serve solo capire come gestire le tensioni/correnti. Ho gia bruciato una big easy ,alimentata da una batteria lipo da 11.1v ma capace di 80A . Se mi fai luce su questo problema te ne sarò molto grato. Ciao
Autore
Ciao Nicola,
la corrente assorbita dai motori mi sembra esigua per creare danno alla BigEasy Driver, probabilmente si è bruciata perché i motori hanno richiesto correnti superiori a quelle dichiarate e questo potrebbe essere accaduto a causa di una errata dichiarazione da parte del motore.
In generale se alimenti un driver con una corrente superiore a quella necessaria esso si limiterà ad assorbire quella di cui necessita.
ciao ,
ok ho capito. ma siegami pechè su un altro altro forum mi hanno detto che la big non va bene perché controlla i motori in corrente mentre questi tipi qua vanno controllati in tensione? a me pur funzionavano, magari non con la logica giusta? al posto della big easy se vorrei qualcosa di più potente come corrente massima che driver mi consiglieresti da abbinare ad Arrduino che sia sempre possibile comandare direzione velocità ecc. grazie . sei forte.
è normale che il chip della big easy dopo poco tempo diventasse molto caldo? necessita di dissipazione? è che il motore su cui l’ho testato è stato comperato nuovo con appunto 12V e 0,3A di assorbimento. ancora una cosa che non ho a mente e vorrei esserne sicuro, il negativo dell’alimentazione esterna della big, va anche collegato al negativo di arduino ?
Autore
Ciao Nicola,
non conosco i motori che stai utilizzando, probabilmente chi ti ha risposto nel forum conosce il tipo di motori che stai utilizzando.
Il chip va dissipato adeguatamente durante il suo lavoro, lo trovi anche nel sito del produttore.
Il negativo di arduino e di ogni altro circuito presente nel progetto deve essere connesso, per questo in italiano lo chiamiamo comune.
No. Nell altro forum non ho scritto altri dati sui motori. Ho solo detto che sono dei bipolari da 12v e 0.3 0.6A . Ti volevo chiedere tu che sei anni luce avanti a me , eventualmente ce un driver piu potente in ampere che sia facile da collegare e pilotare come la big easy? Mi mancano solo i motori per finire il mio progetto dell avvolgitore automatico di bobine per trasformatori. Ho anche una adafruit motor shield v1.0 ma regge solo 0.6A.
Autore
Ciao Nicola,
di driver io ne ho provati e uso regolarmente alcuni noti:
– A4988
– DRV8825 ( il mio preferito )
– Easy Driver
– Big EasyDriver
A mio avviso tutti possono sopperire al tuo problema di controllo date le correnti di cui mi parli, anche se in assoluto il BigEasyDriver è quello in grado di erogare correnti superiori.
Superiori a questi driver esistono nel mondo delle CNC professionali che controllano carichi anche superiori ai 5/10A con costi corrispondenti alle prestazioni.