«

»

Set 06

Stampa Articolo

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.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>