Arduino Nano - Driver de Motor DC DRV8833
Este tutorial ensina você a usar o Arduino Nano com o módulo driver de motor DRV8833 para girar pequenos motores DC. Em detalhes, vamos aprender:
- Como o DRV8833 decide a direção e a velocidade de um motor com apenas dois pinos de entrada
- Como conectar o Arduino Nano, o módulo DRV8833 e um motor DC
- Como programar o Arduino Nano para acelerar, inverter, rodar livre e frear um motor DC
- Como estender o circuito e o código para acionar dois motores DC, como as rodas de um pequeno carrinho robô

Nós sugerimos:
- Utilizar o driver L298N se seus motores precisam de uma alimentação acima de 10.8V, como motores com redução de 12V.
- Utilizar o DRV8833 (este tutorial) se seu projeto funciona com algumas pilhas AA ou um adaptador de 5V, pois ele desperdiça muito menos energia como calor.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Driver de Motor DRV8833
Pinagem do Driver de Motor DRV8833
O DRV8833 é um chip de ponte H dupla da Texas Instruments. Um módulo pode acionar dois motores DC com escovas de forma independente (ele também pode acionar um motor de passo bipolar, mas isso está fora deste tutorial). A alimentação do motor deve ficar entre 2.7V e 10.8V. Cada canal fornece cerca de 1.5A de forma contínua e até 2A em picos curtos quando se mantém frio. Suas saídas são MOSFETs com uma baixa resistência em condução (cerca de 360 mΩ), então a perda de tensão é pequena e a placa fica bem mais fria que um L298N. Isso o torna uma boa escolha para robôs a bateria na faixa de 3V a 9V. O chip também se protege contra subtensão, sobrecorrente e superaquecimento.
Não há um pino separado de alimentação lógica: o chip cria sua própria tensão lógica interna a partir do VCC. Portanto, os sinais de 5V que saem do Arduino Nano são aceitos diretamente.

O módulo DRV8833 tem doze pinos:
- Pino VCC: deve ser conectado à fonte de alimentação do motor (2.7V a 10.8V)
- Pino GND: deve ser conectado ao GND da fonte de alimentação do motor E ao GND do Arduino Nano
- Pino EEP (nSLEEP): deve ser colocado em HIGH para acordar o driver. Conecte-o ao pino 5V do Arduino Nano. Se estiver em LOW, o chip dorme e os motores não se movem
- Pino ULT (nFAULT): saída de falha. Ele vai para LOW quando o chip detecta um problema. Este pino é opcional e pode ficar desconectado
- Pinos IN1, IN2: entradas de controle do motor A, usadas tanto para a direção quanto para a velocidade
- Pinos IN3, IN4: entradas de controle do motor B, usadas tanto para a direção quanto para a velocidade
- Pinos OUT1, OUT2: devem ser conectados aos dois fios do motor A
- Pinos OUT3, OUT4: devem ser conectados aos dois fios do motor B
※ Nota:
A disposição e os nomes dos pinos podem ser diferentes de um fabricante para outro. Algumas placas imprimem AIN1/AIN2/BIN1/BIN2, AOUT1/AOUT2/BOUT1/BOUT2, SLP e FLT no lugar dos nomes acima. É essencial sempre consultar os nomes impressos no módulo ao usá-lo. Olhe com atenção!
Como o DRV8833 Controla um Motor
Ao contrário do L298N, o DRV8833 não tem pino de velocidade ENA ou ENB. Os dois pinos IN de um canal definem tanto a direção quanto a velocidade. A tabela abaixo mostra o motor A (o motor B funciona do mesmo jeito com IN3 e IN4):
| IN1 | IN2 | Motor A |
|---|---|---|
| LOW | LOW | Roda livre (o motor desacelera livremente) |
| HIGH | LOW | Para frente |
| LOW | HIGH | Reverso |
| HIGH | HIGH | Freio (o motor para rapidamente) |
Para mudar a velocidade, um sinal PWM é enviado a um dos dois pinos enquanto o outro fica em LOW:
- Para frente com velocidade: PWM em IN1, IN2 = LOW
- Reverso com velocidade: IN1 = LOW, PWM em IN2
Como qualquer um dos pinos pode levar PWM, os dois pinos IN de cada canal devem ser conectados a pinos do Arduino Nano com suporte a PWM. No Arduino Nano, esses pinos são D3, D5, D6, D9, D10 e D11. Se você quer rever como um motor DC e o PWM funcionam, veja o tutorial Arduino Nano - Motor DC.
※ Nota:
- Nunca alimente os motores pelo pino 5V do Arduino Nano. Use uma fonte externa, como um adaptador de 5V ou um conjunto de 4 pilhas AA (cerca de 6V).
- O GND da fonte do motor, do módulo DRV8833 e do Arduino Nano deve ser conectado junto. Sem um terra comum, os motores vão se comportar de forma estranha.
- Para cargas mais pesadas, os dois canais podem ser ligados em paralelo para cerca de 3A, mas isso é opcional e não é abordado aqui.
Controlar Um Motor DC com Arduino Nano e DRV8833
Diagrama de Ligação
Os fios do motor A vão para OUT1 e OUT2, e o Arduino Nano aciona o IN1 pelo pino D10 e o IN2 pelo pino D9.

This image is created using Fritzing. Click to enlarge image
| Módulo DRV8833 | Arduino Nano / Alimentação |
|---|---|
| IN1 | D10 |
| IN2 | D9 |
| EEP | 5V |
| GND | GND (compartilhado com a fonte de alimentação) |
| VCC | + do adaptador de alimentação de 5V (via conector de alimentação DC) |
| OUT1, OUT2 | Fios do motor A |
Como Programar o DRV8833
- O primeiro passo é especificar os pinos do Arduino Nano que estão conectados ao IN1 e ao IN2:
- Defina os dois pinos como saídas no setup():
- Para girar para frente em uma velocidade escolhida (0 a 255), envie PWM para o IN1 e mantenha o IN2 em LOW:
- Para girar em reverso, troque as funções dos dois pinos:
- Para frear, coloque os dois pinos em HIGH. Para rodar livre, coloque os dois pinos em LOW:
Código Arduino Nano para DRV8833 - Um Motor DC
O sketch abaixo repete estes passos: acelera o motor, mantém a velocidade máxima, deixa em roda livre, faz o motor girar em reverso e, por fim, freia. Cada passo é impresso no Serial Monitor.
Passos Rápidos
- Se esta é a primeira vez que você usa o Arduino Nano, veja como configurar o ambiente para Arduino Nano no Arduino IDE.
- Ligue os componentes como mostrado no diagrama. Mantenha o adaptador de 5V desconectado por enquanto.
- Conecte a placa Arduino Nano ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador e selecione a placa Arduino Nano e a porta COM dela.
- Copie o código acima e cole no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino Nano.
- Conecte o adaptador de 5V para alimentar o motor.
- Abra o Serial Monitor e defina o baud rate como 9600.
- Observe o motor: ele acelera, continua girando, rola devagar até parar, gira para o outro lado e depois para de repente quando freia.
※ Nota:
Se o motor girar no sentido "errado" quando o Serial Monitor mostrar Forward, é só trocar os dois fios do motor em OUT1 e OUT2.
Controlar Dois Motores DC com Arduino Nano e DRV8833
Diagrama de Ligação
Para o segundo motor, adicione quatro fios: o motor B vai para OUT3 e OUT4, o IN3 vai para o pino D6 e o IN4 vai para o pino D5. O resto da ligação continua o mesmo.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
| Módulo DRV8833 | Arduino Nano / Alimentação |
|---|---|
| IN1 | D10 |
| IN2 | D9 |
| IN3 | D6 |
| IN4 | D5 |
| EEP | 5V |
| GND | GND (compartilhado com a fonte de alimentação) |
| VCC | + do adaptador de alimentação de 5V (via conector de alimentação DC) |
| OUT1, OUT2 | Motor A (roda esquerda) |
| OUT3, OUT4 | Motor B (roda direita) |
Código Arduino Nano para DRV8833 - Dois Motores DC
Pense nos dois motores como as rodas esquerda e direita de um pequeno carrinho robô. O código usa duas funções auxiliares, motorA(speed) e motorB(speed). A velocidade é um número com sinal de -255 a 255: um valor positivo gira a roda para frente, um valor negativo gira para trás e 0 deixa em roda livre. Com essas duas funções, o carro pode andar para frente, andar para trás, virar à esquerda, virar à direita e parar.
Passos Rápidos
- Ligue o segundo motor como mostrado no diagrama.
- Conecte a placa Arduino Nano ao seu computador usando um cabo USB.
- Copie o código acima e abra no Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino Nano.
- Conecte o adaptador de 5V.
- Abra o Serial Monitor e observe os dois motores.
- Para virar à esquerda, o motor A gira para trás enquanto o motor B gira para frente. Para virar à direita, é o oposto.
Conhecimento Adicional
Vamos comparar os drivers de motor DRV8833 e L298N.
| DRV8833 | L298N | |
|---|---|---|
| Tensão do motor | 2.7V a 10.8V | 5V a 35V |
| Corrente por canal | cerca de 1.5A (2A de pico) | cerca de 2A |
| Peças de chaveamento | MOSFET | transistor bipolar |
| Perda de tensão e calor | pequena | grande |
| Pino de controle de velocidade | não, o PWM vai para os pinos IN | sim, ENA e ENB |
| Alimentação lógica | feita dentro do chip | pino separado de 5V |
| Tamanho da placa | muito pequena | grande com dissipador de calor |
É evidente que o DRV8833 é a melhor opção para robôs pequenos a bateria de baixa tensão, enquanto o L298N ainda é necessário para motores de 12V ou mais.