ESP8266 - Driver de Motor de Passo DRV8825

Neste guia, vamos aprender sobre o Driver de Motor de Passo DRV8825 e como usá-lo com o ESP8266 para operar o motor de passo. Estes são os detalhes que vamos abordar:

ESP8266 NodeMCU DRV8825 module

Sobre o Driver de Motor de Passo DRV8825

O DRV8825 é um módulo popular para controlar motores de passo bipolares, muito usado em máquinas CNC, impressoras 3D e robôs. Ele tem controle de corrente ajustável, proteção contra superaquecimento e oferece várias opções de microstepping, como passo completo, meio passo e frações até 1/32 de passo. Este módulo pode controlar até 2,2A por bobina com refrigeração adequada e trabalha em uma ampla faixa de tensão, de 8,2V a 45V, atendendo diferentes 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 ESP8266 - Motor de Passo.

É incrível que você precise de apenas dois pinos do ESP8266 para controlar a velocidade e a direção de um motor de passo bipolar, como o NEMA 17.

Pinagem do Driver de Motor de Passo DRV8825

DRV8825 module Pinout

O driver de motor de passo DRV8825 possui 16 pinos. Esta é uma disposição comum dos pinos no módulo driver de motor de passo DRV8825. Lembre-se de que algumas versões do módulo podem nomear os pinos de forma um pouco diferente, mas suas funções são as mesmas.

Nome do Pino Descrição
VMOT Alimentação do motor (8,2 V a 45 V). Ele 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 por causa 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 ESP8266
ENABLE Pino ativo em nível baixo para ativar/desativar as saídas do motor. LOW = Ativado, HIGH = Desativado.
M1, M2, M3 Pinos seletores da 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 sleep 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 o sentido de rotação do motor de passo.

Além disso, há um pequeno botão giratório embutido que você pode girar para ajustar o controle de corrente, o que ajuda a evitar que o motor de passo e o driver esquentem demais.

Em resumo, esses 16 pinos são agrupados nestes tipos de acordo com o uso:

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

A unidade DRV8825 não precisa de uma fonte de alimentação separada do ESP8266, porque ela recebe energia diretamente da fonte do motor, com seu regulador de tensão de 3,3V embutido. No entanto, você deve conectar o terra do ESP8266 ao pino GND (lógico) do DRV8825 para garantir que ele funcione corretamente e que o nível de terra seja o mesmo para os dois dispositivos.

Configuração de Microstep

O driver DRV8825 permite microstepping, dividindo cada passo em partes menores. Ele faz isso enviando quantidades diferentes de corrente para as bobinas do motor.

Por exemplo, um motor NEMA 17 com ângulo de passo de 1,8° (200 passos por volta):

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

Quando você aumenta o nível de microstepping, o motor funciona de forma mais suave e precisa, mas precisa de mais passos por revolução. Se você mantiver a mesma taxa de pulsos de passo, cada revolução vai durar mais, fazendo o motor ficar mais lento.

Se o seu microcontrolador conseguir enviar pulsos rápido o bastante para acompanhar o maior número de passos, você pode manter ou até aumentar a velocidade. O limite real depende da rapidez com que o driver e o seu microcontrolador conseguem tratar esses pulsos sem perder passos.

Pinos de Seleção de Microstep do DRV8825

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

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 pequenos pinos de configuração têm resistores embutidos que os mantêm normalmente em nível LOW. Se não forem conectados, o motor vai 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 ESP8266: um para o pino DIR e outro para o pino STEP. O DRV8825 processa esses sinais do ESP8266 para mover o motor de passo com precisão.

  • Pino STEP: Cada sinal no pino STEP move o motor um pequeno passo ou um passo completo, de acordo com as suas configurações.
  • Pino DIR: Define em qual sentido o motor gira.

O driver usa esses sinais e suas configurações para enviar sinais 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:

  • Deixá-los soltos para o driver usar as configurações básicas.
  • Ligá-los diretamente ao GND ou ao VCC para definir um modo constante.
  • Conectá-los a pinos do ESP8266 para controlar essas funções pelo seu código.

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

O diagrama abaixo mostra as conexões básicas necessárias entre o ESP8266, o módulo DRV8825 e o motor de passo. Com esta configuração, o driver DRV8825 funciona no modo padrão (passo completo).

The wiring diagram between ESP8266 NodeMCU and DRV8825 stepper motor driver

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Em detalhes:

  • VMOT: Conecte à 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: Ligue às bobinas do motor de passo.
  • STEP: Conecte ao pino digital D4 do ESP8266.
  • DIR: Conecte ao pino digital D3 do ESP8266.
  • GND (for Logic): Conecte ao pino GND do ESP8266.
  • Outros pinos: Não conecte.

Código ESP8266

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN D1 // The ESP8266 pin connected to STEP pin of DRV8825 module #define DIR_PIN D2 // The ESP8266 pin connected to DIR 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 ESP8266 no Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Copie o código acima e abra-o no software do ESP8266.
  • Clique no ícone Libraries no lado esquerdo da interface do ESP8266.
  • Digite "AccelStepper" na caixa de pesquisa e procure a biblioteca AccelStepper de Mike McCauley.
  • Pressione o botão Install para adicionar a biblioteca AccelStepper.
ESP8266 NodeMCU AccelStepper library
  • Copie o código acima e abra-o no Arduino IDE
  • Clique no botão Upload no Arduino IDE para enviar o código ao ESP8266
  • Você vai observar o motor se movendo para frente e para trás

Quando você usa o motor no modo de passo completo, o movimento pode não ser muito suave, o que é normal. Para deixar o 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!