Arduino UNO R4 - Driver de Motor DC DRV8833
Neste guia, vamos aprender como controlar motores DC a partir de um Arduino UNO R4 com a pequena placa driver de motor DRV8833. Começamos com um único motor e depois adicionamos um segundo motor, que é a base de um carrinho robô de duas rodas. Em detalhes, vamos aprender:
- O que é o módulo DRV8833 e o que cada um de seus pinos faz
- Como os dois pinos IN de um canal definem a direção, a velocidade e o modo de parada de um motor
- Como conectar um motor DC ao Arduino UNO R4 através do DRV8833 e como programá-lo
- Como conectar e programar dois motores DC para andar para frente, andar para trás, virar à esquerda e virar à direita

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Driver de Motor DRV8833
Um pino do Arduino UNO R4 só consegue fornecer alguns miliamperes, mas um pequeno motor DC precisa de centenas. A placa DRV8833 fica entre os dois. Ela é construída em torno de um chip da Texas Instruments com duas pontes H dentro, então uma placa aciona dois motores DC com escovas (ela também pode acionar um motor de passo bipolar). Se você leu nosso tutorial Arduino UNO R4 - Motor DC com o L298N, vai ver que o DRV8833 faz o mesmo trabalho com uma placa bem menor.
Fatos principais:
| DRV8833 | |
|---|---|
| Tensão do motor (pino VCC) | 2.7V a 10.8V |
| Sinais lógicos | 3.3V e 5V funcionam (sem pino separado de alimentação lógica) |
| Corrente de saída | cerca de 1.5A RMS por canal, 2A de pico (com boa refrigeração) |
| Chaves de saída | MOSFETs, cerca de 360 mΩ (lado alto + lado baixo) |
| Frequência PWM | até 50 kHz |
| Proteção | bloqueio por subtensão, sobrecorrente, desligamento térmico |
Como as saídas são MOSFETs, a tensão perdida dentro do driver é pequena. O L298N, mais antigo, perde alguns volts como calor, mas o DRV8833 passa quase toda a tensão da bateria para o motor. Isso o torna uma boa combinação para robôs com baterias de 3V a 9V. Se você precisa de mais corrente para um motor grande, os dois canais podem ser unidos em paralelo para cerca de 3A, mas não fazemos isso neste guia.

Os pinos do módulo DRV8833 vermelho ou azul comum:
- Pino VCC: conecte à fonte de alimentação do motor (2.7V a 10.8V). O chip gera sua própria tensão lógica a partir deste pino.
- Pino GND: conecte ao terra da fonte de alimentação do motor e ao GND do Arduino UNO R4.
- Pinos IN1, IN2: controlam o motor A. Conecte a dois pinos PWM do Arduino UNO R4.
- Pinos IN3, IN4: controlam o motor B. Conecte a mais dois pinos PWM.
- Pinos OUT1, OUT2: conecte aos dois fios do motor A.
- Pinos OUT3, OUT4: conecte aos dois fios do motor B.
- Pino EEP (pino de sleep, nSLEEP): precisa estar em HIGH para ligar o driver. Conecte-o ao pino 5V do Arduino UNO R4. Se estiver em LOW, o chip dorme e os motores não se movem.
- Pino ULT (pino de falha, nFAULT): vai para LOW quando o chip detecta um problema, como sobrecorrente ou superaquecimento. Ele é opcional, e você pode deixá-lo desconectado.
※ Nota:
Os nomes dos pinos variam entre os vendedores. Algumas placas imprimem AIN1/AIN2/BIN1/BIN2, AOUT1/AOUT2/BOUT1/BOUT2, SLP e FLT no lugar. A função de cada pino continua a mesma.
Como os pinos IN controlam um motor
O L298N tem os pinos ENA/ENB para a velocidade. O DRV8833 não tem esse pino. Cada canal usa apenas seus dois pinos IN, e eles definem tanto a direção quanto a velocidade. Esta é a tabela para o motor A (o motor B funciona do mesmo jeito com IN3 e IN4):
| IN1 | IN2 | Motor A |
|---|---|---|
| LOW | LOW | Roda livre (sem energia, o motor rola até parar) |
| HIGH | LOW | Gira para frente |
| LOW | HIGH | Gira em reverso |
| HIGH | HIGH | Freio (o motor para rapidamente) |
Para mudar a velocidade, envie um sinal PWM em vez de um HIGH constante:
- Para frente em uma velocidade escolhida: PWM em IN1, IN2 em LOW.
- Reverso em uma velocidade escolhida: IN1 em LOW, PWM em IN2.
Então os dois pinos IN de um canal precisam ser pinos PWM. No Arduino UNO R4 WiFi e no Minima, os pinos PWM são marcados com um sinal "~". Neste guia usamos D10 e D9 para o motor A, e D6 e D5 para o motor B.
Alimentando os motores
Nunca alimente os motores pelo pino 5V ou 3.3V do Arduino UNO R4. Alimente o pino VCC do DRV8833 com uma fonte separada, como um adaptador de 5V através de um conector de alimentação DC, ou um conjunto de 4 pilhas AA (cerca de 6V). Depois, junte o GND dessa fonte, o GND do DRV8833 e o GND do Arduino UNO R4. Sem esse terra comum, os sinais IN não têm referência e os motores agem de forma estranha.
Parte 1 - Controlar Um Motor DC
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
| Módulo DRV8833 | Arduino UNO R4 / outro |
|---|---|
| IN1 | D10 |
| IN2 | D9 |
| EEP | 5V |
| GND | GND (e o negativo do adaptador de 5V) |
| VCC | positivo do adaptador de 5V |
| OUT1, OUT2 | os dois fios do motor DC |
Como Programar o DRV8833
- Defina os dois pinos que vão para IN1 e IN2:
- Torne-os saídas no setup():
- Gire para frente em uma velocidade de 0 a 255:
- Gire em reverso:
- Roda livre (os dois em LOW) ou freio (os dois em HIGH):
No código completo, essas linhas ficam dentro de uma pequena função motorA(speed). Uma velocidade positiva significa para frente, uma velocidade negativa significa reverso e 0 significa roda livre. Usamos analogWrite() com 0 e 255 para LOW e HIGH, assim os mesmos pinos nunca alternam entre o modo PWM e o modo digital.
Código Arduino UNO R4 - Um Motor DC
O código abaixo:
- Acelera o motor lentamente no sentido para frente
- Mantém a velocidade máxima por 2 segundos
- Deixa o motor parar em roda livre
- Faz o motor girar em reverso a cerca de 70% da velocidade
- Freia com força e depois repete
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
- Ligue o módulo DRV8833, o motor DC e o adaptador de 5V conforme o diagrama fornecido. Verifique se o EEP vai para o 5V e se todos os terras estão unidos.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 Minima) e a porta COM.
- Copie o código acima e cole no Arduino IDE.
- Clique no botão Upload para enviar o código para o Arduino UNO R4.
- Conecte o adaptador de 5V para alimentar o motor.
- Abra o Serial Monitor e observe o motor.
Ouça a diferença entre as duas paradas: na etapa de roda livre o motor desacelera suavemente, e na etapa de freio ele para quase de imediato.
※ Nota:
Se o motor girar no sentido errado, troque os dois fios do motor em OUT1 e OUT2. Se o motor não se mover de jeito nenhum, verifique primeiro o pino EEP: quando ele não está em HIGH, o driver dorme.
Parte 2 - Controlar Dois Motores DC
Agora usamos também o canal B. Com um motor na roda esquerda e um na roda direita, o Arduino UNO R4 pode guiar um pequeno carro apenas mudando a direção de cada roda.
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
| Módulo DRV8833 | Arduino UNO R4 / outro |
|---|---|
| IN1 | D10 |
| IN2 | D9 |
| IN3 | D6 |
| IN4 | D5 |
| EEP | 5V |
| GND | GND (e o negativo do adaptador de 5V) |
| VCC | positivo do adaptador de 5V |
| OUT1, OUT2 | motor A (roda esquerda) |
| OUT3, OUT4 | motor B (roda direita) |
Código Arduino UNO R4 - Dois Motores DC
Este código adiciona uma função motorB(speed) e um auxiliar drive() que define os dois motores e imprime o nome da ação. O carro anda para frente, para, anda para trás, depois vira à esquerda (motor A em reverso, motor B para frente) e à direita (o oposto).
Passos Rápidos
- Adicione o segundo motor e os fios IN3/IN4 como mostrado no diagrama acima.
- Copie o código e abra no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino UNO R4.
- Alimente os motores com o adaptador de 5V.
- Abra o Serial Monitor. Levante as rodas da mesa para que o carro não saia correndo enquanto você testa.
Se o carro virar à direita quando o Serial Monitor disser "Turn left", um motor está ligado ao contrário. Troque os fios desse motor nos pinos OUT dele.
※ Nota:
Dois motores puxam mais corrente que um. Se o Arduino UNO R4 reiniciar quando os dois motores partirem, sua fonte está fraca demais. Use um adaptador mais forte ou pilhas novas, e mantenha a alimentação dos motores separada da alimentação USB.