Arduino Nano - Motor DC

Este tutorial ensina você a usar o Arduino Nano para controlar um Motor DC. Em detalhes, vamos aprender:

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×L298N Motor Driver Module
1×Motor DC 5V
1×(Opcional) 12V DC Motor
1×Fonte de Alimentação 5V para motor DC 5V
1×Conector de Alimentação DC
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Motor DC

Pinagem do Motor DC

O Motor DC tem dois fios; o fio positivo geralmente é vermelho e o fio negativo geralmente é preto.

DC Motor pinout

Como Funciona

Ao comprar um motor DC, é importante saber a tensão em que ele opera. Por exemplo, vamos considerar um motor DC de 12V.

Quando você alimenta o motor DC de 12V com uma fonte de 12V:

  • Conectando 12V e GND ao fio positivo e ao fio negativo, respectivamente: o motor DC gira na velocidade máxima no sentido horário
  • Conectando 12V e GND ao fio negativo e ao fio positivo, respectivamente: o motor DC gira na velocidade máxima no sentido anti-horário

Trocar o polo da alimentação entre os dois fios do motor DC inverte o sentido de rotação. Essa técnica é usada para controlar a direção do motor DC, não manualmente, mas por programação.

Se a tensão da fonte de alimentação de um motor DC for menor que 12V, o motor ainda vai girar, mas não na velocidade máxima. Portanto, ajustando a tensão da fonte de alimentação, podemos controlar a velocidade do motor DC. No entanto, essa abordagem normalmente não é usada pela dificuldade de controlar a tensão da fonte de alimentação. Como alternativa, mantemos a tensão da fonte fixa e controlamos a velocidade do motor DC por meio de um sinal PWM. Quanto maior o duty cycle do PWM, mais rápido o motor DC gira.

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 Nano

Controlar um motor DC envolve dois elementos: velocidade e direção. O Arduino Nano pode gerar um sinal PWM, mas esse sinal tem baixa tensão e baixa corrente, então não pode ser usado diretamente para controlar o motor. Precisamos usar um driver de hardware entre o Arduino Nano e o motor. O driver realiza duas tarefas:

  • Amplificar o sinal PWM do Arduino Nano (em termos de corrente e/ou tensão) para o controle de velocidade
  • Receber o sinal de controle do Arduino Nano para inverter a polaridade da alimentação, para o controle de direção.
Arduino Nano control DC motor

※ Nota:

  • Este tutorial pode ser usado para todos os motores DC. Estamos usando um motor DC de 12V como exemplo.
  • Ao controlar um motor DC de 5V, mesmo que o pino do Arduino Nano forneça 5V (a mesma tensão do motor DC), ainda é necessário um driver entre o Arduino Nano e o motor DC, pois o pino do Arduino Nano não fornece corrente suficiente para o motor DC.
  • Se você usar um motor DC de 5V, precisa de uma fonte de alimentação de 5V para o motor. Se você usar um motor DC de 12V, precisa de uma fonte de alimentação de 12V para o motor.

Existem muitos chips e módulos que podem funcionar como drivers para motores DC, como o L293D e o L298N. Neste guia, vamos usar o driver L298N.

Sobre o Driver L298N

O Driver L298N pode ser usado para controlar motores DC e motores de passo. Este tutorial ensina você a usá-lo para controlar um motor DC.

Pinagem do Driver L298N

L298N Driver pinout

O Driver L298N é capaz de controlar dois motores DC de forma independente ao mesmo tempo, chamados de motor A e motor B. Este driver tem treze pinos.

Os pinos comuns aos dois motores:

  • Pino VCC: Este pino fornece energia ao motor, com uma faixa de tensão de 5 a 35V.
  • Pino GND: Este pino é uma conexão de terra comum que deve ser conectada a 0V (GND).
  • Pino 5V: Este pino alimenta o módulo L298N e pode receber 5V de uma fonte de um Arduino Nano.

Pinos do Motor A (Canal A):

  • Pinos ENA: Estes pinos são usados para regular a velocidade do Motor A. Removendo o jumper e conectando este pino a uma entrada PWM, poderemos controlar a velocidade do Motor A.
  • Pinos IN1 e IN2: Estes pinos são usados para gerenciar o sentido de giro do Motor A. Quando um deles está HIGH e o outro está LOW, o Motor A vai girar. Se as duas entradas estiverem HIGH ou as duas estiverem LOW, o Motor A vai parar.
  • Pinos OUT1 e OUT2: Estes pinos são conectados ao Motor A.

Pinos do Motor B (Canal B):

  • Pinos ENB: Este pino pode ser usado para controlar a velocidade do Motor B. Removendo o jumper e conectando-o à entrada PWM, podemos ajustar a velocidade do Motor B.
  • Pinos IN3 e IN4: Estes pinos são usados para gerenciar o sentido de giro do Motor B. Quando um deles está HIGH enquanto o outro está LOW, o Motor B vai girar. Se as duas entradas estiverem HIGH ou as duas estiverem LOW, o Motor B vai parar de se mover.
  • Pinos OUT3 e OUT4: Estes pinos são conectados ao Motor B.

O driver L298N tem duas alimentações de entrada:

  • Uma para o motor DC, com faixa de tensão de 5 a 35V (pinos VCC e GND).
  • Uma para a operação interna do módulo L298N, com faixa de tensão de 5 a 7V (pinos 5V e GND).

Remova todos os jumpers do driver L298N para simplificar.

Também podemos controlar dois motores DC separadamente e ao mesmo tempo usando um Arduino Nano e um Driver L298N. Para controlar cada motor, precisamos de apenas três pinos do Arduino Nano.

※ Nota:

O restante deste tutorial vai focar no controle de um motor DC usando o canal A. Passos semelhantes devem ser seguidos para controlar o outro motor DC.

Como Controlar a Velocidade do Motor DC via Driver L298N

É fácil controlar a velocidade de um motor DC produzindo um sinal PWM no pino ENA do L298N. Para isso:

  • Conecte um pino do Arduino Nano ao ENA do L298N
  • Gere um sinal PWM no pino ENA por meio da função analogWrite(). O Driver L298N vai amplificar o sinal PWM para o motor DC.
analogWrite(ENA_PIN, speed); // speed is a value from 0 to 255

A velocidade (speed) é um número de 0 a 255. Quando a velocidade é 0, o motor para de se mover. Quando a velocidade é 255, o motor gira na sua taxa mais rápida.

Como Controlar a Direção do Motor DC via Driver L298N

A rotação de um motor pode ser gerenciada dando um nível lógico HIGH/LOW aos pinos IN1 e IN2. A tabela abaixo mostra como controlar a direção nos dois canais.

Pino IN1 Pino IN2 Direção
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

Portanto:

  • Código Arduino para fazer o motor A girar no sentido horário.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Código Arduino para fazer o motor A girar no sentido anti-horário.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Nota:

O sentido horário/anti-horário do motor DC pode ser invertido conectando os pinos OUT1 e OUT2 aos dois fios do motor de maneira oposta.

Como Parar o Giro do Motor DC

Dois métodos para parar um motor DC:

  • Reduzindo sua velocidade a zero
analogWrite(ENA_PIN, 0);
  • Colocando os pinos IN1 e IN2 no 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.

Diagrama de Ligação

Retire os três jumpers do módulo L298N antes de conectar os fios.

The wiring diagram between Arduino Nano and DC Motor L298N Driver

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Código Arduino Nano

O código a seguir faz o seguinte, um passo de cada vez:

  • Aumenta a velocidade de um motor DC
  • Muda a direção
  • Diminui a velocidade de um motor DC
  • Para o motor DC
/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-dc-motor */ const int ENA_PIN = 6; // The Arduino Nano pin connected to the EN1 pin L298N const int IN1_PIN = 5; // The Arduino Nano pin connected to the IN1 pin L298N const int IN2_PIN = 4; // The Arduino Nano pin connected to the IN2 pin L298N // The setup function runs once on reset or power-up void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // The loop function repeats indefinitely 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

  • Retire os três jumpers do módulo L298N.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para fazer upload do código para o Arduino Nano.
  • Você deve observar:
    • O motor DC vai acelerar e depois girar na velocidade máxima por 1 segundo.
    • A direção do motor DC será alterada.
    • O motor DC vai girar na velocidade máxima por 1 segundo no sentido oposto.
    • O motor DC vai desacelerar.
    • O motor DC vai parar por 1 segundo.
    • Esse processo será repetido continuamente.

    ※ Nota:

    Este tutorial ensina você a ajustar a velocidade de um motor DC em relação à sua velocidade máxima. Para controlar a velocidade absoluta (em rotações por segundo), precisaremos usar um controlador PID e um encoder. Um tutorial separado vai abordar o controle da velocidade absoluta do motor DC.

Como Controlar dois Motores DC usando o Driver L298N

Em breve!

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!