Controle de Motores com Arduino

Controlando Motores DC e Servo Motores com Arduino

O Arduino é uma plataforma de prototipagem eletrônica muito popular entre os entusiastas de robótica e automação. Ele permite controlar vários tipos de componentes eletrônicos, incluindo motores DC e servo motores. Neste artigo, mostraremos como controlar esses tipos de motores com o Arduino, fornecendo exemplos simples para ajudar os alunos iniciantes e leigos a compreender o processo.

Começaremos com motores DC. Um motor DC (corrente contínua) é um tipo de motor que funciona com uma corrente elétrica contínua. Eles são comumente usados em projetos de robótica e automação devido à sua simplicidade e facilidade de controle. Para controlar um motor DC com o Arduino, é necessário usar um driver de motor, como o L298N. Ele permite controlar a velocidade e direção do motor.

Biblioteca utilizada no exemplo:

O código abaixo mostra como controlar um motor DC com o Arduino usando a ponte H L298N:

/*
Author  : Andrea Lombardo
Site    : https://www.lombardoandrea.com
Source  : https://github.com/AndreaLombardo/L298N/

Here you can see how to work in a common configuration without the needed of Enable pin. 

Make sure your module has a jumper in place.

When L298N has a jumper instead of Enable pin, the speed is always 255.

Wiring schema in file "L298N - Schema_without_EN_pin.png"
*/

// Include the library
#include <L298N.h>

// Pin definition
const unsigned int IN1 = 7;
const unsigned int IN2 = 8;

// Create one motor instance
L298N motor(IN1, IN2);

void setup()
{
  // Used to display information
  Serial.begin(9600);

  // Wait for Serial Monitor to be opened
  while (!Serial)
  {
    //do nothing
  }
}

void loop()
{

  // Tell the motor to go forward (may depend by your wiring)
  motor.forward();

  // Alternative method:
  // motor.run(L298N::FORWARD);

  //print the motor status in the serial monitor
  Serial.print("Is moving = ");
  Serial.println(motor.isMoving());

  delay(3000);

  // Stop
  motor.stop();

  // Alternative method:
  // motor.run(L298N::STOP);

  Serial.print("Is moving = ");
  Serial.println(motor.isMoving());

  delay(3000);

  // Tell the motor to go back (may depend by your wiring)
  motor.backward();

  // Alternative method:
  // motor.run(L298N::BACKWARD);

  Serial.print("Is moving = ");
  Serial.println(motor.isMoving());

  delay(3000);

  // Stop
  motor.stop();

  Serial.print("Is moving = ");
  Serial.println(motor.isMoving());

  delay(3000);
}
Fonte: https://github.com/AndreaLombardo/L298N/blob/master/schema/L298N%20-%20Schema_without_EN_pin.png

Agora, vamos aplicar os conceitos já aprendidos na aula de comunicação serial (https://youtu.be/3Xv14Ru-N34) e aprender um conceito novo, o switch case. Veja abaixo um exemplo com uso da mesma biblioteca L298N.h:

#include <L298N.h>

const unsigned int IN1 = 7;
const unsigned int IN2 = 8;

L298N motor(IN1, IN2); //define a ponte H L298N com os pinos de controle

void setup() {
  //inicializa a comunicação serial com o monitor serial
  Serial.begin(9600); 
  Serial.println("Programa iniciado");
}

void loop() {
  if(Serial.available() > 0){
    char comando = Serial.read();
    switch(comando){
      case 'f': //gira para frente
        motor.forward(); 
        Serial.println("Motor gira para frente");
        break;
      case 'b': //gira para trás
        motor.backward();
        Serial.println("Motor gira para trás");
        break;
      case 's': //para o motor
        motor.stop();
        Serial.println("Motor parado");
        break;
      default: //caso não tenha nenhum comando válido
        Serial.println("Comando inválido");
        break;
    }
  }
}

Em seguida, vamos falar sobre servo motores. Um servo motor é um tipo de motor que permite controlar a posição precisa de uma carga. Eles são comumente usados em projetos de robótica para controlar braços robóticos, rodas e outros componentes mecânicos. Para controlar um servo motor com o Arduino, é necessário usar a biblioteca Servo.h. Ela permite controlar a posição do servo através do método write().

O código abaixo mostra como controlar um servo motor conectado ao pino 9 do Arduino. Ele faz com que o servo gire para a posição 0 graus, aguarde 1 segundo, gire para a posição 180 graus e aguarde outro segundo.

#include <Servo.h> //importa a biblioteca Servo

Servo meuServo; //declara o objeto servo

void setup() {
  meuServo.attach(9); //define o pino do servo como 9
}

void loop() {
  meuServo.write(0); //gira para a posição 0 graus
  delay(1000); //aguarda 1 segundo
  meuServo.write(180); //gira para a posição 180 graus
  delay(1000); //aguarda 1 segundo
}

Lembre-se de adicionar a biblioteca Servo antes de carregar o código no Arduino. Para fazer isso, vá em Sketch -> Incluir Biblioteca -> Servo.

É importante lembrar que esses são exemplos simples e que existem muitas outras formas de controlar motores DC e servo motores com o Arduino. É recomendado que os alunos iniciantes experimentem com diferentes códigos e conectores para entender melhor como esses componentes funcionam e como eles podem ser utilizados em seus projetos futuros. Além disso, é importante sempre tomar precauções de segurança ao lidar com componentes elétricos, como desligar a fonte de alimentação antes de fazer qualquer conexão ou manutenção. Ao seguir essas dicas e praticar com os exemplos apresentados, os alunos iniciantes estarão preparados para controlar motores DC e servo motores com o Arduino de forma eficiente e segura.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *