Como usar o driver A4988 com motor de passo Nema 17
Controle motores de passo bipolares com o Driver Motor de Passo A4988, utilizando apenas dois pinos para controle e com a possibilidade de movimentar os motores por meio de "micropassos", método utilizado em aplicações que exigem um posicionamento exato do motor. Neste post, vamos usar o driver A4988 com motor de passo Nema 17.
Este módulo é controlado pelo chip Allegro A4988 (datasheet), e pode ser alimentado com tensões entre 3 e 5.5V. Para o motor, permite alimentação externa de 8 à 35V. Um potenciômetro na placa permite a regulagem da corrente de saída.
O módulo driver motor de passo A4988
O controle básico do motor de passo é feito por meio de dois pinos do microcontrolador, ligados aos pinos STEP (passo) e DIR (direção) do módulo A4988, conforme podemos verificar na pinagem do mesmo, mostrada abaixo:
Controlando driver A4988 com Arduino
Você também pode instalar a biblioteca diretamente pela IDE do Arduino, no menu Sketch -> Incluir Biblioteca -> Gerenciar bibliotecas. Procure por AccelStepper e clique em Instalar:
Com a biblioteca instalada, carregue o programa abaixo no Arduino:
// Programa : Driver motor de passo A4988 // Autor : Arduino e Cia #include <AccelStepper.h> int velocidade_motor = 100; int aceleracao_motor = 100; int sentido_horario = 0; int sentido_antihorario = 0; int numero = 0; // Definicao pino ENABLE int pino_enable = 10; // Definicao pinos STEP e DIR AccelStepper motor1(1,7,4 ); void setup() { Serial.begin(9600); pinMode(pino_enable, OUTPUT); // Configuracoes iniciais motor de passo motor1.setMaxSpeed(velocidade_motor); motor1.setSpeed(velocidade_motor); motor1.setAcceleration(aceleracao_motor); Serial.println("Digite 1, 2 ou 3 e clique em ENVIAR..."); } void loop() { // Aguarda os caracteres no serial monitor if (Serial.available() > 0) { numero = Serial.read(); { if (numero == '1') { Serial.println("Numero 1 recebido - Girando motor sentido horario."); digitalWrite(pino_enable, LOW); sentido_horario = 1; sentido_antihorario = 0; } if (numero == '2') { Serial.println("Numero 2 recebido - Girando motor sentido anti-horario."); digitalWrite(pino_enable, LOW); sentido_horario = 0; sentido_antihorario = 1; } if (numero == '3') { Serial.println("Numero 3 recebido - Parando motor..."); sentido_horario = 0; sentido_antihorario = 0; motor1.moveTo(0); digitalWrite(pino_enable, HIGH); } } } // Move o motor no sentido horario if (sentido_horario == 1) { motor1.moveTo(10000); } // Move o motor no sentido anti-horario if (sentido_antihorario == 1) { motor1.moveTo(-10000); } // Comando para acionar o motor no sentido especificado motor1.run(); } Esse programa utiliza o serial monitor para controlar o sentido de rotação do motor de passo:
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น