«

»

gen 18

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.

Important!


Gentilmente NON incollare sketch nei commenti, usa la casella info del blog che trovi nella pagina contatti.ù

Ti è stato utile questo articolo?
Sostienimi cliccando sugli sponsor, io potrò continuare ad acquistare materiale per scrivere articoli e aiutarti nei tuoi progetti.

Basta un solo click al giorno.

Be Sociable, Share!

4 comments

4 pings

  1. Mirko

    Cao Mauro, complimenti ancora per il tuo blog più leggo gli articoli più mi rendo conto di quanto questo blog per un neofita come me che ha tanta voglia di sperimentare, ma poche conoscenze, sia una miniera.Volevo chiederti se è molto difficile implementare un potenziometro che regoli la velocità del giro del motore e se il motore potesse girare in continuo premendo solo una volta il tasto e si stoppasse ripremendo il tasto. Ho letto che intendi realizzare uno slider per camera io volevo utilizzare questo progetto per farlo solo che vorrei effettuare queste modifiche. Se vuoi ti passo dei render che ho fatto per sviluppare il progetto. Al momento è solo un render in 3d, ma quanto prima inizierò i test. Con tutte le informazioni che ho attinto da questo blog mi sento di dirti che se lo ritieni valido e funzionale puoi svilupparlo ed implementarlo come vuoi :-)

    1. Mauro Alfieri

      Ciao Mirko,
      i tuoi progetti mi interessano e se vuoi condividerli sarò felice di farlo.
      Per la modifica che vuoi fare é possibile.
      Io la farei con un while() come ho fatto nell’ultimo articolo sul Dolly pubblicato Mercoledì.

      Se vuoi realizzare un dolly per videoriprese, o slider, sto proprio lavorando ad uno slider che é già in kit su robot-domestici.it

      Ti sottopongo una richiesta, poiché sai disegnare in 3D, saresti disposto a disegnare una scatoletta da far stampare in 3D in cui sistemare tutta la parte elettrica degli ultimi dolly che ho presentato? Motore escluso.

      Mauro

  2. Daniele

    Salve Mauro, ho visto dei tuoi tutorial su youtube,e mi complimento.
    La contatto, perché credo che la cosa che io ho in mente sia per lei di una semplicità enorme.
    Possiedo una giulietta ed sto cercando di effettuare un lavoro tipo questo: http://youtu.be/UiTvN4T9QCU

    Non riesco a capire come poter utilizzare un motore passo passo per far alzare in automatico il monitor al momento in cui si gira la chiave dell’auto,oppure quando s’inserisce la retromarcia.

    Ed oltre all’automatico avere a disposizione un potenziometro per il manuale,il cosiddetto tilt quando si ha un riflesso di sole.

    Grazie mille

    1. Mauro Alfieri

      Ciao Daniele,
      bel progetto quello che stai realizzando.
      Ho spostato il tuo commento in questo articolo perché ciò che ti occorre è spiegato in questo articolo.
      Se hai dubbi, commenta questo articolo con le domande o le cose poco chiare.

      Mauro

  1. Mauro Alfieri » Blog Archive » Motori passo-passo bipolari comandati da interruttori – seconda parte

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

  2. Mauro Alfieri » Blog Archive » Motori passo-passo bipolari comandati da interruttori – terza parte

    [...] 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. Mauro Alfieri » Blog Archive » Come eccitare un motore passo passo bipolare – prima parte

    [...] 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. Tutorial: motore DC controllato da interruttori e potenziometro » Mauro Alfieri

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

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

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