Categories: Arduino

Motore stepper con Arduino (28BYJ-48 + driver ULN2003ARG)

Ben ritrovati su 9minuti.it, oggi vedremo come utilizzare un motore stepper  con Arduino.

Si tratta di un motore standard chiamato 28BYJ-48 presente in quasi tutti i kit e che trovo sia molto interessante da far funzionare.

Il driver che utilizzeremo per questo motore è il famoso ULN2003ARG.

Questo motore ha un’ottima coppia e quindi difficilmente riusciremo a girare a mano il perno di ottone.

Motore stepper con Arduino

Il collegamento elettrico per il motore stepper con Arduino

I motori stepper possono essere usati in diverse maniere, noi lo utilizzeremo con un integrato chiamato ULN2003 che ci consentirà di utilizzarlo in maniera semplicissima con l’apposita libreria.

Come potete vedere il collegamento per utilizzare il motore stepper è molto semplice e non prevede nulla di particolare.

Nel caso si volessero collegare più motori stepper si consiglia di utilizzare un’alimentazione separata che potrà essere da 5v a 12v.

In ogni caso fino a due motori stepper 28BYJ-48 ULN2003ARG  possono essere tranquillamente attaccati direttamente ad Arduino.

 

Lo sketch per il motore stepper con Arduino

Vediamo ora lo sketch che ci aiuterà a capire come farlo funzionare per i nostri progetti.

Useremo la libreria Stepper.h già inclusa nell’IDE di Arduino.

Se non sapete come si installa una libreria vi lascio QUESTA guida dove spiego anche come installarle.

Nello sketch di esempio vedremo come far ruotare il motore stepper di 90 gradi per poi farlo tornare alla posizione di partenza dopo un secondo.

#include <Stepper.h>

Stepper myStepper(2048, 11, 9, 10, 8);

void setup() {
  myStepper.setSpeed(10);
}

void loop() {

  float gradi = 90;
  gradi = map(gradi, 0, 360, 0, 2048);
  myStepper.step(gradi);
  delay(1000);
  myStepper.step(-gradi);
  delay(1000);
}

Vediamo il codice riga per riga:

1 – Includiamo la libreria Stepper.h
3 – Creiamo l’oggetto myStepper di tipo Stepper. I parametri che inseriremo saranno il numero di step (ovvero passi) che il nostro motore dovrà compiere per effettuare un giro di 360°. Inseriremo poi i quattro pin necessari per far funzionare il motore stepper.
6 – Il metodo setSpeed() ci consente di scegliere la velocità. La scala è da 1 a 10.
11 – Ho creato una variabile di nome gradi e di tipo float e l’ho inizializzata a 90, ovvero i gradi che voglio far compiere al motore.
12 – Usando la funzione map() viene effettuata una proporzione fra i 360° di un giro completo e i 2048 step che il motore deve eseguire. Il valore restituito dalla funzione viene poi salvato all’interno della variabile gradi. In questo caso il valore sarà di 512.
13 – Il metodo step() ci consente di muovere il motore facendogli compiere il numero di step che gli passiamo come parametro.
14 – Delay di 1 secondo.
15 – Richiamiamo il metodo step(), questa volta con valore negativo.
16 – Delay di 1 secondo.

Considerazioni sul motore stepper con Arduino

Se ti è piaciuto l’articolo ti prego di farmelo sapere nei commenti e di condividerlo sulle tue pagine social in modo da supportare il blog.

Vi ringrazio per l’attenzione e rimango a disposizione per aiutarvi nel caso doveste averne bisogno.

Alessandro

Alessandro Oppo

Alessandro è un milanese che vorrebbe scappare da Milano, è appassionato di informatica ma vorrebbe vivere senza telefono, è un artigiano eppure vorrebbe robotizzare tutto, impara una cosa e già vorrebbe studiare dell’altro. Autodidatta da sempre, gli piace sbattere la testa finché tutto non funziona come vuole lui, spesso ci riesce anche! Visita il suo blog personale alexoppo.com Il motto che si ripete dentro la testa è: “Se ci sono riusciti gli altri ci posso riuscire anche io”.

View Comments

  • Ciao, ho realizzato questo semplice schetch e funziona perfettamente. Vorrei sapere perchè l'istruzione "setSpeed" ha un range da 1 a 10. Io vorrei far girare il motore più velocemente.Ho provato a modificare il valore 15,20,100, ma non funziona.E' forse un limite dello stepper motor.Io avrei bisogno di far girare una ruota velocemente del diametro di un CD magari 100 giri al minuto e controllarla con arduino.Qualche sggerimento? devo cambiare stepper motor? non ho bisogno di potenza.Grazie

    • Ciao Roberto, la velocità non può essere modificata (che io sappia), il fatto che la scala vada da 1 a 10 è una convenzione, decisa dai creatori della libreria sulla base delle specifiche del motore. Se ti serve che giri più velocemente potresti usare una serie di ingranaggi oppure utilizzare un altro motore.
      Alessandro

  • Ciao Alessandro. ho provato il tuo sketch e volevo provare a modificarlo in modo che non faccia lo stesso numero di gradi ogni volta ma cambi il numero dei gradi, però mi da l'errore " redeclaration of float gradi ". Come la modifico questa variabile?

Recent Posts

Ponti sospesi: cosa abbiamo sbagliato? cosa si potrebbe fare?

Poco prima di Natale ho avuto la fortuna di poter partecipare a un evento chiamato…

4 mesi ago

Siamo quel che facciamo? – racconto breve

Armando quel giorno era particolarmente stanco. Tutto, per quanto andasse bene, sembrava metterlo sotto pressione.…

9 mesi ago

Il limite è sempre la mente – Racconto breve

Armando guardò l’orologio e vide il proprio riflesso sul quadrante bianco. Il riflesso però non…

10 mesi ago

L’ultimo giorno del carcere – Racconto breve

I muri sono muri, lo sono sempre, anche quando le porte sono aperte. Era la…

10 mesi ago

Riflessioni sul carcere

Pochi di noi riflettono sull’esistenza nella nostra società del carcere. Il carcere è la concretizzazione…

11 mesi ago

Come dovremmo dialogare secondo me

Spesso intraprendiamo delle conversazioni e delle chiacchierate piuttosto inconsapevolmente. Voglio dire che non siamo molto…

11 mesi ago