Tutorial: EasyDriver Stepper Motor

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.

EasyDriver

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.

Motore passo-passo bipolare

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:schema collegamentoè 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;

linea 48: richiama la funzione step( dir,passi ) passandogli i valori memorizzati nelle rispettive variabili direzione e stepNumber.
Ecco il video demo di questo secondo sketch:

Buon divertimento !!!

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/easydriver-stepper-motor.html

73 comments

1 ping

Skip to comment form

    • Gianni on 20 settembre 2012 at 13:49
    • Reply

    Grandissimo Mauro
    Ottimi esempi di utilizzo di questa schedina interessante (poter pilotare da dir e step è un verso lusso!)
    Complimenti !

    • Matteo Trenti on 12 ottobre 2012 at 14:02
    • Reply

    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?

    1. 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

    • Ivan on 6 novembre 2012 at 17:07
    • Reply

    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.

    1. 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

    • Andrea on 4 dicembre 2012 at 16:00
    • Reply

    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

    1. 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

    • Andrea on 5 dicembre 2012 at 09:14
    • Reply

    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)

    1. 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

    • Andrea on 5 dicembre 2012 at 10:52
    • Reply

    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?

    • Albano on 9 dicembre 2012 at 23:53
    • Reply

    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!

    1. 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

        • Albano on 13 dicembre 2012 at 19:31
        • Reply

        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!

    • Pier on 8 gennaio 2013 at 18:49
    • Reply

    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

    1. 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

    • Pier on 9 gennaio 2013 at 09:46
    • Reply

    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

    1. Ciao Pier,
      intuizione perfetta.

      Mauro

        • Pier on 9 gennaio 2013 at 15:42
        • Reply

        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

        1. 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

    • Simone on 7 marzo 2013 at 21:09
    • Reply

    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

    1. 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

    • alex on 27 maggio 2013 at 21:09
    • Reply

    scusate ma la batteria per alimentare il motore passo passo raffigurata nel video è diversa da quella dello schema a 9 V

    1. Ciao Alex,
      a quale schema ti riferisci?
      Nel video la batteria è composta da 6 elementi tipo AA da 1,5v ciascuno = 9v

      Mauro

    • francesco on 24 agosto 2013 at 11:59
    • Reply

    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!

    1. 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

    • Angelo on 7 settembre 2013 at 14:43
    • Reply

    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.

    1. 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

        • Angelo on 12 settembre 2013 at 17:12
        • Reply

        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.

        1. Bene Angelo,
          sono certo e con tanta buona volontà e leggendo bene tutti i miei tutorial ci riuscirai.

          Mauro

            • Angelo on 23 settembre 2013 at 08:00

            MAGNIFICO!!!! Finalmente ieri ho avuto un pò di tempo e ho provato la riduzione del passo con easy driver

            http://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!

          1. 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

    • Angelo on 24 settembre 2013 at 08:26
    • Reply

    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!

    1. 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

    • Stefano on 14 ottobre 2013 at 12:31
    • Reply

    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

    1. 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

        • Stefano on 15 ottobre 2013 at 09:50
        • Reply

        Grazie Mauro molto gentile. Avevo già dato un occhiata agli altri tuoi articoli adesso approfondisco.

    • Walter on 9 giugno 2014 at 09:45
    • Reply

    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.

    1. 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.

    • alex on 5 febbraio 2015 at 16:43
    • Reply

    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

    1. 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.

    • alex on 6 febbraio 2015 at 12:43
    • Reply

    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

    1. 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.

    • alex on 6 febbraio 2015 at 16:49
    • Reply

    Ciao Mauro

    Penso che dopo 2 giorni di ricerche sul web, opto per richiederti un aiuto diretto.

    Ti Mando una mail.

    Ciao e grazie

    1. 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.

    • Cristian on 1 marzo 2015 at 17:02
    • Reply

    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?

    1. 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.

    • Fabio on 9 giugno 2015 at 15:07
    • Reply

    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

    1. Ciao Fabio,
      la EasyDriver può, che io sappia, controllare solo motori bipolari.
      Puoi usare il motore bipolare come unipolare escludendo i fili “comune”.

  1. 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?

    1. 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.

    • Andrea on 9 luglio 2015 at 11:53
    • Reply

    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?

    1. 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.

    • Andrea on 9 luglio 2015 at 13:50
    • Reply

    Grazie!
    No per lo sketch ho vergognosamente usato il metodo “copia e incolla”.
    Controllerò dunque il cablaggio delle fasi.
    Grazie!

    1. 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”

    • MRG on 7 ottobre 2015 at 11:23
    • Reply

    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..

    1. 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.

        • MRG on 12 ottobre 2015 at 10:58
        • Reply

        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…

        1. 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.

            • MRG on 14 ottobre 2015 at 19:28

            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.

          1. Ciao Gio,
            il Gnd è corretto che sia connesso al Gnd arduino per tutti i motori.

            • MRG on 18 ottobre 2015 at 18:16

            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?

          2. 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.

    • peppe on 26 dicembre 2015 at 08:14
    • Reply

    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

    1. 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.

    • peppe on 31 dicembre 2015 at 05:05
    • Reply

    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

    1. Bene Peppe, fammi sapere poi come va.

    • Paolo on 10 marzo 2016 at 16:34
    • Reply

    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

    1. 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.

    • mimmo on 10 maggio 2017 at 11:58
    • Reply

    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

    1. 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.

        • mimmo on 16 maggio 2017 at 20:39
        • Reply

        ciao, grazie per la risposta, al piu presto lo faro’.

        Mimmo

    • Simone on 27 ottobre 2017 at 15:35
    • Reply

    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

    1. 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.

  1. […] 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 […]

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.