I commenti agli articoli e le email spesso chiedono se esiste una stepper motor shield a cui collegare due motori passo-passo.
La richiesta che più spesso mi è arrivata ultimamente è di poter controllare in vari modi due motori passo-passo, o stepper, in pratica l’esigenza è di controllare un sistema di assi cartesiani con un joystick.
Ho quindi deciso di cercare, acquistare e testare una scheda che potesse svolgere tale compito per rispondere ai Francesco, Antonio, Marco, Luigi ecc.. che negli ultimi mesi si sono avviciati ad arduino abbatsanza da reputarlo utile per il loro progetto ma non possiedono le conoscenze necessarie a realizzarle con una scheda autocostruita.
Nella ricerca di una shield che potesse rispondere all’esigenza ho scelto la dual bipolar stepper motor shield che ho acquistato per i miei primi esperimenti.
Sul sito robotics-3d.com ho trovato anche ua serie di link interessanti alla wiki che da sempre DFrobot realizza per i suoi prodotti.
Schema collegamenti Dual Stepper motor shield
Nella WiKi di cui trovi il link nel paragrafo precedente trovi anche lo schema seguente:
in cui è rappresentata la dual stepper motor shield collegata a due motori stepper e sono evidenziati pin di collegamento che la shield non utilizza per il suo regolare funzionamento.
In particolare puoi nota:
i due box in blu che contrassegnano gli switch con cui puoi definire i microstep per ciascun motore;
il box, in arancio, in alto al centro che contrassega i pin digitali liberi: 0,1,2,3,8,9,10,11,12,13;
il box, sempre arancio, in basso che contrassegna i pin analogici, non usati dalla shield: A0-A5;
dalla posizione e serigrafia dei pin ti rendi rapidamente conto che i pin usati saranno: 4,5,6,7 e per conoscere come questi sono utilizzati dalla shield puoi consultare lo sketch di esempio che per questo primo articolo ho deciso di utilizzare.
Configura i microstep
Hai letto che la stepper motor shield è dotata di due selettori, un per ciascun motore, che ti permette di selezionare i microstep.
In passato ed in altri articoli ho già decritto cosa cono e dimostrato come funzionano, ricorderai forse il video in cui uno stepper compiva il medesimo numero di passi ma con microstep differenti ottenendo coperture circolari pari alla differenza di step impostata:
con questa shield puoi definire gli step ed i microstep usando la tabella rilasciata dal produttore:
Lo sketch test della stepper motor shield
Lo sketch che useremo come esempio per testare la stepper motor shield è preso direttamente dal sito del produttore:
/* This sample code is for testing the 2 stepper motors The rotation velocity can be adjusted by the code switch Microcontroller: Arduino UNO */ int M1dirpin = 4; int M1steppin = 5; int M2dirpin = 7; int M2steppin = 6; void setup() { pinMode(M1dirpin,OUTPUT); pinMode(M1steppin,OUTPUT); pinMode(M2dirpin,OUTPUT); pinMode(M2steppin,OUTPUT); } void loop() { int j; delayMicroseconds(2); digitalWrite(M1dirpin,LOW); digitalWrite(M2dirpin,LOW); for(j=0;j<=5000;j++){ digitalWrite(M1steppin,LOW); digitalWrite(M2steppin,LOW); delayMicroseconds(2); digitalWrite(M1steppin,HIGH); digitalWrite(M2steppin,HIGH); delay(1); } }
e rappresenta un ottimo punto di partenza su cui sviluppare il tuo progetto aggiungendovi, ad esempio, dei pulsanti o un joystick.
le linee 06-09: definiscono i pin arduino che sono fisicamente connessi ai driver dei motori e che ti consentono di controllare i motori passo-passo;
linee 12-15: rappresentano l’impostazione di ciascun pin come OUTPUT;
linee 21-22: imposta a LOW il valore trasferito ai pin di direzione, 4 per il motore 1 e 7 per il motore 2;
linea 23: definisci un ciclo da 0 a 5000 step;
linee 24-25: porta i pin stepper dei due motori a LOW;
linea 26: imposta una pausa di 2 microsecondi;
linee 27-28: porta i pin di step a HIGH;
linea 29: imposta una pausa di 1 millisecondo;
Eseguendo questo sketch otterrai un movimento continuo di entrambi i motori in una direzione.
Nei prossimi articoli proverai a far ruotare il motore in direzioni differenti usando i pulsanti e, sopratutto, leggerai come collegare dei pulsanti e prendere il controllo del movimento con questi ultimi.
8 commenti
Vai al modulo dei commenti
Buon giorno Sig.Alfieri,
volevo avere delle delucidazioni da lei , prendendo spunto sull’esempio sopra riportato.
Dall’esempio del video si nota che i due motori girano speditamente .
Lo sketch riportato crea un ciclo On/Off di 500 KHz , che immagino non reale , in quanto ci sarà poi il ciclo macchina che riduce tale valore.
Le domande che le pongo sono le seguenti :
1 – che velocità ha riscontrato sui motori da lei provati.
2 – che limite in frequenza hanno i Mpp
3 – la scheda da lei usata utilizza delle rampe di accelerazione decellerazione
Ringrazio anticipatamente
roberto563
Autore
Ciao Roberto,
si hai ragione i cicli di clock sono influenzati, anche se in minima parte, dalle istruzioni ed esecuzione dello sketch.
In merito alle domande:
1. non ho mai misurato la velocità ( rpm ) per giro ma certamente dipende molto sia dalla meccanica del motore sia da cosa devono muovere in funzione della coppia nominale;
2. perdona l’ignoranza cosa sono gli Mpp?
3. in automatico nessun driver esegue rampe di acc/dec, puoi realizzarle tu via sw.
Buon giorno a tutti,
Mpp = motori paso passo
Mi riferivo alla frequenza max che il motore (mpp), può arrivare.
Ho notato che se si crea un clock di comando sui 350/400 hz il motore comincia a perdere dei passi .
mentre nel filmato da lei presentato i due motori hanno una notevole velocità e apparentemente senza perdita di passi .
Con la seconda domanda volevo capire se questo limite di frequenza/velocità variava in funzione delle caratteristiche del motore , motori con + coppia = maggiore frequenza ??
Mi scuso se non ho fatto domande specifiche sulla programmazione
Ringrazio anticipatamente
roberto563
Autore
Ciao Roberto,
ok per Mpp, ti consiglio di non abbreviare per rendere chiaro a tutti quello che scrivi.
La frequenza di funzionamento del motore, e di conseguenza la sua velocità è data da molte componenti tra cui quelle meccaniche, il driver che utilizzi e la scrittura del firmware presente nel driver oltre che dal tuo sketch.
Hello Mauro. How to connect lcd HD44780 .thanks.
Autore
Hi Vasilis,
you could found the schema in a lot of my post.
Did you search in the blog ?
Ciao Mauro come posso variare la velocità del motore? Posso variare il delay nel ciclo for?
Autore
Ciao Simone,
si, la velocità nei motori stepper sono regolate dall’intervallo di tempo che imposti tra uno stepper ed il successivo.