Dual stepper motor shield buttons

Dual stepper motor shield buttons aggiunge due pulsanti per ciascun motore stepper per controllare il corrispondente motore passo-passo.

Dual stepper motor shield buttons

I due motori stepper possono essere controllati in modo automatico, come hai letto nel precedente articolo, o aggiungendo dei pulsanti puoi decidere tu i movimenti da inviare alla dual stepper motor.

Userai 4 pulsanti, due per ciascun motore, con cui definire una rotazione in senso orario od antiorario.

Schema di collehamento dei bottoni

Lo schema dei collegamenti l’ho derivato, con un fotoritocco, da quello pubblicato dalla DFRobot perché non ho trovato la libreria per fritzing relativa alla dual stepper motor shield buttons:

Stepper motor shield schema

in pratica ho collegato ai pin digitali liberi i quattro pulsanti ciascuno con una propria resistenza di pull-up.

Riuscirai in questo modo ad ottenere un circuito semplice da realizzare e, sopratutto, facile da programmare.

Come funziona la dual stepper motor shield buttons

La dual stepper motor shield buttons usa i pulsanti per controllare i motori stepper seguendo questa modalità:

  • pulsante connesso al pin 9 sposta il motore in X in senso orario;
  • pulsante connesso al pin 10 sposta il motore in X in senso antiorario;
  • pulsante connesso al pin 11 sposta il motore in Y in senso orario;
  • pulsante connesso al pin 12 sposta il motore in Y in senso antiorario;

la velocità di rotazione è stabilita dallo sketch ed i micro step sono impostati nella configurazione dello sketch.

Sketch di controllo

Lo sketch di controllo è reso semplice dal collegamento elettronico in cui ciascun pulsante è collegato ad un singolo pin digitale:

const byte M1dirpin = 4;
const byte M1steppin = 5;
const byte M2dirpin = 7;
const byte M2steppin = 6;

const byte ButtM1cw  = 9;
const byte ButtM1ccw = 10;
const byte ButtM2cw  = 11;
const byte ButtM2ccw = 12;

void setup() {
  pinMode(M1dirpin,OUTPUT);
  pinMode(M1steppin,OUTPUT);
  pinMode(M2dirpin,OUTPUT);
  pinMode(M2steppin,OUTPUT);
  
  pinMode(ButtM1cw, INPUT);
  pinMode(ButtM1ccw,INPUT);
  pinMode(ButtM2cw, INPUT);
  pinMode(ButtM2ccw,INPUT);  
}

void loop() {
  if (digitalRead(ButtM1cw)  == 0)      { digitalWrite(M1dirpin,LOW);  goStepM1(); }
  else if (digitalRead(ButtM1ccw) == 0) { digitalWrite(M1dirpin,HIGH); goStepM1(); }
  
  if (digitalRead(ButtM2cw)  == 0)      { digitalWrite(M2dirpin,LOW);  goStepM2(); }
  else if (digitalRead(ButtM2ccw) == 0) { digitalWrite(M2dirpin,HIGH); goStepM2(); }
}

void goStepM1() {
	digitalWrite(M1steppin,LOW);
    delayMicroseconds(2);
    digitalWrite(M1steppin,HIGH);
    delay(1);
}

void goStepM2() {
    digitalWrite(M2steppin,LOW);
    delayMicroseconds(2);
    digitalWrite(M2steppin,HIGH);
    delay(1);
}

Descrizione dello sketch

le prime quattro linee sono identiche a quelle descritte nel precedente articolo a meno della definizione che ho preferito fare usando la costante ( const ) in byte;

linee 06-09: definici i pin a cui sono collegati i pulsanti, ricorda che hai messo le resistenze in pull-up;

linee 12-20: imposta le modalità di funzionamento per ogni singolo pin;

linea 24: verifica il valore letto sul pin ButtM1cw e confrontalo con il valore 0, ossia pulsante premuto, in modo da poter impostare la rotazione in senso orario passando il valore LOW al pin M1dirpin e invocare la funzione goStepM1() per far avanzare il motore M1;

linea 25: in alternativa alla linea 24 se il pulsante ButtM1ccw è premuto imposti ad HIGH il valore di M1dirpin in modo che la rotazione del motore sia impostata in verso contrario al precedente;

linee 27-28: esegui le stesse operazioni per i pulsanti ButtM2 e per i pin M2dirpin;

linee 31-36: definisci la funzione goStepM1() il cui compito è far avanzare il motore M1 nel verso impostato alle linee 24 e 25 usando come sistema quello descritto nel precedente articolo;

linee 38-43: definisci la funzione goStepM2() il cui compito è far avanzare il motore nella direzione definita dalle linee 27 e 28;

Test dello sketch dual stepper motor shield

Collegati i pulsanti ed i motori alla dual stepper motor shield puoi provare lo sketch:

Ora puoi personalizzare il tuo progetto per controllare il movimento di una piccola CNC o similare.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/dual-stepper-motor-shield-buttons.html

9 commenti

1 ping

Vai al modulo dei commenti

    • Vasilis il 27 Dicembre 2017 alle 10:27
    • Rispondi

    Hi, I want to make this. https://steppertune.com….. I bought the motors and DRV8825.

    1. Hi Vasilis,
      good project. I think that isn’t a open-source, or open-hardware project. You can buy it from the author site.
      Otherwise you could write the sketch yourself or could ask the sketch and the schema to the author.

    • Vasilis il 27 Dicembre 2017 alle 23:09
    • Rispondi

    Ok thanks.

    • John Pedersen il 23 Agosto 2018 alle 08:57
    • Rispondi

    Ciao Mauro Alfieri
    Da quando avevo acquistato un doppio scudo motore passo-passo bipolare per l’Arduino DRV8825 (DR10023) e 2 pezzi. NEMA 17 Stepper Motor Bipolar 1.8Deg 39Ncm 42x40mm. Ho cercato su Internet e ho trovato il tuo sito web dove è descritto molto bene e ho mostrato come testare la configurazione.
    Ma dal momento che io sono un principiante nel campo dell’elettronica e Arduino, ho usato il cablaggio dei pulsanti, ma non sono riuscito a ottenere alcun senso nel contesto, ma quando ho visto l’immagine in alto i fili erano anche cablato in modo diverso così ora funziona.
    Poiché è difficile vedere quanti resistori Ω sono, ho usato resistori da 22 K Ω
    So che il colore del cavo è diverso dalle semplici marche, ma sul gradino Nem 17 i motori sono di colore del piombo
    2B – blu
    2A – rosso
    1A – nero
    1B – verde
    Quando stavo testando il vikede layout non così la risoluzione dei problemi dopo un lungo periodo ho scoperto che la mia carta ha solo 8 di I / O al Arduino Uno (0, 1, 2, 3, 9, 10, 11, 13) quando il tuo hanno 10 I / O
    Quindi nello schizzo sulla riga 09 sono stato modificato in (09 const byte ButtM2ccw = 3;) quindi ora funziona
    Sono andato sul sito web di DFrobot e ho trovato la scheda dove c’è solo 8 I / o. Quindi DFrobot deve aver cambiato la scheda dopo aver effettuato la configurazione di prova, ma ovviamente hanno mantenuto lo stesso nome.
    https://www.dfrobot.com/wiki/index.php/Stepper_Motor_Shield_For_Arduino(DRV8825)_SKU:DRI0023
    Sul mio involucro della carta ci sono
    DFRobot
    DR 10023
    Stepper Motor Shield for Arduino
    Made in China 2018-04-11
    Ma per il resto pensavo che fosse davvero un buon setup di prova.
    Dal momento che non sono un’aquila nella lingua, io uso google translate
    Sono affiliato con Stevns MakerSpace
    https://www.facebook.com/groups/stevnsmakerspace/
    Cordialmente, John Pedersen Denmark

    1. Ciao John,
      ottimo lavoro e grazie per la condivisione.
      Non ho compreso la domanda, puoi scriverla in inglese se preferisci.

    • Antonino il 2 Novembre 2018 alle 19:14
    • Rispondi

    Ciao Mauro…complimenti per i tuoi progetti…Sono un appassionato di elettronica e fotografia…ho visto un tuo vecchio progetto mi riferisco al “dolly” mi chiedevo se fosse possibile aggiornare il progetto usando la “Dual stepper motor shield buttons” per creare il movimento su due assi…la mia idea sarebbe quella di muovere la reflex dx e sx su apposita slider e contemporaneamente dare una rotazione alla Camera su se stessa per creare il movimento “PAN” che per i timelipse é molto utile…grazie anticipatamente per tutto quello che fai e scusa per il disturbo…

    1. Ciao Antonio,
      il dolly è per me sempre un argomento attuale.
      Prossimamente pubblicherò degli articoli su una nuova shield che ho realizzato da poco e che sto testando per realizzare uno slider con motore dc ed un movimento testa con stepper.
      In questo periodo sarà difficile che io riesca a rimettere mano al progetto per adeguarlo a questa shield.
      Posso consigliarti di provarci, in attesa che io trovi il tempo di farlo, in modo che oltre a sperimentare con Arduino tu possa mettere nel progetto le tue competenze ed esigenze da fotografo che saranno certamente migliori delle mie.

      Io sono a disposizione per chiarirti ciò che leggi e non comprendi dei miei articoli e darti qualche dritta se incontri delle difficoltà.

        • Antonino il 6 Novembre 2018 alle 13:59
        • Rispondi

        Grazie Mauro per la tua risposta… al momento sto realizando la parte meccanica per la rotazione della testa e poi inizierò a provare vari modi per realizare questo progetto…appena finito magari ti inviero delle foto…a presto

        1. Ottimo Antonio, attendo fiducioso

  1. […] sketch puoi utilizzare quello presentato nell’articolo “Dual stepper motor shield buttons” in cui con due pulsanti puoi controllare l’aperture e la chiusura della mano […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.