Arduino UNO R4 - Motor DC
Neste guia, vamos aprender a usar o Arduino UNO R4 para controlar o motor DC. Em detalhes, vamos aprender:
- Como um motor DC funciona
- Como controlar a velocidade e o sentido de um motor DC.
- Como controlar um motor DC com um driver L298N

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 Motor DC
Pinagem do Motor DC
Um motor DC tem dois fios.
- Fio positivo: geralmente vermelho
- Fio negativo: geralmente preto

Como Funciona
Ao comprar um motor DC, é importante saber com qual tensão ele opera. Por exemplo, considere um motor DC que trabalha com 12 volts. Quando você conecta o motor DC de 12V a uma fonte de 12 Volts:
- Conecte 12V ao fio positivo e GND ao fio negativo: o motor DC girará em velocidade máxima no sentido horário.
- Conecte 12V ao fio negativo e GND ao fio positivo: o motor DC girará em velocidade máxima no sentido anti-horário.
Quando você troca as conexões dos dois fios do motor DC como descrito acima, o sentido em que ele gira muda. Essa técnica ajuda a controlar o sentido do motor DC. Isso não é feito à mão, mas por meio de programação.
Se aplicarmos menos de 12V ao motor DC, o motor gira, mas não em velocidade máxima. Isso mostra que mudar a tensão muda a velocidade do motor. Mas ajustar a tensão diretamente é difícil em situações reais. Por isso, existe um método mais simples para controlar a velocidade do motor DC. Mantemos a tensão da fonte de alimentação constante e usamos um sinal PWM (Pulse Width Modulation, ou Modulação por Largura de Pulso) para controlar a velocidade do motor. Com um duty cycle de PWM maior, o motor gira mais rápido, e vice-versa.

A animação a seguir mostra como um sinal PWM é usado para controlar a velocidade de um motor DC:

Como controlar um motor DC usando o Arduino UNO R4
Para controlar um motor DC, você precisa controlar sua velocidade e seu sentido. O Arduino UNO R4 pode criar um sinal PWM, mas esse sinal é fraco demais em tensão e corrente para controlar o motor diretamente. Por isso, é necessário um driver de hardware para conectar o Arduino UNO R4 ao motor DC. Esse driver realiza duas tarefas principais:
- Aumentar a potência do sinal PWM do Arduino UNO R4 (corrente e tensão) para controlar a velocidade.
- Receber o sinal de controle do Arduino UNO R4 para mudar a polaridade da alimentação e controlar o sentido.

※ Nota:
- Você pode usar este guia para qualquer motor DC. Estamos usando um motor DC de 12V como exemplo.
- Quando você usa um motor DC de 5V, mesmo que o pino do Arduino UNO R4 envie 5V (a mesma tensão do motor DC), você ainda precisa de um driver entre o Arduino UNO R4 e o motor DC. Isso porque o pino do Arduino UNO R4 não consegue fornecer corrente suficiente para o motor DC.
Este tutorial usará o driver L298N para controlar motores DC.
Sobre o Driver L298N
Neste guia, vamos aprender a usar o driver L298N para controlar um motor DC.
Pinagem do Driver L298N

O driver L298N pode controlar de forma independente dois motores DC ao mesmo tempo, chamados de motor A e motor B. Ele tem 13 pinos.
Os pinos comuns aos dois motores:
- Pino VCC: fornece energia ao motor. A tensão pode variar de 5 a 35V.
- Pino GND: é um pino de terra comum e deve ser conectado ao GND (0V).
- Pino 5V: alimenta o módulo L298N. Ele pode usar os 5V fornecidos por um Arduino UNO R4.
Pinos do Motor A (Canal A):
- Pinos ENA: controlam a velocidade do Motor A. Para ajustar a velocidade, remova o jumper e conecte o pino a uma entrada PWM.
- Pinos IN1 e IN2: determinam o sentido em que o Motor A gira. Se um pino estiver em HIGH e o outro em LOW, o Motor A girará. Se os dois pinos estiverem em HIGH ou os dois em LOW, o Motor A vai parar.
- Pinos OUT1 e OUT2: são conectados ao Motor A.
Pinos do Motor B (Canal B):
- Pinos ENB: controlam a velocidade do Motor B. Se você remover o jumper e conectar esses pinos a uma entrada PWM, poderá ajustar a rapidez com que o Motor B gira.
- Pinos IN3 e IN4: controlam o sentido em que o Motor B gira. Se IN3 estiver em HIGH e IN4 em LOW, ou vice-versa, o Motor B girará. Se os dois estiverem em HIGH ou os dois em LOW, o Motor B vai parar.
- Pinos OUT3 e OUT4: são conectados ao Motor B.
O driver L298N mencionado acima tem dois tipos de alimentação de entrada:
- Uma para o motor DC (pinos VCC e GND): de 5 a 35V.
- Uma para o funcionamento do próprio módulo L298N (pinos 5V e GND): de 5 a 7V.
O driver L298N tem três jumpers para usos mais complexos. Para simplificar, retire todos os jumpers do driver L298N.
Podemos controlar dois motores DC ao mesmo tempo usando um Arduino UNO R4 e um driver L298N. Para controlar cada motor, usamos três pinos do Arduino UNO R4.
※ Nota:
Este tutorial vai mostrar como controlar um motor DC usando o canal A. Controlar outro motor DC é feito de forma semelhante.
Diagrama de Ligação
Retire os três jumpers do módulo L298N antes de começar a 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.
Como Controlar a Velocidade do Motor DC com o Driver L298N
Você pode ajustar facilmente a velocidade do motor DC enviando um sinal PWM ao pino ENA do L298N. Veja como fazer:
- Conecte um pino do Arduino UNO R4 ao pino ENA do módulo L298N.
- Use a função analogWrite() para enviar um sinal PWM ao pino ENA. O driver L298N vai amplificar esse sinal PWM para alimentar o motor DC.
A velocidade pode ser qualquer número de 0 a 255. Com velocidade 0, o motor vai parar. Com velocidade 255, o motor vai girar na velocidade máxima.
Como Controlar o Sentido do Motor DC com o Driver L298N
O sentido em que um motor gira pode ser alterado ajustando os pinos IN1 e IN2 para HIGH ou LOW. A tabela abaixo mostra como controlar o sentido nos dois canais.
| Pino IN1 | Pino IN2 | Sentido |
|---|---|---|
| LOW | LOW | Motor A para |
| HIGH | HIGH | Motor A para |
| HIGH | LOW | Motor A gira no sentido horário |
| LOW | HIGH | Motor A gira no sentido anti-horário |
- O Motor A gira no sentido horário.
- O Motor A gira no sentido anti-horário
※ Nota:
Se você conectar os pinos OUT1 e OUT2 aos fios do motor DC de forma invertida, o motor vai girar no sentido oposto. Para corrigir, basta trocar as posições dos pinos OUT1 e OUT2, ou mudar os sinais de controle nos pinos IN1 e IN2 no código do programa.
Como Parar o Motor DC
Existem dois métodos para desligar um motor DC.
- Defina a velocidade como zero.
- Defina os pinos IN1 e IN2 com o mesmo valor (LOW ou HIGH).
Ou:
Como controlar um motor DC usando o driver L298N.
Código Arduino UNO R4
O código abaixo faz o seguinte:
- Faz o motor DC acelerar
- Inverte o sentido
- Faz o motor DC desacelerar
- Para o motor
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 Arduino Uno R4 WiFi/Minima na Arduino IDE.
- Ligue os componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Retire os três jumpers do módulo L298N.
- Cole o código na Arduino IDE.
- Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
- Observações:
- O motor DC acelera e depois gira na velocidade máxima por 1 segundo.
- O sentido do motor DC muda.
- O motor DC gira na velocidade máxima por 1 segundo no sentido oposto.
- O motor DC desacelera.
- O motor DC para por 1 segundo.
- Essa sequência se repete continuamente.
※ Nota:
Neste tutorial, vamos aprender a ajustar a velocidade relativa de um motor DC em relação à sua velocidade máxima. Para controlar a velocidade absoluta em rotações por segundo, precisamos usar um controlador PID e um encoder. Vamos mostrar como controlar a velocidade precisa do motor DC em outro tutorial.