Qualche mese fa un appassionato utente del Blog mi ha fatto omaggio di un EasyDriver, un driver per motori passo-passo bipolari, a sostegno del Blog.
Questo driver è prodotto dalla sparkfun e si basa sull’integrato A3967, di cui trovi il DataSheet qui.
Il sostegno va premiato e ho fatto qualche test del driver per poter scrivere questo articolo.
I test li ho realizzati con un motore bipolare, identico a quello mostrato negli articoli del Dolly Project.
Ti presento due sketch, il primo è un esempio di rotazione oraria e antioraria programmata, ossia già definita che il motore bipolare compie; il secondo sketch fa uso di 4 pulsanti na con cui impartire degli ordini al motore, definisci il verso di rotazione e il numero di step.
Componenti
Iniziamo subito dal materiale utilizzato:
- n.1 arduino Leonardo, puoi utilizzare qualsiasi scheda Arduino in tuo possesso;
- n.1 EasyDriver
- n.1 motore stepper bipolare
- n. 4 pulsanti na ( normalmente aperti )
- n. 4 resistenze da 330Ω
- n.1 breadboard
- n.1 batteria per alimentare il motore
- un po di cavi per breadboard
Schema di collegamento dell’EasyDriver
Per collegare l’EasyDriver ad Arduino ed alimentarlo separatamente puoi seguire questo schema:è valido sia per il primo che per il secondo sketch del tutorial.
In basso a sinistra dell’EasyDriver trovi l’alimentazione del modulo (PWR) che devi collegare al terminale positivo ( + ) e meno ( GND ) della batteria esterna.
Sempre in basso sulla destra ci sono i 4 pin delle 2 fasi ( A e B ) del motore bipolare, se il tuo motore è differente puoi leggere questo articolo per imparare a riconoscere le fasi di un motore bipolare.
I due pin in alto a sinistra sono collegati, partendo da sinistra, rispettivamente al pin 2 e 3 di arduino.
I 4 pulsanti, scorrendo da sinistra a destra, sono connessi ai pin 4,5,6 e 7 di arduino ed al terminale positivo di alimentazione dell’EasyDriver in modo diretto e al terminale negativo mediante una resistenza da 330ohm.
Ricorda di collegare il terminale negativo ( GND ) della batteria ad Arduino per chiuere il circuito, ATTENZIONE: solo il terminale negativo.
Il primo sketch dell’EasyDriver
Questo primo esempio ti mostra come impartire al driver i comandi per far ruotare il motore di 1600 passi in un verso e di 8000 passi nel verso opposto:
int dirPin = 2; int stepperPin = 3; void setup() { pinMode(dirPin, OUTPUT); pinMode(stepperPin, OUTPUT); } void step(boolean dir,int steps){ digitalWrite(dirPin,dir); delay(50); for(int i=0;i<steps;i++){ digitalWrite(stepperPin, HIGH); delayMicroseconds(100); digitalWrite(stepperPin, LOW); delayMicroseconds(100); } } void loop(){ step(true,1600); delay(500); step(false,1600*5); delay(500); }
leggilo riga per riga:
linee 01-02: imposta i pin a cui hai collegato il pin relativo ai comandi di direzione e step;
linee 05-06: definisci per ciascun pin definito la modalità di funzionamento OUTPUT con il comando pinMode( pin,mode);
linea 09: definisci la funzione step( direzione,passi ) userai questa funzione in seguito nel loop() per impartire al driver i passi da far eseguire al motore e la direzione in cui farglieli eseguire;
linea 10: scrivi in digitale il valore di direzione al pin corrispondente, in questa funzione la direzione è il primo parametro e il pin a cui inviare il segnale di direzione è dirPin;
linea 11: attendi 50 millisecondi prima di eseguire le linee successive, questo tempo ti garantisce che il driver possa impostare correttamente la direzione come impostata alla linea 10;
linea 12: imposta un ciclo da 0 al valore di passi che hai ricevuto come secondo parametro della funzione;
linea 13: per ciascun ciclo del for definito alla linea 12 imposta il valore del pin stepperPin ad HIGH, lo fai attraverso il comando digitalWrite( pin, valore ) che invia al pin definito il valore che gli passi come secondo parametro;
linea 14: attendi un tempo di 100 miscosecondi prima di passare al comando successivo;
linea 15: riporta a LOW il valore del pin stepperPin annullando quindi il segnale inviato precedentemente;
linea 16: attendi un tempo di 100 microsecondi prima di passare al ciclo successivo.
Il passaggio HIGH -> LOW con un tempo di 100 microsecondi di attesa tra il primo ed il secondo serve ad impartire l’ordine di fare un passo nella direzione specificata alla linea 10, quindi ogni ciclo di for è un passo;
linea 20: definisci la funzione loop();
linea 21: richiama la funzione step( dir,passi ) vista alle linee 09-18 passando come direzione true interpretato come HIGH, e come passi 1600;
linea 22: attendi 500 millisecondi prima di eseguire il passaggio successivo;
linea 23: richiama la funzione step ( dir,passi ) questa volta passando come valore di direzione false e come numero di passi 1600*5 = 8000;
Ecco il risultato di questo sketch in pratica:
Il secondo sketch dell’EasyDriver
ecco come con 4 pulsanti cambiano le cose:
int dirPin = 2; int stepperPin = 3; int buttOrario = 5; int buttAntior = 4; int buttPiu = 6; int buttMeno = 7; int stepNumber = 100; int direzione = true; void setup() { pinMode(dirPin, OUTPUT); pinMode(stepperPin, OUTPUT); pinMode( buttOrario, INPUT ); pinMode( buttAntior, INPUT ); pinMode( buttPiu, INPUT ); pinMode( buttMeno, INPUT ); } void step(boolean dir,int steps){ digitalWrite(dirPin,dir); delay(50); for(int i=0;i<steps;i++){ digitalWrite(stepperPin, HIGH); delayMicroseconds(100); digitalWrite(stepperPin, LOW); delayMicroseconds(100); } } void loop(){ if ( digitalRead(buttPiu) == HIGH ) { stepNumber = (stepNumber + 100); } else if ( digitalRead(buttMeno) == HIGH ) { stepNumber = (stepNumber - 100); } if (stepNumber <= 0) stepNumber = 0; if ( digitalRead(buttOrario) == HIGH ) { direzione = true; } else if ( digitalRead(buttAntior) == HIGH ) { direzione = false; } step( direzione,stepNumber ); }
non riprenderò la descrizione delle linee che già hai visto, ma descriverò solo quelle differenti o nuove:
linee 04-05: definisci i pin a cui colleghi i pulsanti di direzione, orario e antiorario;
linee 07-08: definisci i pin a cui colleghi i pulsanti più e meno;
linea 10: definisci la variabile stepNumber, preimpostata a 100, contenete il numero di step da eseguire;
linea 11: definisci la variabile direzione, preimpostata a true, in cui memorizzerai il valore di direzione in cui il motore deve ruotare;
linee 17-20: imposta la modalità di funzionamento dei pin legati ai pulsanti, saranno pin in modalità INPUT in quanto leggono il segnale proveniente da un input esterno;
linee 23-32: definisci la funzione step( dir,passi ) in modo del tutto identico al primo sketch;
linea 36: con il comando digitalRead( pin ) leggi il valore del pulsante connesso al pin buttPiu se tale valore è HIGH vuol dire che è stato premuto;
linea 37: la pressione del pulsante Più causa un incremento di 100 passi della variabile stepNumber;
linea 38: esegui la medesima verifica della linea 36 ma per il pin a cui è collegato il pulsante buttMeno;
linea 39: se il pulsante Meno è stato premuto decrementa di 100 il valore di stepNumber;
linea 41: è un controllo impostato per evitare che il valore della variabile stepNumber possa andare sotto al valore 0;
linee 43-47: esegui le stesse operazioni viste per i pulsanti buttMeno e buttPiu con la sola differenza che invece di incrementare o decrementare una variabile ne cambi il valore da true a false;
Buon divertimento !!!
82 commenti
1 ping
Vai al modulo dei commenti
Grandissimo Mauro
Ottimi esempi di utilizzo di questa schedina interessante (poter pilotare da dir e step è un verso lusso!)
Complimenti !
Ciao Mauro , grazie per questo tuo blog, xchè oltre ad essere molto preciso e creativo, fa conoscere il mondo dell’elettronica a tutti. Devo dire che questo tuo lavoro ( Schema di collegamento dell’EasyDriver ) è molto interessante e si addice al progetto che vorrei creare e che ti ho spiegato a grani linee. Quello che mi chiedo se mi permetti , c’è la possibilità e come, di farmi aiutare da te in questa creazione?
Autore
Ciao Matteo,
io cerco di offrire a tutti il mio aiuto e contributo per i progetti che avete in mente.
Siete tanti e a volte non riesco a seguire tutti, per questo chiedo ad ognuno di sperimentare con le proprie mani, cercare nel Blog gli articoli per capire come realizzare gli oggetti e non arrendersi davanti ai primi errori … io faccio così in ogni progetto e di solito ripaga ( non mi rifersco a questioni economiche).
Il Blog vuole essere anche punto di incontro per cui descrivi qui il tuo progetto e se non posso darti io subito un aiuto magari lo farà qualche altro appassionato.
Mauro
Ciao Mauro, proprio in questi giorni sto cercando i componenti per realizzare un progetto con motori passo passo, ho buttato l’occhio su EasyDriver (max 0.75A) e su A4988 Stepper Motor Driver (max 2A).
Dispongo poi di un alimentatore di un vecchio pc.
La mia domanda è la seguente:
Come scegliere un motore passo passo bipolare ed un driver adatto, cercando di risparmiare sui costi, ma che sia potente (2-5Kg*cm) e preciso? Dove trovarlo? ho girato in parecchi siti ma sembrano “tutto esaurito”
Come alimentarlo con l’alimentatore del PC e collegarlo poi ad Arduino?
Ho spiato il progetto RepRap che utilizza un Enea17 1.8° 200 step, ma ho notato che hanno costruito un Driver dal costo elevato (35euro) per pilotare i motori.
Autore
Ciao Ivan,
un motore passo passo lo puoi scegliere in funzione di molti valori e se ne producono di tanti tipi.
Un parametro sono i Kg*cm che tu indichi con un range molto ampio ( 2-5Kg*cm ) altri parametri sono:
– l’assorbimento necessario per scegliere il driver;
– il numero di step
– l’angolo
– la coppia ( solitamente espressa in N*cm )
Nema è uno standard industriale che individua il tipo di fissaggio: NEMA17 (42x42mm), NEMA23 (57x57mm), NEMA34 (86x86mm) e NEMA42 (108×108).
Io compro da robot-domestici.it di cui sono partner e a catalogo hanno questo articolo:
http://www.robot-domestici.it/joomla/component/virtuemart/robotica-domotica/motori/motori-passo-passo/stepper-motor-68-ozin-400-stepsrev
ha un attacco di tipo Nema17 ( simile a quello utilizzato dalla rep-rap )
una coppia di 48N*cm circa 4,89Kg*cm
1.7A per fase ( potresi utilizzare quindi il driver A4988 )
ed ha 400 passi per giro.
Se ti occorrono altre informazioni prova a scrivermi e cerco di fornirtele.
Mauro
Buon giorno Mauro, io sto cercando di fare una cosa simile solo con due stepper (e 2 pulsanti per motore)… ho il dubbio però che l’easy stepper (nel caso dovrei prenderne 2) non sia sufficiente per pilotare questi e non sono in grado di valutarlo… puoi chiarirmi tu se va bene o se devo pensare a qualcosa di più adatto?
Grazie
Autore
Ciao Andrea,
Il link mi porta ad un carrello vuoto.
Dovresti inserire il modello del motore nel commento, non il link.
In ogni caso puoi leggere le caratteristiche dell’Easydriver nel sito sparkfun
Mauro
boh… a me il link si apre sulla scheda… comunque il modello è il 535-0439 (57mm – 1,8° – 2,5V – 2,8A – 4 fili)
Ho letto le specifiche dell’easy driver, dice che può pilotare fino a 750mA per fase mentre il motore indica un valore di 2.8A che se è per singola fase escluderebbe l’uso dell’easy driver (anche se mi sembra un po’ alto come valore)
Autore
Ciao Andrea,
ho letto le caratteristiche e l’Easy Driver non è adatto.
il suo datasheet riporta le correnti di cui parli, tu hai neccessità di una coppia così elevata?
Potrei consigliarti altri motori stepper da 200passi 1,8° che io ho provato con l’easydriver e non mi hanno dato problemi.
Mauro
no, non ne ho necessità ma “purtroppo” li ho gia in casa quindi mi devo arrangiare… temevo che l’easydriver non fosse adatto e vedo che nemmeno il big easy va bene… hai per caso un qualche driver da consigliarmi?
Ciao Mauro
Volevo sapere se io alimento Easy Driver con 12 Volt come posso collegare poi questo per alimentare arduino
senza che Arduino venga alimentato ne da porta USB ne da suo plug?
Grazie in anticipo!
Autore
Ciao Albano,
puoi utilizzare il pin di arduino Vin, anche se io sconsiglio i 12v diretti su arduino anche dal suo plug.
Se leggi le specifiche i alimentazione sul sito arduino vedrai che é considerata una tensione limite.
Mauro
Mi pare che Easy Driver ha un uscita Vout di 5V. Posso collegare questa uscita a Vin di Arduino ( se i 5V non siano pochi?) oppure usare un regolatore di tensione tipo L7809 (9V) tra Easy Driver e Vin di Arduino?
Grazie!
Ciao Mauro, complimenti per il Blog che hai realizzato, grazie a questo sono riuscito a muovere i primi passi con Arduino anche se adesso a dire il vero sono entrato in un vicolo cieco.
Io utilizzo Arduino 1, easy dryver 4.4 e un motorino passo passo 2 fasi.
Sul funzionamento, assorbimento e divisione dei passi del motore non ho dubbi, non è così però il driver, in pratica non capisco come farlo partire con un pulsante, in pratica come alimento il tutto il motore gira subito, riesco invece a farlo girare in senso contrario quando premendo un altro pulsante alzo o abbasso un’uscita di Arduino collegata a DIR del dryver.
A dire il vero adesso lo start lo dò alzando un’uscita di Arduino collegata a ENABLE del dryver, così facendo però inibisco tutte le uscite del dryver e il motore si ferma però non è bloccato mentre io avrei bisogno di fermarlo in tiro.
Spero che avrai tempo di rispondermi, sono sicuro che un problema che a me al momento è insormontabile per te risulterà sicuramente banale.
Grazie
Autore
Ciao Pier,
grazie per i complimenti.
Ciò che vuoi realizzare lo devi fare con lo sketch arduino e non con le uscite del driver.
In pratica è Arduino a decidere quando far partire il motore ( pin connesso a Step dell’easyDriver ) e in che direzione ( pin connesso a Dir dell’EasyDriver ).
Per l’uso dei pulsanti ed Arduino trovi molti articoli sul blog dedicati a come collegarli e riconoscerne la pressione da arduino.
Mauro
Grazie per la risposta sollecita, ho appena provato a mettere manualmente l’ingresso step basso (fisicamente ho messo l’ingresso a gnd) e ho notato che il motore rimane fermo e bloccato come vorrei farlo da software, mi viene da pensare che fino a quando non premo il pulsante tengo bassa l’uscita step, quando lo premo inizia la sequenza di impulsi.
Adesso scrivo il codice e ti farò sapere.
Pier
Autore
Ciao Pier,
intuizione perfetta.
Mauro
Funziona benissimo, a volte la soluzione è talmente banale che non si riesce a vedere.
Condivido la tua filosofia, indirizzare la gente sulla strada giusta aiuta e alla fine paga, copiare paga subito ma alla lunga non serve.
Grazie e buona giornata.
Pier
Autore
Bravissimo, sono contento che tu abbia trovato la strada giusta.
Mi fa piacere sapere di non essere solo anche nella filosofia del suggerire invece del fare al posto tuo, ti da maggiori soddisfazioni.
Mauro
Buongiorno, mi sono affacciato da poco al mondo di Arduino e devo dire che il tuo blog mi sta aiutando tantissimo in questo nuovo hobby.
Me la cavo piuttosto bene con la parte di programmazione ma sono un vero principiante per quanto riguarda l’ elettronica, quindi volevo chiederti, che fonte di alimentazione mi consigli di usare per pilotare un motore come il nema 17 stepper motor in microstepping usando un easy driver (ho lo stesso modello che usi nell’ articolo)?
Grazie anticipatamente
Autore
Ciao Simone,
Il Nema 17 puoi pilotarlo da 5v a 12v se non sbaglio.
consiglio di controllare se a 12v scalda troppo dopo un po’ che é in funzione riduci a 9v o meno.
Mauro
scusate ma la batteria per alimentare il motore passo passo raffigurata nel video è diversa da quella dello schema a 9 V
Autore
Ciao Alex,
a quale schema ti riferisci?
Nel video la batteria è composta da 6 elementi tipo AA da 1,5v ciascuno = 9v
Mauro
ciao Mauro,
ho letto i vari commenti e anch’io ho lo stesso problema di Andrea, nel senso che l’easy driver non va bene per i motori che ho io (bipolari, 4 fili, 2 A).
vorrei chiederti cosa posso usare per controllare questi motori, grazie mille!
Autore
Ciao Francesco,
se cerchi nel Blog ho scritto un articolo sulla BigEasy Driver che ha caratteristiche di Amperaggio superiori.
Prova a verificare sul sito del produttore se può andar bene per le tue esigenze.
Mauro
Ciao Mauro,
Non ho capito un paio di cose, se per favore me le potresti chiarire:
Perchè utilizzi 4 resistenze da 330 ohm? Dove le colleghi? E perché proprio 330 ohm?
Il motore lo alimenti a 9 Volt anche se la sua tensione nominale è 12 V?
Ho letto che sei partner del sito robot-domestici.it, mi potresti linkare tutto l’occorrente per replicare il tuo progetto (tranne Arduino)? Grazie anticipatamente.
Autore
Ciao Angelo,
Le 4 resistenze ti servono come pull-down dei pulsanti, se non sai come collegarlo puoi leggere le prime lezioni del mio corso on-line in cui racconto le basi dei circuiti arduino.
Per il materiale ti consiglio di rivolgerci a loro asse dogli il link del progetto e farti comporre un elenco di componenti perché non esiste nulla di già pronto.
Mauro
Grazie Mauro, già ho prenotato, l’occorrente mi dovrà arrivare a giorni. Spero di poter realizzare al più presto possibile le eperienze con easy driver che hai riportato nel tuo blog.
A presto, Angelo.
Autore
Bene Angelo,
sono certo e con tanta buona volontà e leggendo bene tutti i miei tutorial ci riuscirai.
Mauro
MAGNIFICO!!!! Finalmente ieri ho avuto un pò di tempo e ho provato la riduzione del passo con easy driver
https://www.mauroalfieri.it/elettronica/tutorial-easy-driver-arduino-stepper.html
e funziona tutto alla perfezione!!!! … Mi piace! Mi piace! Grazie! 😀
Volevo chiederti un’ultima cosa: il circuitino che ho montato per ridurre il passo con easy driver è lo stesso di questo tutorial di qui sopra? Se carico i due programmi di questo tutorial di qui sopra senza toccare niente nel circuito il tutto funziona?
GRAZIE ANTICIPATAMENTE !!!! 🙂
P.S. Te lo chiedo senza averlo provarlo prima perché ho letto da una parte che in certi casi, se si programmano i pin sbagliati, si rischia di brucia qualche pin!
Autore
Ciao Angelo,
tutti i tutorial su miei progetti sono già testati da me.
Se usi collegamenti e sketch pubblicati in un articolo solitamente non hai problemi.
Mauro
Ho chiesto del circuito perché quì manca lo schema fatto con fritzing e, quindi, mi è venuto il dubbio che potesse essere diverso da quello che ho utilizzato per ridurre il passo.
Quindi, il mio non era un dubbio verso i tuoi tutorial. Anzi, aggiungo che questi tutorial del tuo blog sono fatti davvero bene, si vede che c’è del tempo e del lavoro buttato sopra, sono chiari e dal contenuto significativo e affascinante, hai creato veramente tanti gioielli del sapere su questo settore! Complimenti!
Autore
Grazie Angelo i complimenti fanno sempre piacere.
Per lo schema puoi utilizzare quello standard consigliato dal produttore della EasyDriver o utilizzato in altri articoli dedicati a questo driver.
Mauro
Ciao Mauro, prima di tutto complimenti per le tue lezioni molto chiare e al tuo impegno per renderle pubbliche.
Con un amico abbiamo iniziato da pochi giorni a fare amicizia con arduino uno, led, relè, passo passo…
Un po’ di esperienza con la programmazione l’avevo fatta a suo tempo con i moduli della parallax e
adesso si cambia linguaggio.
Il problema è questo o almeno io non lo capisco, realizzato il tuo schema per collegare uno stepper ad arduino tramite la schedina EasyDriver e programmato con il primo listato, tutto bene il motore gira ma perchè
se il motore è un 200 passi e alle righe 21 e 23 metto come valore 200 non fa un giro completo ma molto meno
forse 1/8 di giro, certamente qualcosa ci sfugge.
Faccio presente che non sono ne un elettronico ne un programmatore e quel poco che so l’ho imparato
smanettando tra riviste e web.
Grazie per l’attenzione
Stefano
Autore
Ciao Stefano,
l’easy driver è in grado di controllare il motore con un passo a impulso ( Full ) o con le riduzioni: 1/2 passo, 1/4 passo …
Per regolare le riduzioni usa i pin MS1 ed MS2, trovi tutto in un mio articolo sempre dedicato alla EasyDriver, tali pin devi configurarli secondo la tabella del produttore per ottenere il full o le riduzioni.
Mauro
Grazie Mauro molto gentile. Avevo già dato un occhiata agli altri tuoi articoli adesso approfondisco.
Mauro buon giorno,
premessa sono TOTALMENTE a digiuno di qualsiasi tipo di programmazione, data la premessa qualsiasi , anche piccola modifica ad una sketch per me e’ impossibile.
Dovrei fare una staking motor per fotografia. Una cosa molto funzionale. Niente schermi lcd potenziometri o ammennicoli vari. Pochi pulsanti con istruzioni fisse.
Puoi aiutarmi? se come spero puoi dedicarmi un po della tua sapienza ti dico esattamente che cosa mi serve. Altrimenti grazie comunque.
Autore
Ciao Walter,
mi dedico a lavori su commissione in cui valuto e realizzo progetti per chi non è in grado di farli da solo.
Se questo è il tipo di aiuto di cui necessiti ti chiedo di inviarmi una email, anche vuota, sulla casella info del blog in modo che io possa inviarti un documento da compilare perchè io possa darti una quotazione.
Ciao Mauro
Inizio col ringraziarti per l’aiuto che dai a chi cerca di capirne di più.
Ti avevo già contattato in passato per un comando relè tramite ir ed è stato un successo….
Però ora voglio andare avanti.
Assieme un mio amico stiamo valutando di automatizzare una macchina utensile, nulla di esagerato (robot o che dir si voglia) ma semplicemente uno spostamento da un punto A ad un punto B regolato in velocità (potenziometro) ed un ritorno automatico al punto A, a piena velocità, raggiunto il punto B delimitato da un fine corsa.
Ora il mio obbiettivo era di applicare un motore passo passo ai meccanismi della macchina e al fine di ciò, dopo aver rilevato le forze in gioco ho optato per questo kit (spero che il link su un sito d’aste non sia un problema): http://www.ebay.it/itm/1-axis-Nema-42-stepper-motor-3256oz-in-Driver-DM2722A-peak-7-8A-110-230VAC-CNC-/280618276296?pt=LH_DefaultDomain_0&hash=item41562715c8.
Il gentile fornitore del kit mi ha inoltrato inoltre delle foto per il collegamento hardware ed ho notato,che secondo me, è possibile collegarlo ad arduino nello stesso modo in cui si collega easydriver.
E qui mi è venuta l’illuminazione….. visto che la lavorazione è sempre la medesima, non ha molto senso usare
un Pc con software, programma ed relativa interfaccia hardware quanto con un arduino potrei avere uno sketch ad hoc e via all’infinito…
Volevo per ciò chiederti se sai dove potevo trovare qualche sketch che poteva fare al caso mio o se puoi aiutarmi direttamente tu.
Se pensi che questo mio progetto possa essere interessante per il tuo blog e vuoi delle foto in merito, sarei felicissimo di inviartele.
Cordialmente saluto
Alex
Autore
Ciao Alex,
il tuo progetto, così come lo descrivi, sembra semplice e con buone prospettive.
E’ mio interesse poterlo pubblicare una volta concluso.
Se non ho compreso male il funzionamento è simile, non uguale, a quello del mio dolly con finecorsa, potresti partire da quello e modificare le parti che non ti occorrono, adattando il controllo del passo-passo al driver che intendi utilizzare.
In generale i link non sono un problema se non a prodotti clonati o copie di schede, l’unica cosa che i link ai siti d’asta spariscono quando il prodotto non è più in vendita e un utente che visita il blog tra 3/4 mesi potrebbe non trovarlo disponibile per questo di solito chiedo di evitarli.
Ciao Mauro
Si in effetti ai ragione per quanto riguarda il link, pertanto :http://www.longs-motor.com/productinfo/detail_12_80_176.aspx , http://www.longs-motor.com/productinfo/detail_12_25_104.aspx , (modello 42HS5460). Una cosa che mi è sovvenuta tra ieri ed oggi è stata la sicurezza bordo macchina che ne dovrò tener conto se il progetto “arduino” và a buon fine. Per ovviare a ciò ho ponderato di lasciare ad arduino il nudo e crudo compito di pilotare il driver e per quanto riguarda le interazioni tra fine corsa, pulsanti start e stop e pulsanti d’emergenza ricorrerò a Zelio della Telemecanique.
Ora il gioco per Arduino si fà più semplice in quanto se esistesse uno sketch che mi dia la possibilità di comandare il motore tramite due pulsanti e due potenziometri. il primo pulsante farà girare il motore in senso orario e il primo potenziometro ne regolerà i giri, ovvio premo il pulsante il motore gira, rilascio il pulsante il motore si ferma.Vice versa il secondo pulsante farà girare il motore in senso antiorario e il secondo potenziometro ne regolerà i giri solo nel solo senso antiorario.
Avevo già osservato il progetto dolly in tutte le sue variabili ma non mi ha attratto in quanto ci sarebbero troppe modifiche da fare ed essendo un autodidatta in linguaggio arduiniano mi troverei più a mio agio con uno sketch per lo più collimante con la mia esigenza.
Per caso sapresti aiutarmi?
Cordialmente saluto
Alex
Autore
Ciao Alex,
puoi prendere ad esempio qualunque degli sketch scritti nel blog e modificarli.
Io scrivo sketch su commissione se proprio non trovi nulla che faccia al caso tuo.
Ciao Mauro
Penso che dopo 2 giorni di ricerche sul web, opto per richiederti un aiuto diretto.
Ti Mando una mail.
Ciao e grazie
Autore
Ciao Alex,
dopo “soli” due giorni di ricerca ?
Nel blog dovresti trovare tutto … ma non bastano 2 giorni per girarlo tutto e comprendere tutti gli esempi sui motori passo-passo.
Ciao Mauro, complimenti per il blog, prendo sempre spunti interessanti.
Stavolta ho un problema che tramite il tuo blog non sono riuscito a risolvere, si tratta dell’alimentazione della scheda in questione.
Alimentandola a 5V con arduino il motore va alla grande, ma non ha la coppia necessaria per il mio progetto, pertanto, visto che il motore è riciclato da una stampante ho provato ad alimentare la scheda con un alimentatore di una stampante (HP mi pare con doppia tenzione 16 e 32V).
Attaccando i 32V va in protezione l’alimentatore, mentre a 16V il motore blocca ma non fa nessuno step (rimane fermo anche con una certa coppia).
Come ulteriore prova posseggo anche un alimentatore universale per pc portatile con tensione impostabile da 12V a 24V (5.5A). Stesso risultato a tutte le tensioni.
Sapresti dirmi il motivo di tale comportamento ed eventualmente trovare una soluzione?
Autore
Ciao Cristian,
in questo articolo io alimento il motore con alimentazione esterna, vedi il pacco batterie da 9v ( 6 x 1,5 AA ) nelle foto.
Controlla che il polo negativo, e solo quello, sia comune anche all’alimentazione arduino.
Prova con un pacco batterie o assicurati che la tensione di uscita dall’alimentatore sia stabilizzata.
Buongiorno,
previ i complimenti per la cura adottata nell’affrontare i vari temi, vorrei sapere se sai se la scheda Easy Driver possa andare bene per degli stepper unipolari a 6 fili; in caso, potresti indicarmi delle schede Shield per il caso?
grazie in anticipo
Fabio
Autore
Ciao Fabio,
la EasyDriver può, che io sappia, controllare solo motori bipolari.
Puoi usare il motore bipolare come unipolare escludendo i fili “comune”.
Ciao Mauro,
ti ringrazio per gli utilissimi post e tutorials che pubblichi. Io sto lavorando con un Arduino UNO, per costruire un controller per una antenna loop magnetica. Il motore stepper collegato ad una riduzione con un rapporto di trasmissione di 6:1 fa girare lo shaft di un condensatore variabile ad aria per aumentare o diminuire la capacità. Credo di aver letto qualcosa di analogo su questo forum. Il motore stepper è un 428YG011-25 alimentto a 12 Volt e pilotato da una scheda Easy driver. Per l’azionamento del motore ho utilizzato il codice che hai pubblicato sopra e per il collegamento del motore la stessa sequenza di colori pubblicata nell’articolo.
Ho un problema: pur dando la stessa istruzione al motore, cambiando solo la direzione il motore percorre ruota maggiormente da un verso rispetto all’altro. E’ possibile o sono io che ho preso un abbaglio?
Per conoscerne la posizione registro al compimento di ogni rotazione al posizione aggiornata, per utilizzarla in fase di impartizione del comando di rotazione affinchè il condensatore non subisca danni quando arriva al fondo corsa.
Mi sfugge qualcosa?
Autore
Ciao Andrea,
non ho compreso molto della tu spiegazione non conoscendo le antenne loop magnetico, ignoranza mia.
I motori passo-passo sono caratterizzati dalla precisione dei passi e la regolarità dell’esecuzione in entrambi i versi di rotazione per cui, se ho compreso ciò che scrivi, è quasi sicuramente dovuto ad un errore sw.
Ti ringrazio per la celere risposta, sono anch’io della tua opinione se pur mi sia difficile trovare l’errore avendo copiato il codice pubblicato ed avendo verificato che sembra essere identico. Perdona la mia ignoranza in materia ma leggendo un po di articoli mi è sorto il dubbio che possa essere il modo di pilotaggio Full step oppure il cablaggio delle fasi del motore sul controller. Potrebbe essere uno di questi fattori?
Autore
Si Andrea,
se ad esempio hai connesso in modo errato le fasi del motore potresti ottenere un comportamento anomalo in funzione del tipo di errore, il full/half/ecc.. step non cambia, almeno che tu non lo abbia fatto dallo sketch, al cambio di direzione.
Grazie!
No per lo sketch ho vergognosamente usato il metodo “copia e incolla”.
Controllerò dunque il cablaggio delle fasi.
Grazie!
Autore
Ciao Andrea,
il copia e incolla è positivo quando vuoi imparare cose nuove ed aiuta se hai un problema di malfunzionamento perché almeno partiamo da un punto comune.
Se lo sketch è esattamente quello riportato in questo articolo l’errore potrebbe dipendere da una connessione delle fasi del motore, prova uno sketch di esempio preso dagli articoli base sui passo-passo tipo “come riconescerne le fasi”
Buongiorno Mauro.
Mi associo ai complimenti dei tanti utenti di questo blog. Volevo chiederti un parere molto particolare. Sto realizzando assieme ad un collega ingegnere meccanico una pick & place “doppia”. Cerco di spiegarmi anche se è difficile. Ho quattro motorini nema17 da pilotare. A coppie di due i motori si devono muovere lungo due corse, tramite cerniere, avendo quindi stessa direzione e velocità. Sempre ciascuna coppia è collegata poi a due bracci che sorreggono il corpo di pescaggio (essenzialmente un elettromagnete). Il pick è realizzato invertendo la direzione di uno dei due motori di ciascuna coppia in modo che il corpo dipescaggio si abbassi e prelevi magneticamente il componente.
Questa pessima spiegazione (sarò contento di darti maggiori dettagli se ci possiamo sentire in privato in qualche modo), per esporti le mie problematiche. 1) Fino a ora ho provato a pilotare i 4 motori con quattro easydriver e alimentatore 12V; c’è una soluzione migliore? 2) Credo che l’attrito delle cerniere e il peso della parte meccanica siano troppi per la coppia fornita dai driver; ho provato ad aumentare l’alimentazione a 24V ma ho bruciato un easydriver (…..); conviene cambiare motori nema e prenderne quattro con maggiore coppia?
Spero tu possa venirmi in soccorso..
Autore
Ciao Gio,
il problema a mio avviso dovrebbe essere di facile risoluzione per l’ing meccanico che di certo da calcolare con grande precisione la coppia necessaria per il movimento.
Conosciuta la coppia puoi scegliere i motori adatti, coppia/fasi/potenza ed in ultima analisi dimensionare il driver per il controllo.
Buongiorno ancora Mauro e grazie per la risposta. In effetti sto valutando assieme al mio collega il problema della coppia da fornire. Avevo il dubbio che i quattro driver fossero nel contempo troppi per Arduino (Arduino UNO per la precisione) e che non dessero coppia sufficiente ai motori. Ora provo a rivalutare il tutto. Ho un solo dubbio. Ti pare possibile che con un alimentatore 24V abbia bruciato due easydriver in 5 secondi? Avrò sicuramente sbagliato qualche collegamento…..ma li ho ricontrollati 10 volte. Grazie per la tua disponibilità.
Se non sbaglio dovrebbe essere 6-30V l’alimentazione possibile per l’easydriver…
Autore
Ciao Giò,
verifica esattamente il tuo modello di easyDriver e considera però che potresti aver bruciato il driver non a causa della tensione ma dell’assorbimento delle fasi del motore.
Il modello è il 4.4., confermo che può essere alimentato 6-30V, quindi tenderi ad escludere un problema in quel senso. I motori sono bipolari 42byghw811 con una coppia di 4800g/cm., secondo me adeguati…
Mi viene questo dubbio. Il pin GND di ciascun driver è stato collegato al GND di ARDUINO, non vorrei che il collegamento sbagliato fosse quello.
Autore
Ciao Gio,
il Gnd è corretto che sia connesso al Gnd arduino per tutti i motori.
Credo svelato il mistero o almeno credo. Wantai 42byghw811 rated current 2,5A. easydriver corrent massima 750mA per fase. Asino che non sono altro, strano averne bruciati solo due. confermi?
Autore
Ciao Gio,
si hai trovato il problema, nel precedente commento mi ha sviato la domanda sui Gnd ma effettivamente la esaydriver non può controllare correnti così elevate.
Prova con i DRV8825 io li uso sulla mia Delta e funzionando davvero bene con il tuo stesso modello di motore.
salve
ho letto con interesse anche l’altro post
ma per realizzare questo che ho visto in rete
https://www.youtube.com/watch?v=cJudmksy8-k
come si fa ?
grazie
Autore
Ciao Peppe,
il progetto mi sembra complesso per affrontarlo in un commento, ti consiglio di scrivere all’autore del video per farti indicare la strada migliore.
grazie
l’avevo già fatto ……..
leggendo meglio ho capito che è un progetto poi venduto ad una ditta è anche giusto ma ….mah.
purtroppo non sono tutti come te …..grazie della tua disponibilità e per la condivisione
tenterò di realizzarlo con le tue info
ho comprato arduino e il libro primi passi in futuro spero prossimo ti infastidirò un pochino..
p.s. : mi permetterò anche di farti una piccolissima donazione ….. almeno come si dice un presente !!!!
Buon 2016,
che Dio ti doni,
per ogni tempesta un arcobaleno,
per ogni lacrima un sorriso
e per ogni problema una soluzione
Autore
Bene Peppe, fammi sapere poi come va.
salve sono un manutentore eletto-softwarista, ma un neofita su arduino, sto cercando di realizzare un progetto , collegare arduino due con relativi ”adattatori” per modificare la tensione in gioco, a 2 moduli easy driver e quindi a due motori distinti, dovrei comandare questi 2 motori attraverso 4 pulsanti, 2 per parte in maniera da fare destra con uno e sinistra con l’altro pulsante e replicare il tutto sull’altro motore, ho letto vari tutorial per il comando attraverso pulsanti ma non seguendo questa applicazione vi chiedo umilmente una mano nella combinazione di uno skethc corretto grazie, a dimenticavo, vorrei leggere anche i passi che ha eseguito il motore grazie
Autore
Ciao Paolo,
io realizzo progetti su commissione, ma non penso sia il tuo caso, se ho ben compreso vuoi realizzarlo tu.
Ti posso consigliare la lettura degli articoli e la comprensione degli stessi, spiegati linea per linea al fine di affrontare il progetto in modo consapevole.
I passi del motore non li puoi leggere, a meno di non usare un encoder, solitamente si usano i passo-passo proprio perché sai sempre dove si trovano in funzione del numero di impulsi che gli invii.
ciao Mauro, perche’ non riesco a far funzionare uno stepper con un potenziometro da 10k multigiro e invece con potenziometro (sempre 10K) normale si?????
potrebbe essere una questione di software??
grazie
Mimmo
Autore
Ciao Mimmo,
hai provato a leggere con il monitor seriale i valori che ti arrivano dal potenziometro?
Essendo un multi giro è probabile che tu debba eseguire molte rotazioni prima di ottenere un valore significativo che il codice interpreti correttamente come un movimento.
ciao, grazie per la risposta, al piu presto lo faro’.
Mimmo
Ciao Mauro,
ti scrivo perché vorrei realizzare un progetto ma non ho ben chiaro quali prodotti dovrei acquistare.
In pratica vorrei motorizzare con un motore passo passo un semplice elevatore con piano 30 x 20 cm (lunghezza x larghezza).
Al link di seguito per vedere una sua foto:
http://www.unifochimica.it/media/catalog/product/cache/1/image/230×215/9df78eab33525d08d6e5fb8d27136e95/9/1/9118926_1.jpg
Leggendo mi sembra di aver capito che dovrei prendere:
– un Arduino
– una scheda per pilotare il motore passo passo (driver)
– un motore passo passo
Il problema però è che non so quale tipo di Arduino, driver e motore passo passo possa andar bene per il mio caso.
Io vorrei fare in modo che premendo un pulsante il piano sale fino ad una determinata altezza impostata (deve essere sempre la stessa).
Premendo poi un altro tasto il piano scende fino a terra.
il dispositivo che vorrei mettere sopra all’elevatore ha un peso di 3,6 kg.
Puoi darmi qualche consiglio per realizzare questo progetto?
Cordiali Saluti,
Simone
Autore
Ciao Simone,
per l’analisi dei progetti di solito prevedo una email alla quale rispondo con i costi di analisi e verifica fattibilità.
Nel tuo caso, puoi documentarti da solo su questo blog per capire le componenti che ti servono, unica attenzione la porrei al motore da scegliere in funzione della coppia meccanica di cui hai bisogno.
Per calcolare la coppia ti servono le specifiche meccaniche del carrello o dovrai procedere con calcoli meccanici che non saprei suggerirti.
Ricorda poi che il driver deve essere proporzionato alla potenza per fase del motore scelto.
Buongiorno,
da neofita della materia, sono stato coinvolto in un progettino che prevede l’utilizzo di un motore stepper e, per motivi di coppia richiesta, la scelta è ricaduta su un motore stepper a 4 fasi Nema 17 erogante 59Ncm di coppia e da alimentare a 12V. Inizialmente si era pensato di realizzare l’azionamento di tale motore tramite Arduino, mentre per il driver la scelta è caduta su un modulo piuttosto comune nel mondo dell’hobbystica, ovvero il modulo L298n. Ben presto, però, ci siamo accorti che la corrente richiesta dal motore superava il livello di guardia del modulo dichiarato da datasheet di 2A in continua (in parole povere, è stato scelto un motore troppo “prestante” per il driver acquistato). A tal proposito vorrei chiedere se fosse possibile avere qualche consiglio sulla scelta di un nuovo driver in grado di sopportare più corrente (direi 2.5 – 3A), che possa essere controllato dall’Arduino (quindi con tensione di controllo delle fasi di 5V) e che, ovviamente, possa essere utilizzato per il controllo del motore sopra riportato (non è richiesto un controllo di tipo microstep per il motore, è sufficiente un controllo delle fasi di tipo standard). Inoltre, si era pensato di alimentare tale motore direttamente con la corrente domestica utilizzando un alimentatore per batterie con uscita da 12V: si può fare un’operazione di questo genere o bisogna necessariamente ricorrere ad una batteria esterna? Cordiali saluti,
Pepito Sbazzeguti
Autore
Ciao Pepito,
la corrente di cui necessiti è alquanto alta e penso che nel mondo non professionale e maker farai fatica a trovare un driver che supporti tali correnti.
Ti consiglio di provare a cercare nei driver per CNC semi-professionali in cui troverai certamente un driver adatto.
L’alternativa maker potrebbe essere il DRV8825, recensito su questo blog, tuttavia la corrente massima dichiarata è di 3A opportunamente raffreddato anche se personalmente non ho mai provato a usarlo con correnti così elevate.
Grazie mille per la risposta. Inoltre volevo chiedere: considerando il fatto che il progetto in questione richiede una soluzione “fatta in casa” in quanto è stato realizzato a puro scopo didattico, e premettendo che sono conscio del fatto che un motore che nasce a 12V deve essere così alimentato, può comportare qualche problema alimentare il motore in esame a 9V invece che a 12V?
Autore
Ciao Pepito,
dipende molto dal tipo di motore dovresti chiedere al costruttore.
Buongiorno,
da neofita del campo sono stato coinvolto in un progetto richiedente l’uso di motori stepper. Per ragioni di coppia necessaria, abbiamo deciso di acquistare uno stepper NEMA 17 della Quimat erogante 59Ncm di coppia, da alimentare a 12V che abbiamo decido di pilotare con Arduino e con modulo L298. Purtroppo, facendo una prova a carico ci siamo accorti che il valore di corrente va ben oltre i 2A massimi in continua previsti per quest’ultimo e, così, abbiamo pensato di cambiare modulo. Ora le chiedo, mi può dare qualche delucidazione in merito ad un possibile driver che potremmo adottare e che possa essere accoppiato ad un Arduino? Ed in particolare, conviene cambiarlo? Se sì, c’è un modello che mi può consigliare? Oppure conviene cambiare il motore? Inoltre, si pensava di alimentare il suddetto motore con un alimentatore AC/DC con tensione di uscita regolabile. E’ possibile procedere in questo senso o sussiste qualche controindicazione? Cordiali saluti,
Pepito Sbazzeguti
Buongiorno,
per un lavoro universitario vorrei realizzare un orologio movimentato da un motore passo passo e comandato da arduino. Ho a disposizione i seguenti componenti:
[ link rimossi per il regolamento del blog ]
Tramite delle riduzioni ho fatto in modo che imponendo 18 gradi al motore (10 step da 1.8°) la lancetta si muova di 6° (1 minuto). Tuttavia, data la mia totale inesperienza in materia di arduino volevo chiederle uno sketch che mi permetta far ruotare il motore di 10 step ogni tot secondi in modo da riprodurre il movimento della lancetta. Ho provato banalmente a copiare e incollare il suo primo sketch che mi sembrava appropriato ma non riesco a far muovere il motore.
grazie e buona giornata, Michele.
Autore
Ciao Michele,
i link a siti come quelli che avevi incluso sono vietati da regolamento, che ti invito a leggere, prima di commentare gli articoli.
In merito alla tua richiesta trovi sul blog moltissimi articoli dedicati ai motori passo-passo e puoi tranquillamente leggere e comprenderli per realizzare il tuo progetto.
Buonasera,
chiedo cortesemente come implementare il movimento di un attuatore, dotato di drive Linchuan DS-P200W il quale ha gli ingressi Pulse, Dir e Enable, tramite la pressione di 2 pulsanti (avanti e indietro) che bloccano il motore al loro rilascio. L’attuatore è dotato di 2 finecorsa magnetici che dovrebbero bloccare il movimento al raggiungimento di una certa posizione. E’ possibile avere indicazione sul codice da implementare e lo schema elettrico dei collegamenti dei pulsanti e dei finecorsa? Grazie.
Autore
Ciao Emanuele,
per i progetti su commissione o le lezioni private puoi leggere nella pagina “sostienimi” come ottenerli.
Se non dovessi trovare le informazioni che cerchi scrivimi alla casella email info del blog, ti invierò tutti i dettagli.
[…] hai già letto il mio tutorial sull’EasyDriver sai di cosa sto parlando e sai che anche in questo articolo potrai leggere come pilotare i motori […]