Arduino Nano ESP32 - Driver de Motor de Passo DRV8825

Neste guia, vamos explorar o Driver de Motor de Passo DRV8825 e descobrir como operá-lo com o Arduino Nano ESP32 para controlar o motor de passo. Especificamente, vamos abordar:

Módulo DRV8825 com Arduino Nano ESP32

Sobre o Driver de Motor de Passo DRV8825

O DRV8825 é um módulo popular usado para controlar motores de passo bipolares, comumente encontrado em máquinas CNC, impressoras 3D e robôs. Ele tem um limite de corrente ajustável, proteção contra superaquecimento e opções para diferentes modos de passo, de passo completo até minúsculos passos de 1/32. Ele consegue gerenciar até 2,2A para cada bobina do motor com resfriamento adequado e funciona em uma faixa de tensão de 8,2V a 45V, acomodando vários motores de passo.

Para entender conceitos de motor de passo como: passo completo, microstepping, motor de passo unipolar e motor de passo bipolar, confira o guia Arduino Nano ESP32 - Motor de Passo.

Usando apenas dois pinos de um Arduino Nano ESP32, você pode controlar facilmente a velocidade e a direção de um motor de passo bipolar NEMA 17.

Pinagem do Driver de Motor de Passo DRV8825

Pinagem do módulo DRV8825

O Driver de Motor de Passo DRV8825 possui 16 pinos. Aqui está um layout comum dos pinos do módulo DRV8825. Lembre-se de que algumas versões podem nomear os pinos de forma um pouco diferente, mas as funções continuam as mesmas.

Nome do Pino Descrição
VMOT Alimentação do motor (8,2 V a 45 V). Isso alimenta o motor de passo.
GND (for Motor) Referência de terra para a 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. Este é 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 (for Logic) Referência de terra para os sinais lógicos. Conecte este pino ao GND do Arduino Nano ESP32
ENABLE Pino ativo em nível baixo para habilitar/desabilitar as saídas do motor. LOW = Habilitado, HIGH = Desabilitado.
M1, M2, M3 Pinos seletores de resolução de microstepping (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 de repouso de baixo consumo.
STEP Entrada de passo - uma borda de subida neste pino avança o motor em um passo (ou um microstep, dependendo da configuração de microstepping).
DIR Entrada de direção - define a direção de rotação do motor de passo.

Há também um pequeno botão ajustável que permite definir o limite de corrente para evitar que o motor de passo e o driver esquentem demais.

Em resumo, esses 16 pinos são agrupados nas seguintes categorias de acordo com a função:

  • Fios ligados ao motor de passo: 1A, 1B, 2A, 2B.
  • Fios ligados ao Arduino Nano ESP32 para controlar o driver: ENABLE, M1, M2, M3, RESET, SLEEP.
  • Fios ligados ao Arduino Nano ESP32 para controlar a direção e a velocidade do motor: DIR, STEP.
  • Fio para enviar sinais de erro ao Arduino Nano ESP32: FAULT.
  • Fios ligados à fonte de alimentação do motor: VMOT, GND (terra da alimentação do motor).
  • Fio ligado ao terra do Arduino Nano ESP32: GND (terra lógico).

O módulo DRV8825 não precisa de energia da placa Arduino Nano ESP32 para a sua lógica, pois usa a energia da fonte do motor por meio de seu regulador de tensão de 3,3V embutido. Mesmo assim, você deve conectar o terra do Arduino Nano ESP32 ao pino GND (logic) do DRV8825 para garantir que funcione corretamente e compartilhe um terra comum.

Configuração de Microstep

O driver DRV8825 permite microstepping dividindo cada passo em partes menores. Isso é feito aplicando diferentes níveis de corrente às bobinas do motor.

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

  • Modo de passo completo: 200 passos por rotação
  • Modo de meio passo: 400 passos por rotação
  • Modo de quarto de passo: 800 passos por rotação
  • Modo de oitavo de passo: 1600 passos por rotação
  • Modo de dezesseis avos de passo: 3200 passos por rotação
  • Modo de trinta e dois avos de passo: 6400 passos por rotação

Quando você define um microstepping mais alto, o motor funciona de forma mais suave e precisa, mas precisa de mais passos para cada volta completa. Se você mantiver a mesma taxa de pulsos de passo, cada volta completa levará mais tempo, tornando o motor mais lento.

Se o seu microcontrolador consegue enviar pulsos rápido o suficiente para a contagem de passos mais alta, você pode manter ou até aumentar a velocidade. O limite real depende de quão rápido tanto o driver quanto o seu microcontrolador conseguem lidar com esses pulsos sem perder passos.

Pinos de Seleção de Microstep do DRV8825

O DRV8825 inclui três entradas para escolher a resolução de microstep: os pinos M0, M1 e M2. Ao definir esses pinos em certos níveis lógicos, você pode selecionar entre seis resoluções de microstepping:

Pino M0 Pino M1 Pino M2 Resolução de Microstep
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 escolha de passo pequeno vêm com resistores pull-down embutidos que os mantêm naturalmente em estado LOW. Se você não os conectar, o motor funcionará no modo de passo completo.

Como Funciona

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

  • Pino STEP: Cada pulso no pino STEP move o motor por um minúsculo passo (ou um passo inteiro, dependendo da configuração de microstepping).
  • Pino DIR: Define em qual direção o motor gira.

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

Você também pode configurar os pinos extras do módulo DRV8825 (ENABLE, M1, M2, M3, RESET, SLEEP) de uma de três maneiras:

  • Não conectá-los, para que o driver use as configurações padrão.
  • Conectá-los diretamente ao GND ou ao VCC para um modo fixo.
  • Ligá-los a pinos do Arduino Nano ESP32 para controlar suas funções com o seu código.

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

O diagrama abaixo mostra as conexões básicas necessárias entre o Arduino Nano ESP32, o módulo DRV8825 e o motor de passo. Nesta configuração, o driver DRV8825 funciona em seu modo padrão (passo completo).

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

This image is created using Fritzing. Click to enlarge image

Em detalhes:

  • VMOT: Ligue à fonte de alimentação do motor (como 12V).
  • GND (for Motor): Ligue 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 Nano ESP32.
  • DIR: Conecte ao pino digital D3 do Arduino Nano ESP32.
  • GND (for Logic): Conecte ao pino GND do Arduino Nano ESP32.
  • Outros pinos: deixe desconectados.

Código Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define DIR_PIN D3 // The Arduino Nano ESP32 pin connected to DIR pin of DRV8825 module #define STEP_PIN D4 // The Arduino Nano ESP32 pin connected to STEP pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position 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

Para começar com o Arduino Nano ESP32, siga estes passos:

  • Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente para o Arduino Nano ESP32 na Arduino IDE.
  • Ligue os componentes de acordo com o diagrama fornecido.
  • Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.
  • Copie o código e abra-o na Arduino IDE.
  • Vá até o ícone Libraries no lado esquerdo da Arduino IDE.
  • Digite “AccelStepper” para pesquisar e localize a biblioteca AccelStepper de Mike McCauley.
  • Pressione o botão Install para adicionar a biblioteca AccelStepper.
Biblioteca AccelStepper para Arduino Nano ESP32
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino Nano ESP32.
  • Você verá o motor girar para frente e para trás.

Ao usar o motor no modo de passo completo, o movimento dele pode não ser muito suave, o que é normal. Para obter um movimento mais suave, ative o microstepping configurando os pinos M1, M2 e M3.

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!