Como usar Motor de Passo com Driver A4988 e Arduino Deixe um comentário

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.

Driver A4988 para 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.

Circuito do Motor de Passo com Driver A4988 e Arduino Nano no fritzing.

ArduinoA4988MotorFonte 12V
VINVMOTPositivo (+)
5VVDD
GNDGNDNegativo (-)
D2DIR
D3STEP
2B1
2A2
1A3
1B4

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.

ModoMS1MS2MS3
Passo CompletoLOWLOWLOW
½ PassoHIGHLOWLOW
¼ PassoLOWHIGHLOW
⅛  PassoHIGHHIGHLOW
1/16 PassoHIGHHIGHHIGH

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.

Faça seu comentário

Acesse sua conta e participe