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.
