Cosa sono i motori a passo passo?
I motori a passo successivo sono motori senza spazzole e sincroni che possono dividere il suo ciclo di rotazione completo in una serie di passaggi discreti. A differenza di altri motori DC senza pennello che funzionano continuamente quando viene applicata una tensione CC fissa attraverso di loro, i motori a gradini possono dividere il loro movimento rotatorio in una serie di passaggi secondo un Pulse digitale.
Tipi di motore passo -passo
Vengono generalmente utilizzati due tipi di motori passo -passo:
Il più delle volte possiamo distinguere tra questi due motori osservando il numero di fili. Un motore passo -passo con 6 fili può essere classificato come Unipolare e a 4 fili Il motore può essere classificato come Bipolare. La differenza principale tra loro è il filo del rubinetto centrale che divide la bobina piena di avvolgimento in mezzo avvolgimento.
Il controllo di questi motori a passo passo richiede i driver motori. I conducenti più comunemente usati includono ULN2003, L298N e A4988. In questo articolo procederemo con un driver bipolare controllato da motori noto come A4988 Driver del motore.
Componenti richiesti
I seguenti componenti sono necessari per controllare il motore Stepper con Arduino:
Perché utilizzare il driver del motore
Generalmente, i motori passo -passo sono difficili da controllare usando i pin Arduino. Disegnano la corrente 20 mA a causa del comportamento elettromagnetico dei motori che supera l'attuale limite di pin di arduino. Un altro problema è la tensione di contraccolpo, a causa della natura elettromagnetica, i motori continuano a generare elettricità anche dopo le tagli di corrente, questo creerà abbastanza tensione negativa di quanto possa friggere il tuo Arduino.
Soluzione a questo è l'uso di chip del driver del motore o scudi. I driver del motore hanno diodi che impediscono ad Arduino di tensioni negative e circuiti a base di transistor che forniscono energia sufficiente per eseguire il motore.
Modulo driver A4988
A4988 è uno dei migliori controller del motore dedicati disponibili. Questo controller del motore integrato lo rende super facile da interfacciarsi con un microcontrollore, poiché solo due pin sono sufficienti per controllare la velocità e la direzione del motore passo -passo. L'uso del controller del motore dedicato ha molti vantaggi:
Pinout A4988
Totale 16 pin sono presenti nel driver A4988 come segue:
Diagramma di cablaggio: collegamento A4988 con Arduino Uno e Dopper Motor
Collega il motore Stepper con Arduino seguendo il circuito di seguito:
Nota: Driver a motore A4988 è dotato di un condensatore in ceramica a basso ESR che non è in grado di gestire i picchi di tensione LC. È meglio usare un condensatore elettrolitico Tra i pin VMOT e GND, qui abbiamo usato un condensatore 100uf dopo l'alimentazione.
Connessioni A4988
A4988 | Connessione |
---|---|
VMOT | 8-35v |
GND | Motore GND |
SLP | RIPRISTINA |
Primo | SLP |
Vdd | 5v |
GND | Logica gnd |
STP | Pin 3 |
Dir | Pin 2 |
1a, 1b, 2a, 2b | Motore passo -passo |
Come impostare il limite di corrente per il motore passo -passo
Prima di collegare l'Arduino con il motore passo -passo è importante impostare il Limite corrente del driver del motore inferiore alla valutazione della corrente del motore passo -passo, altrimenti il motore si riscalda.
Un piccolo potenziometro presente sul driver A4988 può impostare il limite di corrente, come mostrato nell'immagine. Sul limite della corrente di rotazione in senso orario aumenta e il limite di corrente di rotazione in senso antiorario diminuisce.
Come codificare il motore Stepper con Arduino
Ora che abbiamo completato il nostro circuito e impostato il limite corrente per i conducenti di motori, è tempo di controllare i motori a passo passo con l'aiuto di Arduino. Carica il seguente codice nella scheda Arduino utilizzando IDE in quanto questo codice non richiede l'esecuzione di una libreria standard.
// Dichiarate perni e passi del motore passo -passo per rivoluzione
#Define Direction 2
#define Passaggio 3
#Define StepInerevolution 200
void setup ()
// dichiara i pin come output:
pinMode (step, output);
pinMode (direzione, output);
void loop ()
DigitalWrite (direzione, alto); // Il motore girerà in senso orario
// Il motore completerà una rivoluzione lentamente
per (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (Step, High);
DelayMicroseconds (2000);
DigitalWrite (Step, Low);
DelayMicroseconds (2000);
ritardo (1000);
DigitalWrite (direzione, basso); // Il motore girerà in senso antiorario
// Il motore completerà rapidamente una rivoluzione
per (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (Step, High);
DelayMicroseconds (1000);
DigitalWrite (Step, Low);
DelayMicroseconds (1000);
ritardo (1000);
Spiegazione del codice
Inizieremo il nostro schizzo definendo fare un passo E direzione pin. Qui li ho usati con i pin Arduino 2 e 3. Il costante STEPINONEVOLUTION è definito insieme al suo valore 200, ho impostato il driver del motore nella sua modalità passo completa 200 passaggi per rivoluzione.
#Define Direction 2
#define Passaggio 3
#Define StepInerevolution 200
Nel impostare() sezione, usando pinMode () I pin di controllo del motore funzione sono impostati come output digitale.
void setup ()
pinMode (step, output);
pinMode (direzione, output);
Nel ciclo continuo() Sezione, il motore completerà una rivoluzione lentamente in senso orario e una rivoluzione rapidamente in senso antiorario. Questo perché abbiamo impostato DigitalWrite () come alternativamente alternativo e basso e diminuendo DelayMicroseconds () Da 2 millisecondi a 1 millisecondi.
Guarda il codice mostrato di seguito, DigitalWrite (direzione, alto); è impostato per ALTO Valore, il motore girerà in senso orario.
IL DelayMicroseconds () è impostato su 2 millisecondi, il motore girerà lentamente.
\
void loop ()
DigitalWrite (direzione, alto); // Il motore girerà in senso orario
// Il motore completerà una rivoluzione lentamente
per (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (Step, High);
DelayMicroseconds (2000);
DigitalWrite (Step, Low);
DelayMicroseconds (2000);
Allo stesso modo, in questa sezione il motore girerà più velocemente a causa di minori ritardi nei millisecondi, ma in direzione opposta (in senso antiorario) a causa del basso valore di DigitalWrite (direzione, basso):
DigitalWrite (direzione, basso); // Il motore girerà in senso antiorario
// Il motore completerà rapidamente una rivoluzione
per (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (Step, High);
DelayMicroseconds (1000);
DigitalWrite (Step, Low);
DelayMicroseconds (1000);
Controllare la velocità del motore
La velocità è determinata dalla frequenza dell'impulso generato a fare un passo spillo; Possiamo controllare la frequenza dell'impulso cambiando:
delaymicroseconds ();
Ritardo più breve significa frequenza più elevata e più velocemente il motore funziona.
Controllare la direzione della rotazione
La direzione di rotazione del motore è controllata impostando il pin di direzione in alto o basso, utilizziamo la seguente funzione per farlo:
DigitalWrite (direzione, alto); //Senso orario
DigitalWrite (direzione, basso); //In senso antiorario
Come nell'esempio sopra, non abbiamo usato alcuna libreria Arduino ma è possibile utilizzare la libreria del motore Stepper in Arduino IDE. Un'altra biblioteca molto famosa disponibile in IDE per lo più utilizzata per i motori a passo sono Accelstepper.H. Puoi includere quella libreria seguendo questo percorso:
Vai a Sketch> Includi libreria> Gestisci librerie> Cerca> Accelstepper> Installa:
Conclusione
Questo tutorial ti ha mostrato che i motori delle stepper non sono così difficili da lavorare. Abbiamo coperto gli aspetti principali del controllo di un motore passo -passo con l'aiuto di Arduino e del driver del motore. Quindi, se stai pianificando un progetto che ti richiede di posizionare qualcosa di con precisione, a motore passo -passo sarà una scelta ideale.