Come collegare il motore Stepper con Arduino

Come collegare il motore Stepper con Arduino
I motori a passo successivo sono comunemente usati in dispositivi che vanno dalle macchine a CNC, orologi analogici alle stampanti 3D e persino nei dotti di riscaldamento. A causa della loro coppia di detenzione precisa e ad alta precisione, i motori a passo sono stati utilizzati principalmente dove è necessaria un'alta precisione. Prima di discutere come il motore Stepper è controllato usando Arduino, scopriamo quali sono i motori a passo passo:

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:

  • Bipolare
  • Unipolare

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:

  • Arduino Uno
  • Cavo USB B
  • Motore passo -passo (bipolare)
  • Fili jumper
  • Driver a motore (A4988)
  • 100uf condensatore
  • Alimentazione (8-35 V)
  • Breadboard

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:

  • Il driver del motore controllava la logica di Stepping stessa, liberando l'Arduino per fare altre cose.
  • Il numero di connessioni è ridotto, il che aiuta a controllare più motori con una singola scheda.
  • Possibile controllare il motore anche senza alcun microcontrollore utilizzando semplici onde quadrate.

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.