Projetos

Driver DRV8825 – Guia Completo para Projetos com Arduino e Motor de Passo

Eletrogate 27 de fevereiro de 2026

Introdução

Se você já conferiu nosso artigo Tudo Sobre DRIVER A4988 e Motor de Passo, agora é hora de dar um passo adiante com um controlador ainda mais robusto, preciso e versátil: o DRV8825. Neste post você vai entender tudo sobre esse driver, como funciona, suas vantagens, diferenças frente ao A4988 e como usá-lo com Arduino em seus projetos!


O que é o DRV8825?

O DRV8825 é um driver de motor de passo bipolar com microstepping (Micro passos) integrado, desenvolvido para controlar motores de passo de forma precisa e eficiente. Ele é ideal para aplicações que exigem alta resolução, torque elevado e operação estável — como impressoras 3D, máquinas CNC, braços robóticos e dispositivos automatizados em geral.

Esse módulo é, na prática, um circuito integrado que recebe comandos simples de direção e passos (STEP/DIR) e controla a corrente dos enrolamentos do motor, realizando a movimentação de forma suave.

Principais Características Técnicas

  • Tensão de alimentação ampla: de 8,2 V a 45 V, permitindo trabalhar com uma grande variedade de fontes e motores.
  • Corrente ajustável por fase: até cerca de 2,2 A com dissipação e até 2,5 A com heatsink adequado.
  • Microstep fino: suporta até 1/32 de passo, proporcionando movimento mais suave e maior precisão que o A4988.
  • Proteções integradas contra sobrecorrente e superaquecimento.
  • Interface simples STEP/DIR compatível com microcontroladores como o Arduino.

Como o DRV8825 Funciona

O DRV8825 usa H-bridges duplas e um indexador de microstepping interno para controlar o motor passo por passo.
Basta aplicar pulsos de STEP para movimentar o motor, e o pino DIR controla a direção. Cada pulso no STEP faz o motor avançar um passo (ou fração dele, dependendo do microstepping configurado).

O ajuste de limite de corrente é feito com um pequeno trimpot na placa, garantindo que o driver entregue exatamente a corrente que seu motor suporta — protegendo tanto o motor quanto o driver.

Aplicações Comuns

O DRV8825 aparece em muitos projetos que precisam de precisão e força, como:

  • Impressoras 3;
  • Máquinas CNC e routers;
  • Braços robóticos;
  • Dosadores automáticos, etc.

Pinos

O módulo DRV8825 possui 16 pinos no total, e cada pino tem uma função específica. Na figura abaixo, é possível visualizar todos os pinos e suas funções.

Pinos de micropassos

O driver DRV8825 oferece seis opções diferentes de resolução de passos: passos inteiros, meio passo, quarto de passo, oitavo de passo, décimo sexto de passo e trinta e dois avos de passo. Cada modo divide os passos de forma diferente para proporcionar vários níveis de precisão.

O DRV8825 possui três pinos dedicados que permitem escolher a resolução de micropasso desejada os pinos:M0, M1 e M2 mostrados na imagem a baixo:

 

Ao definir diferentes níveis lógicos (ALTO ou BAIXO) nesses pinos, você pode selecionar qualquer um dos seis modos de passo disponíveis:

M0M1M2Resolução de micropassos
BaixoBaixoBaixoPasso completo
AltoBaixoBaixoMeio passo
BaixoAltoBaixo1/4 de passo
AltoAltoBaixo1/8 de passo
BaixoBaixoAlto1/16 de passo
AltoBaixoAlto1/32 de passo
BaixoAltoAlto1/32 de passo
AltoAltoAlto1/32 de passo

É importante notar que esses pinos possuem resistores internos de pull-down que os mantêm em nível BAIXO por padrão. Isso significa que, se você deixar esses pinos desconectados, o motor funcionará automaticamente no modo de passo completo. Para mais detalhes do CI no módulo consulte o datasheet.


Circuito

Conexões do os pinos do Arduino:

Driver de motor DRV8825Arduino
RST5V
SLP5V
GNDGND
STEP3
DIR2

 

Conexões com o motor de passo:

Driver de motor DRV8825Motor
A1A1
A2A2
B1B1
B2B2

 


Código

// Pino de conexão
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  // Seta a direção do motor para sentido horário
  digitalWrite(dirPin, HIGH);

  // Gire o motor lentamente
  for (int x = 0; x < stepsPerRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }
  delay(1000);  // Espera um segundo

  // Ajuste a direção do motor no sentido anti-horário.
  digitalWrite(dirPin, LOW);

  // Girar o motor rapidamente
  for (int x = 0; x < stepsPerRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);  // Espera um segundo
}

 

Explicando o código

O esboço começa definindo os pinos do Arduino que se conectam aos pinos STEP e DIR do DRV8825.

const int dirPin = 2;
const int stepPin = 3;

Também definimos uma variável para armazenar o número de passos que o motor precisa para completar uma rotação. No nosso caso, são 200 passos por revolução, o que é padrão para a maioria dos motores de passo NEMA 17. Se o seu motor tiver um número diferente de passos por revolução, basta ajustar esse valor de acordo.

const int stepsPerRevolution = 200;

Na seção setup(), configuramos os pinos STEP e DIR como saídas para que o Arduino possa enviar sinais através deles.

pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);

Na seção loop(), primeiro fazemos o motor girar no sentido horário em uma velocidade baixa. Para isso, definimos o pino DIR como ALTO, o que indica ao motor que gire no sentido horário. Em seguida, executamos um loop que envia 200 pulsos para o pino STEP — um pulso para cada passo do motor. Entre cada pulso, aguardamos 2000 microssegundos (ou 2 milissegundos), o que faz o motor girar lentamente.

digitalWrite(dirPin, HIGH);
for (int x = 0; x < stepsPerRevolution; x++) {
  digitalWrite(stepPin, HIGH); 
  delayMicroseconds(2000);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(2000);
}
delay(1000);

Após completar a primeira rotação, fazemos uma pausa de um segundo. Em seguida, alteramos a direção definindo o pino DIR como BAIXO, o que faz o motor girar no sentido anti-horário. Enviamos novamente os mesmos 200 pulsos para o pino STEP, mas desta vez reduzimos o atraso entre os pulsos para 1000 microssegundos. Esse atraso menor faz o motor girar duas vezes mais rápido na direção oposta. Após uma pausa de um segundo, todo o loop recomeça.

digitalWrite(dirPin, LOW);

for (int x = 0; x < stepsPerRevolution; x++) {
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(1000);
}
delay(1000); 

A chave para controlar a velocidade do motor está em ajustar o atraso entre os sinais HIGH e LOW enviados para o pino STEP. Um atraso menor faz o motor girar mais rápido, enquanto um atraso maior o faz girar mais devagar.


Conclusão

Com este projeto, aprendemos mais sobre drivers de motor de passo, e que existem drives para aplicações específicas como, por exemplo, em projetos onde é necessário o microstepping para aumentar a precisão do movimento.

Para mais materiais como esse, continue acompanhando as postagens semanais do blog e não deixe de visitar nossa loja. Lá você encontra todos os componentes necessários para desenvolver esse e muitos outros projetos!

Que a força esteja com vocês!

Até mais!


Sobre o Autor


Saulo Aislan

Graduando em Tecnologia em Telemática pelo IFPB – Campus de Campina Grande – PB. Tenho experiência com os microcontroladores da família Arduino, ESP8266, ESP32, STM32 e microprocessador Raspberry Pi. Tenho projetos na áreas de IoTs voltada para a indústria 4.0, agroindústria e indústria aeroespacial civil utilizando LoRa, Bluetooth, ZigBee e Wi-Fi. Atualmente estudando e desenvolvendo em FreeRTOS para sistemas em tempo real com ESP32 e LoRaWan para Smart City e compartilhando alguns projetos no blog da Eletrogate.


Eletrogate

27 de fevereiro de 2026

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Os comentários estão desativados.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Assine nossa newsletter e
receba  10% OFF  na sua
primeira compra!