Arduino (L10): Motore passo-passo

All’interno dello starter kit di Arduino Uno vengono forniti due diversi tipo di motori: il servomotore e il motore passo-passo.
Il servomotore è un motore di bassa potenza ed è adoperato principalmente nel campo della velocità che della coppia motrice, grazie alla sua versatilità sollecitata da continue variazioni.
Il motore passo-passo conosciuto anche col nome di step o stepper è un piccolo motore elettrico sincrono alimentato in corrente continua che può suddividere – come suggerisce il nome – la propria rotazione in un gran numero di passi (in inglese step).

Il collegamento di un motore passo-passo è particolarmente semplice. Esso viene fornito con un driver, una piccola scheda elettronica dove collegare direttamente il motore passo-passo e nella quale fare il collegamento ai 4 pin digitali della scheda Arduino e all’alimentazione. Il modello usato in questo articolo è SBT0811, che richiede la presenza di sei cavi maschio-femmina (o se non li avete femmina-femmina da usare come prolunga a cavi maschi-maschi o ancora usare in parte i fori della mini breadboard per creare un “ponte”).

Effettuati tutti i collegamenti creare il programma e caricarlo su Arduino. Durante il funzionamento si accenderanno i cinque led rossi presenti sulla scheda del motore passo-passo.


#include <Stepper.h> // richiama la libreria con le funzionalita’ di gestione del motore passo passo
int impulsi; // definzione di una variabile intera chiamata “impulsi”
/* nella prossima istruzione sono forniti il numero di impulsi (32) necessari per far compiere
un giro dell’albero motore e vengono definite le porte da associare al driver con la loro
sequenza di attivazione. Le porte 8, 9, 10 ed 11 di Arduino sono collegate, rispettivamente,
ai pin In1, In2, In3 ed In4 del driver ma la sequenza di attivazione deve essere
In1, In3, In2 ed In4 per cui la dichiarazione delle porte e’ 8, 10, 9, e 11
The next instruction provides the number of pulses (32) needed to make an engine shaft rotation,
the arduno’s pin to connect to driver pins and their activation sequence. The arduino’s pins 8, 9,
// Arduino: motore passo passo 28YBJ-48 e relativo driver – stepper motor
10 and 11 are connected, respectively, to driver pins In1, In2, In3 and In4 but, because the
activation sequence must be In1, In3, In2 and In4, the sequence pins is: 8, 10, 9, and 11.
*/
Stepper small_stepper(32, 8, 10, 9, 11);
//
//
void setup()
{
/* non e’ necessaria alcuna dichiarazione iniziale poiche’ le porte da utilizzare sono
dichiarate dalle routine presenti in libreria
We don’t need any initial declaration because the necessary pins to be used are declared in previous
statement
*/
}
//
//
void loop()
{
//
// parte 1 – visualizzazione della sequenza di lancio degli impulsi
small_stepper.setSpeed(1); /* imposta una bassa velocita’ dell’albero motore
(1 impulso al secondo) per mostrare, lentamente, la sequenza di lancio degli impulsi
(osservare la sequenza di illuminazione dei led sulla scheda driver)
sets a low speed crankshaft (1 pulse per second) , to show, slowly, sequence of pulses (observe
the driver leds sequence illumination) */
impulsi = 4; // imposta 4 nel contatore di impulsi
small_stepper.step(impulsi); // lancia 4 impulsi, facendo muovere l’albero motore di
// 45 gradi (11,25 gradi per 4 volte) ed il perno esterno di 0,7 gradi
delay(2000); // aspetta 2 secondi prima di attivare il successivo movimento
//
// parte 2 – rotazione del perno in uscita di 180 gradi in senso orario e a velocita’ moderata
impulsi = 1024; // inserisce nella variabile impulsi il valore 1024,
// e cioe’ il numero di impulsi necessari per far compiere mezzo giro al perno di uscita
small_stepper.setSpeed(100); // imposta una bassa velocita’ di rotazione dell’albero
// motore (100 impulsi al secondo, pari a 3,125 giri al secondo dell’albero motore e ad
// una rotazione di 17,5 gradi al secondo del perno in uscita.)
small_stepper.step(impulsi); // ripete per 1024 volte la sequenza di lancio degli impulsi
// (la variabile “impulsi” contiene il valore 1024)
delay(1000); // aspetta un secondo prima di attivare il successivo movimento
//
// Parte 3 – rotazione del perno in uscita di 180 gradi, a velocita’ elevata ed in senso antiorario
impulsi = -1024; // inserisce in “impulsi” il valore negativo -1024,
// in modo da imprimere un movimento antiorario al perno di uscita
small_stepper.setSpeed(700); // imposta un’alta velocita’ di rotazione dell’albero motore
// (700 impulsi al secondo, pari a 21,85 giri al secondo dell’albero motore e 123 gradi al secondo
// del perno in uscita)
small_stepper.step(impulsi); // ripete per 1024 volte la sequenza di lancio degli impulsi che,
// essendo negativa, fa girare l’albero in senso antiorario
delay(2000); // attende due secondi prima di ripetere l’intera sequenza
}

Lascia un commento

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