Stampa | Notifica email    
Autore

13. Come pilotare un motore passo-passo con Arduino

Ultimo Aggiornamento: 12/12/2017 11:06
12/12/2017 11:01
Post: 16
Registrato il: 18/11/2017
Amministrator
PRINCIPIANTE
OFFLINE
I motori sono senza dubbio delle macchine interessanti, perché permettono di muovere oggetti inizialmente fermi e non più utili di un ferma porta.
Proviamo a pensare un’automobile telecomandata, al cancello automatico di casa, alle nostre bellissime stampanti 3D, ai piccoli robot e così via.
E’ davvero un mondo affascinante ma… Davvero molto ampio!
Nei nostri corsi base, trattiamo per lo più i motori Servo, perchè questi si prestano ad essere molto versatili come utilizzo hobbistico.
Arduino IDE offre già una libreria per gestirli ed é comodo pilotarli. Il loro limite sono purtroppo la velocità non regolabile, il posizionamento troppo impreciso e una coppia troppo bassa per poter sollevare ad esempio una gamba d’acciaio. Per risolvere queste rogne, una valida alternativa sono i motori passo-passo.
I motori passo-passo (o Stepper Motor) sono i motori più usati nell’automazione industriale. Sono ottimi per il posizionamento e per decidere una velocità non troppo elevata.
C’è molta confusione in merito alle varie tipologie disponibili e in questa guida vorrei riassumerli in maniera semplice ma esaustiva.



Dentro il nostro motore passo-passo troviamo 2 bobine (polo positivo e negativo), cioé delle spire di metallo che assorbono corrente come delle grosse resistenze che generano un campo elettromagnetico; queste formano il cosiddetto statore (la parte ferma) e l’albero al centro é il rotore (la parte che ruota).
In base a come vengono alimentate le bobine, il motore effettua una rotazione di tot gradi definiti, chiamata passo; da qui il nome del motore.
E’ facile comprendere che, un passo forma tot gradi e per effettuare un giro completo avrò bisogno di un certo numero di passi!
Ma quanti sono questi passi? E quant’è un passo in gradi? Dipende dal motore che avete acquistato!


A loro volta, i motori passo-passo si dividono in due famiglie: unipolari e bipolari.

Gli unipolari hanno una massa comune e un numero di cavi dispari. Semplicemente basterà dare corrente in maniera alternata, anche per quanto riguarda il verso di rotazione.

I bipolari richiedono che ogni bobina sia alimentata per conto proprio, hanno bisogno di integrati in grado di invertire la corrente per il verso di rotazione (chiamati H-Bridge).

Entrambi i tipi hanno vantaggi e svantaggi. I più utilizzati sono i bipolari, soprattutto per le stampanti 3D.

Esistono motori passo-passo con un numero di cavi superiori a 5, ma la logica é sempre la stessa e la differenza é il poter percorrere passi molto più piccoli.
Per riassumere:

I motori passo-passo compiono passi, i quali determinato una rotazione in gradi
Sono ottimi per posizionare e anche per la velocità se non andiamo troppo veloci
Per compiere un passo bisogna alimentare in maniera alternata e ordinata le bobine
Si dividono in unipolari e bipolari
Unipolari hanno massa comune e sono facili da pilotare, costano tanto e richiedono quindi una programmazione manuale
Bipolari hanno le bobine separate e bisogna alimentarle una alla volta. Per invertire il verso di rotazione serve un integrato chiamato H-Bridge
In genere le bobine sono 2
I passi del motore vengono suddivisi in Microstepping (passo molto piccolo), Half-Step (mezzo passo), Full Step in una fase (passo normale), Full Step in due fasi (quindi un passo normale più veloce). Per saperne di più, in questo link trovate delle spiegazioni più esaustive.

La libreria Stepper di Arduino, ci aiuta a comandare all’incirca tutti motori passo-passo. Nei kit si trova spesso questo tipo di motore:



Si tratta del motore bipolare 28BYJ-48. Montiamo subito il nostro circuito.



Il codice lo prendiamo dal nostro Arduino IDE su File->Esempi->Stepper->Stepper_oneStepAtTime.
[Modificato da PROFPAPPAFAVA 12/12/2017 11:05]
12/12/2017 11:06
Post: 16
Registrato il: 18/11/2017
Amministrator
PRINCIPIANTE
OFFLINE
SKETCH
#include

const int stepsPerRevolution = 4096; // Numero di passi del motore necessari per fare un giro

// Inizializziamo l'oggetto myStepper
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;

void setup() {
Serial.begin(9600);
}

void loop() {
myStepper.step(1); //Un passo in senso orario.
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
delay(500);
}
[Modificato da PROFPAPPAFAVA 19/12/2017 09:28]
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]

Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 23:41. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com