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.
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
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?
Buongiorno Carlo, riesci a condividere il codice che hai scritto?