Motori passo-passo bipolari comandati da interruttori – prima parte

Pilota un motore passo-passo con due interruttori. Nei precedenti articoli hai imparato a collegare e regolare la velocità di un motore passo-passo bipolare con Arduino.

Pulsanti per motori stepper

Oggi ti spingerai un po’ oltre iniziando a collegare dei pulsanti ad Arduino e utilizzandoli per posizionare l’albero del motore dove lo riterrai più opportuno.

Di pulsanti che puoi utilizzare ne esistono infiniti tipi, alcuni di questi in un progetto futuro potresti pensare di utilizzarli anche come finecorsa di uno spostamento lineare ottenuto con un motore stepper.

Per questo esperimento ti occorreranno 2 pulsanti per ogni motore che desideri pilotare, ecco come collegerai i pulsanti e Arduino:

Collegare due pulsanti ad Arduino

Nell’esempio ti ho riportato un semplice schema di collegamento di due pulsanti, il cui segnale lo potrai leggere sui pin digitali 2 e 3 di Arduino.

Avrai notato che sono anche state collegate due resistenza da 10KΩ tra il pin del segnale che arriva ad Arduino e la massa, mentre l’altro capo del pulsante è direttamente collegato al positivo ( + 5v ) di Arduino.

Quando premi uno dei pulsanti al pin di Arduino corrispondente arriva un segnale HIGH che potrai leggere con la funzione digitalRead(pin) dove pin è il valore del pin corrispondente.

Nell’esempio ho scelto di utilizzare il pulsante a sinistra, quello più vicino alla scheda Arduino, collegandolo al pin 2 e definendo che alla sua pressione il motore dovrà ruotare in senso orario; mentre premendo il pulsante di destra ( pin 3) il motore ruota in verso antiorario.

Sono convenzioni e se vuoi puoi cambiarle nel tuo sketch per ottenere un movimento più simile all’uso a cui hai destinato questo esercizio.

Per verificare che il tuo circuito funzioni, prima di collegare il motore, puoi procedere eseguendo lo sketch seguente:

#define LED 13  
#define ORARIO 2
#define ANTIOR 3

int  ora = 0; 
int  ant = 0;

void setup() {  
  pinMode(LED, OUTPUT);
  pinMode(ORARIO, INPUT);
  pinMode(ANTIOR, INPUT);
}  

void loop() {  
  ora = digitalRead(ORARIO);
  ant = digitalRead(ANTIOR);

  if (ora == HIGH) {  
    digitalWrite(LED, HIGH);
    delay(300);
    digitalWrite(LED, LOW);
    delay(300);
    digitalWrite(LED, HIGH);
    delay(300);
    digitalWrite(LED, LOW);
 }  

  if (ant == HIGH) {  
    digitalWrite(LED, HIGH);
    delay(300);
    digitalWrite(LED, LOW);
    delay(300);
    digitalWrite(LED, HIGH); 
    delay(300); 
    digitalWrite(LED, LOW);
    delay(300);
    digitalWrite(LED, HIGH); 
    delay(300); 
    digitalWrite(LED, LOW);
  }
}

Lo sketch non è complicatissimo, tuttavia lo desciverò nel dettaglio:

linea 01: definisci il pin che utilizzi per accendere il led, sarà il tuo indicatore di funzionamento, non è necessario collegare alcun led al pin 13 in quanto Arduino è già dotato di un led connesso a tale pin;

linee 02-03: definisci i pin collegati ai pulsanti come da schema, pin 2 al senso orario e pin 3 al senso antiorario;

linee 05-06: definisci due variabili di tipo  integer rispettivamente per memorizzare il valore letto sul pin 2 e sul pin 3;

linea 08: definisci la funzione setup() al cui interno devono essere inserite le linee da eseguire in una prima fase di inizializzazione dello sketch;

linea 09: imposta il pin 13 (LED) come pin di tipo OUTPUT, ossia un pin su cui Arduino invierà segnali digitali;

linee 10-11: imposta i pin 2 e 3 come pin di tipo INPUT ossia da cui Arduino si aspetterà segnali da leggere, in questo caso di tipo digitale in quanto sono pin digitali;

linea 14: definisci la funzione loop() quella che ciclicamente sarà eseguita da Arduino e che contiene le istruzioni da verificare ad ogni ciclo di clock;

linee 15-16: leggi il valore presente sul pin 2 e 3 e li memorizzi nelle rispettive variabili ora e ant definite alle linee 05 e 06;

linee 18-26: effettua un controllo sulla variabile ora che conterrà il valore letto sul pin 2; se il valore è HIGH ossia il pulsante è stato premuto esegui la sequenza di istruzioni:

  • accende il led
  • attende 300millisecondi
  • spegne il led
  • attende 300 millisecondi
  • accende il led
  • attende 300 millisecondi
  • spegne il led

L’accensione del led avviene mediante l’invio del segnale HIGH al pin 13, mentre il suo spegnimento avviene inviando LOW allo stesso pin;

linee 28-40: effettua un controllo sulla variabile ant che contiene il valore letto sul pin 3 ed esegue una sequenza simile a quella delle linee 18-26, ma con un lampeggio in più.

L’effetto ottenuto è che premendo il pulsante definito per il senso orario ottieni 2 lampeggi del led sul pin 13, mentre premendo il pulsante definito per il senso antiorario otterrai 3 lampeggi.

Una curiosità, del tutto casuale, i lampeggi sono tanti quanti il pin a cui è connesso il pulsante 🙂

Buon divertimento.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/motori-passo-passo-bipolari-comandati-da-interruttori.html

23 pings

Skip to comment form

  1. […] non sai come collegare i due pulsanti ad Arduino puoi leggere la prima parte di questa serie di […]

  2. […] Mauro Alfieri Tweet Applica le tue conoscenze al tuo progetto! Se hai letto la prima e la seconda parte di questa serie di articoli avrai certamente raggiunto il livello di conoscenza […]

  3. […] francodare Tweet Il titolo è volutamente provocatorio, se ti sono piaciuti i miei articoli sui motori passo-passo sarai ancora più interessato a quello che stai per […]

  4. […] chiesto un consiglio per realizzare il suo progetto, Gianni vuole realizzare qualcosa di simile al motore passo-passo pilotato da interruttori ma con un motore DC ( corrente continua […]

Lascia un commento

Your email address will not be published.

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