Os motores de passo são componentes extremamente úteis na robótica, permitindo controle preciso da velocidade e ângulo da movimentação. Neste post, veremos como controlar um motor de passo com auxílio do driver A4988 de forma simples usando o Arduino.
Materiais Necessários
Para montagem do circuito de teste, utilizaremos os seguintes componentes:
Circuito do Motor de Passo com Driver A4988 e Arduino Nano
A montagem do circuito deve ser feita conforme a imagem e a tabela abaixo. É importante que os pinos RESET e SLEEP do driver estejam conectados juntos para que ele funcione corretamente.
Arduino | A4988 | Motor | Fonte 12V |
VIN | VMOT | – | Positivo (+) |
5V | VDD | – | – |
GND | GND | – | Negativo (-) |
D2 | DIR | – | – |
D3 | STEP | – | – |
– | 2B | 1 | – |
– | 2A | 2 | – |
– | 1A | 3 | – |
– | 1B | 4 | – |
Para mais informações sobre o funcionamento de um motor de passo acesse o post O que é motor de passo? Entenda seu funcionamento e aplicações.
Opções
Podemos utilizar os pinos MS e o potenciômetro presentes no driver para alterar os modos de operação e a corrente fornecida para o motor.
Modo | MS1 | MS2 | MS3 |
Passo Completo | LOW | LOW | LOW |
½ Passo | HIGH | LOW | LOW |
¼ Passo | LOW | HIGH | LOW |
⅛ Passo | HIGH | HIGH | LOW |
1/16 Passo | HIGH | HIGH | HIGH |
Podemos usar a fórmula abaixo para determinar o valor da corrente I limitada a partir da tensão V medida sobre o potenciômetro.
Código
No código abaixo controlamos a direção de rotação pelo estado do pino DIR e comandamos que o motor realize um passo alterando o estado do pino STEP para HIGH, esperando 500 microssegundos e alterando o estado para LOW.
/* #--------------------------# | Driver A4988 | | Motor de Passo | | Ítalo Coelho | #--------------------------# */ const int DIR = 2; const int STEP = 3; void setup() { pinMode(DIR , OUTPUT); pinMode(STEP, OUTPUT); } void loop() { //Define sentido de Rotação digitalWrite(DIR, LOW); //Realiza uma volta completa for(int i = 0; i < 200; i++) { //Realiza um Passo digitalWrite(STEP, HIGH); delayMicroseconds(500); digitalWrite(STEP, LOW); delayMicroseconds(500); } delay(1000); //Muda o sentido de Rotação digitalWrite(DIR, HIGH); //Realiza uma volta completa for(int i = 0; i < 200; i++) { //Realiza um Passo digitalWrite(STEP, HIGH); delayMicroseconds(500); digitalWrite(STEP, LOW); delayMicroseconds(500); } delay(1000); }
Gostou de aprender como controlar um motor de passo utilizando o Driver A4988? Deixe um comentário aqui embaixo nos contando o que achou. Se ficou com alguma dúvida ou quiser compartilhar o resultado do seu projeto, acesse a Comunidade do Facebook.