fbpixel
Etiquetas: ,
0
(0)

Neste tutorial, vamos ver como acionar um motor de passo bipolar utilizando um controlador A4988. Este tutorial é compatível com os drivers de motor de passo normalmente utilizados em projectos de fresagem digital ou de impressoras 3D (DRV8825, SilentStepStick, etc.).

Hardware

  • Arduino UNO
  • Motor de passo A4988
  • Cabo USB A macho para USB B macho

Princípio de funcionamento

Os controladores de motores passo a passo permitem que os motores sejam controlados de forma eficiente utilizando apenas dois sinais de controlo, STEP e DIR. O número de impulsos enviados para o controlador corresponde ao número de passos dados, a frequência de impulsos corresponde à velocidade do motor e o sinal dir corresponde à direção de rotação do motor. O módulo A4988 encarrega-se de enviar a sequência para as duas bobinas do motor de acordo com os comandos recebidos como entrada.

Especificações técnicas A4988

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1.2 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? No
Dimensions 15.5 × 20.5 mm (0.6″ × 0.8″)

Diagrama

Antes de ligar o seu motor ao driver, defina corretamente o limitador de corrente. Para o fazer, é necessário:

  • fornecer ao Arduino e ao Shield a tensão do motor.
  • Em seguida, coloque um voltímetro entre o potenciómetro e a terra.
  • Rodar o potenciómetro com uma chave de fendas até obter o valor que segue a regra abaixo.

MaxCurrent=Vref x 2.5 

Por exemplo:

Se o valor da corrente for 1A, o valor apresentado no multímetro deve ser igual a 0,4V.

MaxCurrent=1.0A –> Vref = 0.4V

A resolução dos passos do driver pode ser modificada para uma maior precisão. Esta configuração é definida colocando os pinos M0, M1 e M2 em HIGH ou LOW de acordo com a seguinte tabela lógica.

MS1 MS2 MS3 Résolution Microstepping
Low Low Low Pas complet (full step)
High Low Low 1/2 pas
Low High Low 1/4 de pas
High High Low 1/8 ième de pas
High High High 1/16 ième de pas

Código

Para acionar o driver do motor passo a passo, tudo o que precisamos de fazer é enviar um estado HIGH ou LOW para o pino DIR e um impulso para o pino STEP.

const int stepPin = 2;
const int dirPin = 3;


const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("A4988 Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Para mais funções, pode utilizar a biblioteca AccelStepper.h

Aplicações

  • Controlo de um motor passo a passo
  • Controlo de vários motores com uma placa CNC

Fontes

https://www.arduinolibraries.info/libraries/accel-stepper

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?