Arduino - Motor DC

Neste capítulo, faremos a interface de diferentes tipos de motores com a placa Arduino (UNO) e mostraremos como conectar o motor e acioná-lo a partir de sua placa.

Existem três tipos diferentes de motores -

  • motor DC
  • Servo motor
  • Motor de passo

Um motor DC (motor de corrente contínua) é o tipo mais comum de motor. Os motores DC normalmente têm apenas dois terminais, um positivo e um negativo. Se você conectar esses dois cabos diretamente a uma bateria, o motor irá girar. Se você trocar os cabos, o motor girará na direção oposta.

Warning- Não dirija o motor diretamente dos pinos da placa Arduino. Isso pode danificar a placa. Use um circuito de driver ou um IC.

Vamos dividir este capítulo em três partes -

  • Basta fazer seu motor girar
  • Controle de velocidade do motor
  • Controle a direção do giro do motor DC

Componentes necessários

Você precisará dos seguintes componentes -

  • 1 placa Arduino UNO
  • 1x PN2222 Transistor
  • 1x motor pequeno 6V DC
  • 1x diodo 1N4001
  • 1x resistor 270 Ω

Procedimento

Siga o diagrama do circuito e faça as conexões conforme mostrado na imagem abaixo.

Precauções

Tome as seguintes precauções ao fazer as conexões.

  • Primeiro, certifique-se de que o transistor está conectado da maneira correta. O lado plano do transistor deve ficar de frente para a placa Arduino, conforme mostrado no arranjo.

  • Em segundo lugar, a extremidade listrada do diodo deve estar voltada para a linha de alimentação de + 5 V de acordo com o arranjo mostrado na imagem.

Código Spin ControlArduino

int motorPin = 3;

void setup() {

}

void loop() {
   digitalWrite(motorPin, HIGH);
}

Código a ser anotado

O transistor atua como um interruptor, controlando a energia do motor. O pino 3 do Arduino é usado para ligar e desligar o transistor e recebe o nome de 'motorPin' no esboço.

Resultado

O motor girará em velocidade total quando o pino número 3 do Arduino ficar alto.

Controle de velocidade do motor

A seguir está o diagrama esquemático de um motor DC, conectado à placa Arduino.

Código Arduino

int motorPin = 9;

void setup() {
   pinMode(motorPin, OUTPUT);
   Serial.begin(9600);
   while (! Serial);
   Serial.println("Speed 0 to 255");
}

void loop() {
   if (Serial.available()) {
      int speed = Serial.parseInt();
      if (speed >= 0 && speed <= 255) {
         analogWrite(motorPin, speed);
      }
   }
}

Código a ser anotado

O transistor atua como um interruptor, controlando a potência do motor. O pino 3 do Arduino é usado para ligar e desligar o transistor e recebe o nome de 'motorPin' no esboço.

Quando o programa é iniciado, ele solicita que você forneça os valores para controlar a velocidade do motor. Você precisa inserir um valor entre 0 e 255 no Monitor Serial.

Na função 'loop', o comando 'Serial.parseInt' é usado para ler o número inserido como texto no Monitor Serial e convertê-lo em um 'int'. Você pode digitar qualquer número aqui. A instrução 'if' na próxima linha simplesmente faz uma gravação analógica com esse número, se o número estiver entre 0 e 255.

Resultado

O motor DC girará com velocidades diferentes de acordo com o valor (0 a 250) recebido pela porta serial.

Controle de direção de giro

Para controlar a direção do giro do motor DC, sem trocar os fios, você pode usar um circuito chamado de H-Bridge. Uma ponte H é um circuito eletrônico que pode acionar o motor em ambas as direções. As pontes H são usadas em muitas aplicações diferentes. Uma das aplicações mais comuns é o controle de motores em robôs. É chamada de ponte H porque usa quatro transistores conectados de forma que o diagrama esquemático se parece com um "H".

Estaremos usando o IC L298 H-Bridge aqui. O L298 pode controlar a velocidade e a direção de motores CC e motores de passo e pode controlar dois motores simultaneamente. Sua classificação atual é 2A para cada motor. Nessas correntes, porém, você precisará usar dissipadores de calor.

Componentes necessários

Você precisará dos seguintes componentes -

  • 1 × IC da ponte L298
  • 1 × motor DC
  • 1 × Arduino UNO
  • 1 × breadboard
  • 10 × fios de jumper

Procedimento

A seguir está o diagrama esquemático da interface do motor DC para a placa Arduino Uno.

O diagrama acima mostra como conectar o L298 IC para controlar dois motores. Existem três pinos de entrada para cada motor, Input1 (IN1), Input2 (IN2) e Enable1 (EN1) para Motor1 e Input3, Input4 e Enable2 para Motor2.

Como controlaremos apenas um motor neste exemplo, conectaremos o Arduino a IN1 (pino 5), IN2 (pino 7) e Enable1 (pino 6) do IC L298. Os pinos 5 e 7 são digitais, ou seja, entradas ON ou OFF, enquanto o pino 6 precisa de um sinal modulado por largura de pulso (PWM) para controlar a velocidade do motor.

A tabela a seguir mostra em qual direção o motor girará com base nos valores digitais de IN1 e IN2.

EM 1 EM 2 Comportamento Motor
FREIO
1 FRENTE
1 PARA TRÁS
1 1 FREIO

O pino IN1 do IC L298 é conectado ao pino 8 do Arduino enquanto IN2 está conectado ao pino 9. Esses dois pinos digitais do Arduino controlam a direção do motor. O pino EN A do IC é conectado ao pino 2 do PWM do Arduino. Isso controlará a velocidade do motor.

Para definir os valores dos pinos 8 e 9 do Arduino, usamos a função digitalWrite (), e para definir o valor do pino 2, temos que usar a função analogWrite ().

Etapas de conexão

  • Conecte 5V e o aterramento do IC a 5V e o aterramento do Arduino, respectivamente.
  • Conecte o motor aos pinos 2 e 3 do IC.
  • Conecte IN1 do IC ao pino 8 do Arduino.
  • Conecte IN2 do IC ao pino 9 do Arduino.
  • Conecte EN1 do IC ao pino 2 do Arduino.
  • Conecte o pino SENS A do IC ao aterramento.
  • Conecte o Arduino usando o cabo USB do Arduino e carregue o programa para o Arduino usando o software Arduino IDE.
  • Fornece energia para a placa Arduino usando fonte de alimentação, bateria ou cabo USB.

Código Arduino

const int pwm = 2 ; //initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor

void setup() {
   pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
   pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
   pinMode(in_2,OUTPUT) ;
}

void loop() {
   //For Clock wise motion , in_1 = High , in_2 = Low
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,LOW) ;
   analogWrite(pwm,255) ;
   /* setting pwm of the motor to 255 we can change the speed of rotation
   by changing pwm input but we are only using arduino so we are using highest
   value to driver the motor */
   //Clockwise for 3 secs
   delay(3000) ;
   //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
   //For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
   digitalWrite(in_1,LOW) ;
   digitalWrite(in_2,HIGH) ;
   delay(3000) ;
   //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
}

Resultado

O motor funcionará primeiro no sentido horário (CW) por 3 segundos e, em seguida, no sentido anti-horário (CCW) por 3 segundos.