fbpixel
Etiquetas: ,
5
(1)

Neste tutorial, veremos como acionar um motor de passo bipolar utilizando um controlador DRV8825. 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
  • Controlador de passo DRV8825 (ou A4988 ou SilentStepStick)
  • 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 ao sentido de rotação do motor. O módulo DRV8825 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 DRV8825

Minimum operating voltage8.2 V
Maximum operating voltage45 V
Continuous current per phase1.5 A
Maximum current per phase2.2 A
Minimum logic voltage2.5 V
Maximum logic voltage5.25 V
Microstep resolutionfull, 1/2, 1/4, 1/8, 1/16 and 1/32
Reverse voltage protection?No
Dimensions15.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 

Por exemplo:

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

MaxCurrent=1.0A –> Vref = 0.5V

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.

M0M1M2Microstep resolution
LowLowLowFull step
HighLowLow1/2 step
LowHighLow1/4 step
HighHighLow1/8 step
LowLowHigh1/16 step
HighLowHigh1/32 step
LowHighHigh1/32 step
HighHighHigh1/32 step

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

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 1

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?