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:
- O que é o módulo driver de motor de passo DRV8825?
- Como o módulo driver de motor de passo DRV8825 funciona?
- Como ligar o driver de motor de passo DRV8825 ao Arduino Nano ESP32 e ao motor de passo?
- Como escrever um programa para o Arduino Nano ESP32 para controlar um motor de passo usando o módulo DRV8825?

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
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

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).

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
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.

- 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.