Arduino – Motori passo passo

Uno degli shield meno costosi ma al contempo utile è il modulo stepper completo del suo motore passo passo.

stepper
Arduino stepper shield

Si trova a pochi euro sul web e permette di realizzare alcune cose interessanti. Partiamo con l’analisi del circuito elettrico.

Module stepper schema
Schema elettrico modulo stepper

Il funzionamento è alquanto semplice. Il circuito integrato, un array darlington ULN2003 contenente 7 stadi indipendenti, viene utilizzato per metà (solo 4 stadi) che pilotano le fasi di un motore stepper unipolare. Il massimo carico su questo integrato è di 500mA per ogni uscita, con una corrente totale (nel caso di più uscite in sink contemporaneo) di circa 1A. Il motore in dotazione è un 28BYJ-48 funzionante a 5V con un assorbimento di circa 100mA per fase, quindi ben al di sotto del massimo sopportabile dall’array ULN2003. Tale motore ha 64 passi ed è dotato di demoltiplica meccanica interna con divisione per 64, quindi un giro completo viene effettuato con 4096 passi. E’ dunque un motore per spostamenti micrometrici di precisione e non certo studiato per raggiungere alte velocità.

Stepper motor 28BYJ-48
28BYJ-48

Ogni stadio, come già detto, pilota una fase del motore. Questo implica che Arduino dovrà generare una sequenza adatta alle sue 4 uscite per pilotare correttamente tale motore. Di seguito la tabella “della verità” degli ingressi del modulo stepper, per accendere correttamente in sequenza le fasi del motore.

tabella stepper
Tabella stepper

I led posti in parallelo alle fasi indicano visivamente lo stato della relativa uscita dull’array, il jumper permette di alimentare il motore o meno, quindi in definitiva di lasciarlo fermo anche se pilotato dal uC. L’alimentazione dell’uln2003 può arrivare fino a 50V (se si ha un simile motore), ma per tensioni superiori ai 12 Volt sarebbe meglio staccare diodi led oppure di crialcolarne la resistenza di caduta per evitare di bruciarli. Nel nostro caso deve funzionare a 5V per via del motore anch’esso funzionante a tale tensione. I collegamenti ad Arduino si limitano agli ingressi (pilotati da 4 uscite del uC) e alla massa (GND).

Arduino dispone di una libreria apposita nel caso non si volesse realizzarne una propria.

Arduino stepper library

Essa è dotata di sole 4 istruzioni di facile comprensione.

Si inizializza una variabile di tipo Stepper ad esempio:

Stepper myStepper = Stepper(4096, 5, 6, 7, 8);

Il primo valore indica il numero di step necessari a compiere un giro completo, gli altri quattro indicano le uscite utilizzate per comandare il modulo.

Successivamente si comanda il motore in avanti o all’indietro (usando valori negativi) con l’istruzione step:

myStepper.step(250); // Esegue 250 passi in avanti

Infine esiste anche l’istruzione setSpeed che regola la velocità di rotazione:

myStepper.setSpeed(2);

Il numero (long) indica quante rotazioni complete vengono fatte in un minuto. Eccedendo con tale velocità il motore rischia di perdere passi.

2 Risposte a “Arduino – Motori passo passo”

  1. Buongiorno,
    spero mi possiate aiutare…
    Ho l’esigenza di muovere un piatto di 180° ogni 60 secondi. Ho pensato di utilizzare attiny con un motore stepper. Il mio problema che devo far funzionare il tutto con due/tre pile stile. Esiste una soluzione hardware per questo mio problema? Grazie.
    Saluti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.