Arduino UNO R4 - Motor DC

Neste guia, vamos aprender a usar o Arduino UNO R4 para controlar o motor DC. Em detalhes, vamos aprender:

Arduino UNO R4 DC motor

Sobre o Motor DC

Pinagem do Motor DC

Um motor DC tem dois fios.

  • Fio positivo: geralmente vermelho
  • Fio negativo: geralmente preto
DC Motor Pinout

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.

How to control DC motor

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

How to control speed of DC motor by using PWM

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.
Arduino UNO R4 control DC motor

※ 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

L298N Driver Pinout

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.

The wiring diagram between Arduino UNO R4 DC Motor L298N Driver

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.
analogWrite(ENA_PIN, speed); // Set motor speed on ENA_PIN, range 0-255

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.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • O Motor A gira no sentido anti-horário
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ 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.
analogWrite(ENA_PIN, 0);
  • Defina os pinos IN1 e IN2 com o mesmo valor (LOW ou HIGH).
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);

Ou:

digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

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
/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor */ #define ENA_PIN 9 // The Arduino UNO R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino UNO R4 pin connected to the IN1 pin L298N #define IN2_PIN 3 // The Arduino UNO R4 pin connected to the IN2 pin L298N void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } void loop() { digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // rotate at maximum speed 1 seconds in in clockwise direction // change direction digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise delay(1000); // rotate at maximum speed 1 seconds in in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // stop motor 1 second }

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.

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!