ESP32 - Driver de Motor de Passo DRV8825
Neste guia, vamos explorar o Driver de Motor de Passo DRV8825 e descobrir como operá-lo com um ESP32 para gerenciar o motor de passo. Vamos abordar os seguintes detalhes:
- 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 ESP32 e ao motor de passo
- Como programar o ESP32 para gerenciar o motor de passo usando o módulo DRV8825

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Driver de Motor de Passo DRV8825
O DRV8825 é um driver de motor de passo popular usado para controlar motores de passo bipolares em dispositivos como máquinas CNC, impressoras 3D e robôs. Ele inclui recursos como limite de corrente ajustável, proteção contra superaquecimento e várias opções de micropasso, como passo completo, 1/2, 1/4, 1/8, 1/16 e 1/32. Este módulo consegue gerenciar até 2,2A por bobina com resfriamento adequado e funciona em uma ampla faixa de tensão, de 8,2V a 45V, o que o torna versátil para diferentes motores de passo.
Para entender conceitos sobre motores de passo como passo completo, micropasso, motor de passo unipolar e motor de passo bipolar, confira o guia ESP32 - Motor de Passo.
É impressionante que gerenciar a velocidade e a direção de um motor de passo bipolar, como o NEMA 17, precise de apenas dois pinos do ESP32.
Pinagem do Driver de Motor de Passo DRV8825

O driver de motor de passo DRV8825 tem 16 pinos. Aqui está uma disposição comum do módulo driver de motor de passo DRV8825. Lembre-se de que algumas versões do módulo podem dar nomes diferentes aos pinos, mas as funções são as mesmas.
| Nome do Pino | Descrição |
|---|---|
| VMOT | Alimentação do motor (8,2 V a 45 V). Alimenta o motor de passo. |
| GND (para o Motor) | Referência de terra da 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 desabilitados por causa da proteção contra sobrecorrente ou do desligamento térmico. |
| GND (para a Lógica) | Referência de terra dos sinais lógicos. Conecte este pino ao GND do ESP32 |
| ENABLE | Pino ativo em LOW para habilitar/desabilitar as saídas do motor. LOW = Habilitado, HIGH = Desabilitado. |
| M1, M2, M3 | Pinos seletores da resolução de micropasso (veja a tabela abaixo). |
| RESET | Pino de reset ativo em LOW - puxar este pino para LOW reinicia o driver. |
| SLEEP | Pino de repouso ativo em LOW - puxar este pino para 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 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 botão embutido que você pode girar para ajustar o limite 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 conforme o uso:
- Pinos ligados ao motor de passo: 1A, 1B, 2A, 2B.
- Pinos ligados ao ESP32 para gerenciar o driver: ENABLE, M1, M2, M3, RESET, SLEEP.
- Pinos ligados ao ESP32 para controlar a direção e a velocidade do motor: DIR, STEP.
- Pino para enviar retorno ao ESP32: FAULT.
- Pinos ligados à fonte de alimentação do motor: VMOT, GND (terra da alimentação do motor).
- Pino ligado ao terra do ESP32: GND (terra da lógica).
O módulo DRV8825 não precisa de uma fonte de alimentação lógica vinda da placa ESP32, porque recebe energia da fonte do motor por meio do regulador de tensão de 3,3V embutido. Mesmo assim, é importante ligar o terra do ESP32 ao pino GND (lógica) do módulo DRV8825 para garantir que funcione corretamente e tenha uma referência de terra comum.
Configuração de Micropasso
O driver DRV8825 permite micropasso dividindo cada passo em partes menores. Isso é feito enviando 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 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
Quanto mais você aumenta o nível de micropasso, mais suave e preciso o motor opera, mas ele precisa de mais passos para cada volta completa. Se você mantiver a mesma taxa de pulsos de passo (pulsos por segundo), cada volta completa vai levar mais tempo, deixando o motor mais lento.
Mas, se o seu microcontrolador conseguir enviar pulsos rápido o bastante para acompanhar a maior contagem 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 Micropasso do DRV8825
O DRV8825 inclui três entradas para selecionar a resolução de micropasso: os pinos M0, M1 e M2. Ao definir esses pinos em certos níveis lógicos, 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 vêm com resistores de pull-down embutidos que os mantêm em LOW por padrão. Se não forem conectados, o motor vai operar no modo de passo completo.
Como Funciona
Para operar um motor de passo com o módulo DRV8825, você precisa de dois pinos do ESP32: um para o pino DIR e outro para o pino STEP. O DRV8825 processa esses sinais do ESP32 para mover o motor de passo com precisão.
- Pino STEP: Cada sinal no pino STEP move o motor para a frente um pequeno micropasso ou um passo completo, conforme a sua configuração.
- Pino DIR: Define para que lado o motor gira.
O driver usa esses sinais e suas próprias configurações para enviar comandos 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 desconectados para que o driver use as configurações padrão.
- Conectá-los diretamente ao GND ou ao VCC para um modo constante.
- Ligá-los a pinos do ESP32 para gerenciar essas funções pela sua programação.
Diagrama de Ligação entre o ESP32, o módulo DRV8825 e o Motor de Passo
O diagrama abaixo mostra as conexões básicas necessárias entre o ESP32, o módulo DRV8825 e o motor de passo. Nesta configuração, o driver DRV8825 funciona no modo padrão (passo completo).

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
Em detalhes:
- VMOT: Conecte à fonte de alimentação do motor (como 12V).
- GND (para o Motor): Ligue ao terra da fonte de alimentação do motor.
- 1A, 1B, 2A, 2B: Ligue às bobinas do motor de passo.
- STEP: Ligue ao pino digital D4 do ESP32.
- DIR: Ligue ao pino digital D3 do ESP32.
- GND (para a Lógica): Conecte ao pino GND do ESP32.
- Outros pinos: Não conecte.
Código ESP32
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente do ESP32 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP32 ao seu PC por um cabo USB
- Abra o Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- Copie o código acima e abra no Arduino IDE.
- Vá até a seção Libraries no lado esquerdo do Arduino IDE.
- Procure por "AccelStepper" e localize a biblioteca AccelStepper de Mike McCauley.
- Pressione o botão Install para adicionar a biblioteca AccelStepper.

- Copie o código e abra no Arduino IDE
- Clique no botão Upload no Arduino IDE para enviar o código ao seu ESP32
- Você vai ver o motor ir e voltar
Dica: Quando o motor roda no modo de passo completo, o movimento pode não ser muito suave, mas isso é normal. Para um movimento mais suave, ative o micropasso configurando os pinos M1, M2 e M3.