Arduino - Driver de Motor de Passo DRV8825

Neste tutorial, vamos aprender sobre o Driver de Motor de Passo DRV8825 e como usá-lo com o Arduino para controlar o motor de passo. Em detalhes, vamos aprender:

Módulo DRV8825 com Arduino

Sobre o Driver de Motor de Passo DRV8825

O DRV8825 é um módulo driver de motor de passo muito usado para controlar motores de passo bipolares em aplicações como máquinas CNC, impressoras 3D e robótica. Ele possui limite de corrente ajustável, proteção contra superaquecimento e seis opções de micropasso, incluindo passo completo, 1/2, 1/4, 1/8, 1/16 e 1/32. O módulo suporta até 2.2A por bobina com resfriamento adequado e opera em uma ampla faixa de tensão de 8.2V a 45V, o que o torna adequado para diversos motores de passo.

Para aprender sobre conceitos de motor de passo como: passo completo, micropasso, motor de passo unipolar e motor de passo bipolar, consulte o tutorial Arduino - Motor de Passo

É impressionante que controlar a velocidade e a direção de um motor de passo bipolar, como o NEMA 17, exija apenas dois pinos do Arduino.

Pinagem do Driver de Motor de Passo DRV8825

Pinagem do módulo DRV8825

O driver de motor de passo DRV8825 tem 16 pinos. Abaixo está uma pinagem típica do módulo driver de motor de passo DRV8825. Observe que algumas variações do módulo podem nomear os pinos de forma um pouco diferente, mas a funcionalidade continua a mesma.

Nome do Pino Descrição
VMOT Alimentação do motor (8.2 V a 45 V). Alimenta o motor de passo.
GND (do Motor) Referência de terra da fonte de alimentação do motor. Conecte este pino ao GND da fonte de alimentação do motor
2B, 2A Saídas para a Bobina B do motor de passo.
1A, 1B Saídas para a Bobina A do motor de passo.
FAULT Pino de Detecção de Falha. É um pino de saída que vai para LOW sempre que os FETs da ponte H são desativados como resultado da proteção contra sobrecorrente ou do desligamento térmico.
GND (da Lógica) Referência de terra para os sinais lógicos. Conecte este pino ao GND do Arduino
ENABLE Pino ativo em nível baixo para habilitar/desabilitar as saídas do motor. LOW = Habilitado, HIGH = Desabilitado.
M0, M1, M2 Pinos seletores da resolução de micropasso (veja a tabela abaixo).
RESET Pino de reset ativo em nível baixo - colocar este pino em LOW reinicia o driver.
SLEEP Pino de sleep ativo em nível baixo - colocar este pino em LOW coloca o driver no modo sleep de baixo consumo.
STEP Entrada de passo - uma borda de subida neste pino avança o motor em um passo (ou um micropasso, dependendo da configuração de micropasso).
DIR Entrada de direção - define o sentido de rotação do motor de passo.

Além disso, há um pequeno potenciômetro na placa que você pode ajustar para definir a limitação de corrente, ajudando a evitar que o motor de passo e o driver superaqueçam.

Em resumo, esses 16 pinos são organizados nas seguintes categorias, com base em sua funcionalidade:

  • Pinos conectados ao motor de passo: 1A, 1B, 2A, 2B.
  • Pinos conectados ao Arduino para controle do driver: ENABLE, M0, M1, M2, RESET, SLEEP.
  • Pinos conectados ao Arduino para controle de direção e velocidade do motor: DIR, STEP.
  • Pino de retorno para o Arduino: FAULT.
  • Pinos conectados à fonte de alimentação do motor: VMOT, GND (terra da alimentação do motor).
  • Pino conectado ao terra do Arduino: GND (terra da lógica).

O módulo DRV8825 não precisa de alimentação lógica da placa Arduino, pois ele obtém energia da fonte de alimentação do motor usando seu regulador de tensão interno de 3.3V. No entanto, é essencial conectar o terra do Arduino ao pino GND (lógica) do módulo DRV8825 para garantir o funcionamento correto e uma referência de terra comum.

Configuração de Micropasso

O driver DRV8825 permite o micropasso dividindo cada passo em incrementos menores. Isso é feito aplicando níveis de corrente intermediários às bobinas do motor.

Por exemplo, um motor NEMA 17 com ângulo de passo de 1.8° (200 passos por revolução):

  • Modo de passo completo (1/1): 200 passos por revolução
  • Modo de 1/2 passo: 400 passos por revolução
  • Modo de 1/4 de passo: 800 passos por revolução
  • Modo de 1/8 de passo: 1600 passos por revolução
  • Modo de 1/16 de passo: 3200 passos por revolução
  • Modo de 1/32 de passo: 6400 passos por revolução

À medida que você aumenta o nível de micropasso, o motor se move de forma mais suave e precisa, mas ao custo de mais passos necessários por revolução. Se você continuar usando a mesma taxa de pulsos de passo (pulsos por segundo), cada revolução levará mais tempo, o que na prática deixa o motor mais lento.

No entanto, se o seu microcontrolador conseguir gerar pulsos rápido o suficiente para acompanhar a contagem maior de passos, você pode manter ou até aumentar a velocidade. O limite prático depende da rapidez com que o driver e o seu microcontrolador conseguem processar esses pulsos sem perder passos.

Pinos de Seleção de Micropasso do DRV8825

O DRV8825 possui três entradas seletoras de resolução de micropasso: os pinos M0, M1 e M2. Configurando esses pinos com níveis lógicos específicos, você pode escolher entre seis resoluções de micropasso:

Pino M0 Pino M1 Pino M2 Resolução de Micropasso
Low Low Low Passo completo
High Low Low Meio passo
Low High Low 1/4 de passo
High High Low 1/8 de passo
Low Low High 1/16 de passo
High Low High 1/32 de passo
Low High High 1/32 de passo
High High High 1/32 de passo

Esses pinos de seleção de micropasso têm resistores pull-down na placa que os mantêm em estado LOW por padrão. Se ficarem desconectados, o motor vai operar no modo de passo completo.

Como Funciona

Para controlar um motor de passo usando o módulo DRV8825, você precisa de pelo menos dois pinos do Arduino: um para o pino DIR e um para o pino STEP. O DRV8825 interpreta esses sinais do Arduino para mover o motor de passo com precisão.

  • Pino STEP: Cada pulso no pino STEP avança o motor em um micropasso (ou um passo completo, dependendo da sua configuração de micropasso).
  • Pino DIR: Determina o sentido de rotação do motor.

O driver então usa esses sinais, junto com suas próprias configurações, para enviar as saídas de controle ao motor pelos pinos 1A, 1B, 2A e 2B.

Você também pode configurar pinos adicionais do módulo DRV8825 (ENABLE, M0, M1, M2, RESET, SLEEP) de uma destas três formas:

  • Deixá-los desconectados para que o driver opere com as configurações padrão.
  • Ligá-los diretamente ao GND ou ao VCC para um modo de operação fixo.
  • Conectá-los a pinos do Arduino para que você possa controlar esses recursos dinamicamente no seu código.

Diagrama de Ligação entre o Arduino, o módulo DRV8825 e o Motor de Passo

O diagrama de ligação a seguir mostra as conexões mínimas necessárias entre o Arduino, o módulo DRV8825 e o motor de passo. Com essa configuração, o driver DRV8825 opera no seu modo padrão (passo completo).

Diagrama de ligação do Arduino com o driver de motor de passo DRV8825

This image is created using Fritzing. Click to enlarge image

Em detalhes:

  • VMOT: Conecte à fonte de alimentação do motor (ex.: 12V).
  • GND (do Motor): Conecte ao terra da fonte de alimentação do motor.
  • 1A, 1B, 2A, 2B: Conecte às bobinas do motor de passo.
  • STEP: Conecte ao pino digital D4 do Arduino.
  • DIR: Conecte ao pino digital D3 do Arduino.
  • GND (da Lógica): Conecte ao pino GND do Arduino.
  • Outros pinos: deixados desconectados.

Código Arduino

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-drv8825-stepper-motor-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // Define pin connections #define DIR_PIN 3 #define STEP_PIN 4 // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position stepper.setMaxSpeed(1000); stepper.setAcceleration(200); stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

Passos Rápidos

  • Copie o código acima e abra-o no Arduino IDE
  • Vá até o ícone Libraries na barra esquerda do Arduino IDE.
  • Pesquise “AccelStepper” e encontre a biblioteca AccelStepper de Mike McCauley
  • Clique no botão Install para instalar a biblioteca AccelStepper.
Biblioteca AccelStepper no Arduino
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Você verá o motor girar para frente e para trás

Observação: Ao operar o motor no modo de passo completo, seu movimento pode não ser muito suave, o que é normal. Para um movimento mais suave, habilite o micropasso configurando os pinos M0, M1 e M2.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!