Tudo sobre o driver DRV8825 para motores de passo

Atualizado: Ago 12

O DRV8825 é um driver que vem se popularizando a alguns anos, com baixo custo e um bom desempenho vem cada vez ganhando mais espaço quando o assunto são projetos com motor de passo (geralmente da família Nema 17 e 23, mas servindo para uma gama variada de modelos). Neste blog quero ensinar a vocês como ele funciona e a maneira para se tirar o melhor proveito dele em seus projetos.


Vamos aprender:

1. Princípio de funcionamento;

2. Pinos de controle;

3. Circuito de controle;

4. Regular a corrente;

5. Tensão de trabalho;

6. Calculando o RPM e a Frequência em Hz.


Se você viu o blog da Crescer e os materiais estão fazendo sentido, avalie-nos no google para que possamos alcançar cada vez mais pessoas e as apoiar em seus projetos e produtos! Contamos com você!



1. Princípio de funcionamento:

O DRV8825 chaveia de maneira alternada as saídas de 2 bobinas de motor de passo. Ele faz isso através de um CI que recebe um sinal em pulsos digitais, quadrados de 0 e 1, e com base neles chaveia de maneira proporcional a saída. Se enviarmos uma frequência baixa, na escala de 50 Hz a saída (potência) vai ser chaveada de maneira lenta, poderemos ver o motor recebendo os pulsos e os executando. Para um funcionamento básico do DRV8825 precisamos de 3 pinos de comando, o STEP vai receber os pulsos vindo do nosso uControlador, o ENABLE ativa as saídas de potência do driver e o DIR informa qual o sentido de giro do motor.



2. Pinos de controle

O DRV8825 é um CI capaz de controlar o chaveamento das bobinas de um motor de passo híbrido de 4 fios (2 bobinas). Recomendado sempre utilizar seus 3 pinos de controle ligados a um uControlador Arduino por exemplo. Os pinos são:

Figura 01: Driver DRV8825.


ENABLE: Pino de controle das saídas do driver, quando este pino está em 0V ele libera as saídas do driver a enviar potência para as bobinas do motor, conforme a entrada STEP é acionada.


RESET: Colocado em 0V reseta a lógica interna do driver, desliga as saídas de potência e também ignora a entrada de frequência.


SLEEP: Colocado em 0V, reduz o consumo de energia do driver, desabilita as saídas, os clocks internos do driver são parados.


STEP: Pode receber frequências até 250kHz (o que é muita coisa) motores de passo geralmente vão até 5 kHz dependendo da sua configuração. Cada vez que este pino receber 1 (5V) ele vai fazer com que o motor ande 1 pulso, motores de passo são construídos para 200 pulsos / volta, ou seja se enviarmos 200 pulsos neste pino, o motor vai executar uma volta.


DIR: Conforme o estado lógico deste pino ele vai indicar o sentido de giro do motor. Pode ser mudado com o motor em movimento, ou seja, o motor já está se movimentando para um sentido, ao mudarmos o estado lógico no pino DIR o motor inverte seu sentido instantaneamente sem danificar o driver.


GND LOGIC: Este pino deve estar sempre ligado ao GND do circuito, ele configura o referencial de tensão 0 para o driver poder trabalhar de maneira eficaz.


FAULT: normalmente em 5V este pino deve ser monitorado pelo Arduino, caso o driver sofra um erro por temperatura elevada, causado pelo dimensionamento errado do motor, ou até um pico de corrente, este pino é colocado em 0V e o driver vai se proteger, desligando a saída do motor até que a temperatura se normalize.


A1, A2, B1, B2: São os pinos onde devemos ligar as bobinas do motor de passo, respeitando a ordem, onde 1 das bobinas vai ser ligado nos pinos A e a outra bobina ligados nos pinos B, se conectado de maneira indevida, o motor de passo não vai se movimentar. Caso a bobina tenha seus fios invertidos entre os pinos da mesma bobina, por exemplo de A1 para A2 o motor vai inverter o seu sentido de giro. Técnica útil quando estamos fazendo manutenções e não sabemos a ordem de ligação das bobinas.


VMOT e GND: Aqui são ligados os pinos de alimentação do DRV8825. Geralmente utilizadas fontes de 24V e 5 A para que tenha uma potência de sobra na corrente.

M0, M1, M2: Pinos responsáveis pelo controle de uSteps, ou seja, a divisão de um pulso, configuramos colocando o estado do pino em questão em 0/1 (0V/5V). Caso seja configurado para “meio passo” assim chamado o ½ step o DRV8825 vai precisar agora de 400 pulsos para realizar 1 volta completa em um motor de 200 pulsos por volta. Com esta técnica aumentamos a precisão do nosso motor, o DRV8825, pode ter seus pulsos divididos em até 32uSteps conforme a tabela abaixo.

Figura 02: Tabela de pulsos.


3. Circuito de controle

Figura 03: Exemplo de circuito.


Na figura 03 temos um circuito básico de controle com algumas proteções para melhorar o funcionamento do DRV8825. Como indicado pelo datasheet temos um capacitor de 100uF /25V ligado em paralelo com a entrada da alimentação (VMOT e GND) ele serve para filtrar ruídos elétricos que possam vir da fonte. Também estamos usando um resistor de PULL UP de 2k2 ligado ao pino ENABLE assim ao energizarmos o Arduino ou após um reset o pino não perde o referencial de 5V e consequente a isso não aciona a saída de potência do driver, evitando aquecimentos e acionamentos indevidos. O DRV 8825 aceita 5V em seus pinos de controle, sendo perfeito para usar com as plataformas Arduino. O Led serve para sabermos quando o ENABLE está acionado. Os pinos de M1 e M2 estão com estado lógico 0 e o pino M0 está com 5V, estou usando a configuração de meio passo para esta aplicação, com 400 pulsos por volta.


4. Regular a corrente:

Para regular a corrente do DRV o datasheet disponibiliza um cálculo, baseado nos resistores de referência, que eventualmente mudam de acordo com o fabricante do driver. O exemplo do cálculo é este:

Onde ele está usando um Rsense de 0.2, o DRV vai liberar apenas 70% da corrente para o motor, ou seja, este cálculo vai ser aproximado. Na figura abaixo mostro onde estão estes resistores e a maneira como eu faço o cálculo.


Figura 05: Driver DRV8825.


Onde esta sinalizado em vermelho, se encontra os resistores, lembrando que ambos têm o mesmo valor de 0.1 Ω e que este é o valor do Rsense. Com 1V eu vou ter aproximadamente na saída 1,4 A para cada bobina do meu motor. Alteramos o Vref ajustando a tensão no trimpot conforme imagem.


5. Tensão de trabalho

O DRV8825 pode trabalhar até 45V, nos projetos que já trabalhei sempre foi utilizado no máximo até 36V. Quanto maior a tensão de trabalho maior é o torque para o motor e menor vai ser a corrente de consumo, dada a relação da potência. Cada motor possui determinadas características que estão em sua folha de dados, dizendo qual a melhor relação tensão, velocidade e torque. O motor de passo pode trabalhar quente, mas quanto maior o calor menor é sua vida útil, dimensione para que ele não trabalhe em altas temperaturas e tenha um bom custo benefício em relação ao seu projeto.


6. Calculando o RPM e a Frequência em HZ

É comum em projetos com motor de passo onde a velocidade do motor é medida em rotações por minuto (RPM) e o Arduino vai gerar a frequência em Hz (pulsos por segundo), para isto precisamos converter a frequência de segundos para minutos e levar em conta quantos pulsos o motor precisa para completar 1 volta, como mencionado acima os motores normalmente precisam de 200 pulsos por volta, quando utilizamos uSteps no driver estamos dividindo esses pulsos pelo uStep, ou seja adicionando 2 uSteps (1/5 passo) precisamos dar 400 pulsos para completar uma volta, pois agora 1 pulso equivale a meio passo.


Abaixo demonstro como converter Hz para RPM:

Também deixo em anexo um vídeo onde explico e falo mais sobre motor de passo e DRV8825. Abraço e até a próxima.

Pessoal, vocês também já usam o Driver DRV8825 e motor de passo nos seus projetos? Espero que tenham gostado do conteúdo. Conte-nos mais nos comentários, fique a vontade para dar o seu feedback, compartilhar e nos chamar!

Posts recentes

Ver tudo