Come eccitare un motore passo passo bipolare – terza parte

I motori passo-passo bipolari riservano altre modalità di funzionamento, tutte molto interessanti. Se usi la classe Stepper.h di Arduino puoi veramente sbizzarrire la tua fantasia.

schema motori passo-passo con SN754410NE e 2 pin Arduino

Non inserito il disegno sopra a caso, lo schema che puoi utilizzare per questo esperimento è identico a quello presentato nell’articolo precedente.

In particolare è lo schema che Franco mi ha inviato perchè potessi condividerlo con tutti gli appassionati all’argomento, insieme allo schema rappresentato in figura mi ha inviato anche uno sketch che fa uso della Stepper.h per pilotare con facilità il motore stepper, e scrive:

…  permette di settare il numero di passi in un verso , nell’altro e la velocità di rotazione : in pratica fà tutto ; i valori che ho immesso sono quelli testati per il motore di stampante del datasheet  indicato e fa ruotare il motore di 10 giri in senso orario e di 3 giri in senso antiorario alla velocità di 300rpm ; a velocità superiori a 500 rpm si saltano dei passi , inferiori a 100 rpm vibrazioni  eccessive

Ovviamente utilizzare la libreria Stepper.h rende le cose davvero più semplici, di contro se vuoi capire quale sia il principio di funzionamento di un motore stepper, ti consiglio di partire dal primo articolo sull’argomento.

Ecco lo sketch proposto da Franco:

#include <Stepper.h>

// n° di passi per giro
//del proprio motore
const int stepsPerRevolution = 48;

// inizializzo la libreria stepper 
// con il numero dei pin di Arduino
//cui ho collegato le bobine del motore:
Stepper myStepper(stepsPerRevolution, 6,7);

void setup() {

 // setto la velocità di rotazione a n rpm:
 // 100<=n<=400
 myStepper.setSpeed(300);

 // inizializzo la porta seriale:
 Serial.begin(9600);
}

void loop() {
 // orario
 Serial.println("orario");
 myStepper.step(480);
 delay(1000);

 // antiorario
 Serial.println("antiorario");
 myStepper.step(-144);
 delay(1000);
}

Analizziamo lo sketch linea per linea:

linea 01: includi la libreria Stepper.h nel tuo sketch, indichi ad Arduino di caricarla per l’uso nelle linee successive;

linea 05: imposta la costante di tipo integer con il valore degli step necessari al tuo motore bipolare per compiere un giro completo, nell’esempio il numero di passi necessari è 48;

linea 10: inizializza l’oggetto myStepper con i parametri ( numero di step, pin fase A, pin fase B ), nell’esempio i pin utilizzati sono 6 e 7 ed  il numero di step per compiere un giro è rappresentato dal valore di StepPerRevolution impostato alla linea 05;

linea 12: definisci la funzione di setup();

linea 16: utilizza il metodo setSpeed() dell’oggetto myStepper() per definire la velocità a cui il motore deve ruotare, l’unità di misura è rpm ossia giri al minuto. Come suggerito da Franco nei suoi esperimenti ricorda che velocità troppo elevate costringono il motore a saltare dei passi, mentre velocità ridotte introducono molte vibrazioni. Molto dipende dalla geometria del tuo motore e dall’impiego che ne vuoi fare, cerca il giusto compromesso;

linea 19: inizializza il monitor seriale con cui potrei monitorare il senso di rotazione impostato dal loop();

linea 22: definisci la funzione di loop();

linea 24: printa sul monitor seriale la parola “orario” per indicare che le istruzioni che seguono impotano uno spostamento orario dell’alberino, se tuttavia non dovessi vedere l’albero motore ruotare nel verso atteso non hai che da invertire il collegamento dei pin 6 e 7 tra loro.

linea 25: utilizza il metodo step() per impostare il numero di passi che il motore deve compiere, nell’esempio il motore impiega 48 passi per eseguire un giro completo per cui impostando i passi da eseguire a 480 deduci facilmente che il motore compirà 10 giri ( 1 giro = 48 passi -> 480/48 = 10giri );

linea 26: imposta un tempo di attesa di 1000 millisecondi ( 1 secondo ) tra la rotazione appena eseguita e la prossima;

linea 29: similmente alla linea 24 printa la scritta “antiorario” sul monitor seriale;

linea 30:  imposta il numero di step da eseguire, in questo caso il numero di step impostato è negativo (-144) da cui puoi facimente dedurre che il senso di rotazione sarà invero al precedente ed in particolare avrai 144passi/48 passi per giro = 3 giri;

linea 31: imposta il tempo di attesa a 1 secondo come per la linea 26;

L’effetto dello sketch sarà che il tuo motore eseguirà prima 10 giri in senso orario alla velocità di 300rpm, si fermerà per 1 secondo ed eseguirà 3 giri in senso antiorario alla stessa velocità per poi fermarsi ed attendere 1 secondo e ricominciare tutto daccapo.

Infine Franco scrive:

… l’eccitazione 2-1 , nel caso in cui non si fosse costretti a ridurre il numero dei pin da utilizzare per il pilotaggio ,  rappresenta un ottimo compromesso fra assorbimenti e resa in termini di coppia, con in più il vantaggio di una maggiore fluidità  rispetto gli altri due tipi ( si può scendere a velocità di rotazioni più basse senza vibrazioni ).
In conclusione l’eccitazione 1-1 eccita una bobina ogni passo  ( assorbe poco, rende poco  e vibra in basso), la 2-2 ne eccita due contemporaneamente ogni passo ( assorbe molto, ha la maggior coppia ma vibra in basso ), la 2-1 eccita una sola bobina al passo n e due bobine contemporaneamente al passo successivo n+1, per poi ritornare ad  una bobina al passo n+2 etc.

Questo potrebbe essere lo spunto di partenza per tutti coloro che volessero scrivere uno sketch e disegnare uno schema di collegamento per l’eccitazione 2-1.

Buon divertimento

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/come-eccitare-un-motore-passo-passo-bipolare-terza-parte.html

Lascia un commento

Your email address will not be published.

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