La libreria Stepper Arduino è ottima per controllare un solo stepper, ma quando si desidera controllare velocità e accelerazione dello stepper oppure è necessario controllare contemporaneamente più stepper bisogna utilizzare la libreria AccelStepper.
In questo breve tutorial vedremo come controllare velocità e accelerazione ed in una successiva lezione controlleremo più stepper.
AccelStepper aggiunge le seguenti funzionalità:
- accelerazione e decelerazione;
- supporta il mezzo passo;
- controllo di più stepper simultaneamente e simultaneamente si possono far fare passi indipendenti su ogni stepper.
AccelStepper non è inclusa nell’IDE di Arduino, bisognerà installarla.
Installazione della libreria
Per installare la libreria, andare in Sketch > Include Library > Manage Libraries…
Nel campo di ricerca inserire “AccelStepper”. Selezionare la prima voce che compare e procedere con l’installazione
Lo schema elettrico di collegamento è il medesimo visto nella lezione precedente, potete utilizzare entrambi gli schemi proposti, con alimentazione presa direttamente da Arduino o con alimentazione esterna che vi consiglio.
Codice Arduino
Di seguito lo sketch di esempio “Bounce”, che permette l’accelerazione del motore passo-passo in una direzione per decelerare e poi fermarsi. Trovate lo sketch “Bounce” tra gli esempi a corredo della libreria, su questo programma ho apportato alcune modifiche inserendo i commenti che ne spiegano il funzionamento.
// Bounce // Prof. Maffucci Michele // // Una sola rotazione in accelerazione da 0 a 2048 e viceversa // inclusione della libreria AccelStepper #include <AccelStepper.h> // definizione di una costante // funzionamento: // in fullstep impostare 4 // in halfstemp impostare 8 #define FULLSTEP 4 // creazione dell'istanza della classe mioStepper /* IN1 -> 8 IN2 -> 9 IN3 -> 10 IN4 -> 11 */ AccelStepper mioStepper(FULLSTEP, 8, 10, 9, 11); void setup() { // impostare la velocità massima, // accelerazione, // velocità iniziale // numero di passi da compiere mioStepper.setMaxSpeed(1000); mioStepper.setAcceleration(50); mioStepper.setSpeed(100); mioStepper.moveTo(2048); } void loop() { // distanceToGo restituisce il numero di passi compiuti. // Se distanceToGo raggiunge lo zero, cioè numero di passi è uguale a zero // inverte il senso di rotazione assegnando un valore negativo al numero di passi // da compiere. if (mioStepper.distanceToGo() == 0) mioStepper.moveTo(-mioStepper.currentPosition()); // se non è stato raggiunto il valore zero, muove lo stepper di un passo mioStepper.run(); }
Per maggiori informazioni vi rimando alla pagina di riferimento della libreria
Esercizi per i miei studenti
Esercizio 1
Realizzare uno sketch che da serial monitor permetta all’avvio di Arduino l’impostazione di:
- velocità massima;
- accelerazione;
- velocità iniziale;
- numero di passi da compiere;
Con l’inserimento dell’ultimo parametro ed il successivo invio si avvia lo stepper.
Esercizio 2
Eseguire le stesse funzionalità dell’esercizio precedente, ma l’avvio dello Stepper avviene solamente alla pressione di un pulsante.
Esercizio 3
Aggiungere all’esercizio precedente un pulsante di stop che permetta di interrompe in qualsiasi momento la rotazione dello stepper.