Controlando motores DC com o Arduino Motor Shield L293D

Aquele seu projeto está ficando grande demais e com muitos motores para controlar? Talvez seja a hora de partir para um controlador de motores integrado, como o Arduino Motor Shield L293D:

Arduino Motor Shield L293D

Esse shield é compatível com Arduino Uno e Arduino Mega, possui dois chips L293D, cada um composto por 2 pontes H (um conceito que já abordamos no artigo Controle de motor CC com o L293D – Ponte H), além de um CI 74HC595. Tudo isso para controlar até 4 motores DC, 2 Servos (alimentados por 5v) ou 2 motores de passo. Lembrando que a corrente máxima suportada por cada L293D é de 600 mA, com picos de 1.2A.

Nas laterais da placa temos os terminais (com parafusos) para conexão dos motores DC ou motores de passo. Na parte superior esquerda, conectores de 3 pinos permitem a conexão de até 2 servos. Um led na parte central da placa indica não só o funcionamento do shield como também que há alimentação para os motores:

A tensão de entrada pode variar de 4,5 à 25 Vcc. Para utilização de alimentação externa, não se esqueça de retirar o jumper PWR.

Como a maioria dos shields, você tem à disposição os pinos que sobram quando você não está controlando motores, obviamente, e também alguns pinos que estão sempre disponíveis:

Para utilizar os pinos que sobram, você pode soldar uma barra de pinos ao shield nos furos correspondentes, como fizemos no nosso shield:

Essa é uma visão geral sobre a estrutura desse shield. Para utilizá-lo com o Arduino, precisaremos da biblioteca AFMotor, disponível nesse link.

Quando você descompacta o arquivo, é criada uma pasta chamada adafruit-Adafruit-Motor-Shield-library-4bd21ca. Renomeie essa pasta simplesmente para AFMotor, e coloque-a dentro da pasta LIBRARIES da IDE do seu Arduino.

Se você quiser controlar 2 motores DC de 5 volts, por exemplo, utilize alimentação externa e monte o circuito da seguinte maneira:

O programa abaixo gira cada motor em um sentido diferente, e depois de 5 segundos inverte essa rotação. Os principais comandos utilizados são :

motor.setSpeed(velocidade) – Ajusta a velocidade de rotação do motor, podendo ser um valor entre 0 (mínimo) e 255 (máximo)
motor.run(sentido) – Aciona o motor. A variável sentido pode ter o valor FORWARD (move o motor no sentido horário), BACKWARD (sentido inverso/anti-horário) ou RELEASE, que determina a parada do motor:

// Programa: Arduino Motor Shield - Controle motores DC
// Autor: Arduino e Cia
 
// carrega a biblioteca AFMotor
#include <AFMotor.h>

// Define o motor1 ligado a conexao 1
AF_DCMotor motor1(1); 
// Define o motor2 ligado a conexao 4
AF_DCMotor motor2(4); 
 
void setup()
{
  // Define a velocidade maxima para os motores 1 e 2
  motor1.setSpeed(255); 
  motor2.setSpeed(255); 

}
 
void loop()
{
  // Aciona o motor 1 no sentido horario
  motor1.run(FORWARD); 
  // Aciona o motor 2 no sentido anti-horario
  motor2.run(BACKWARD); 
 
  // Aguarda 5 segundos
  delay(5000);

  // Desliga os 2 motores
  motor1.run(RELEASE); 
  motor2.run(RELEASE); 

  // Aciona o motor 1 no sentido anti-horario
  motor1.run(BACKWARD);
  // Aciona o motor 2 no sentido horario
  motor2.run(FORWARD); 
 
  // Aguarda 5 segundos
  delay(5000);
  
  // Desliga os 2 motores
  motor1.run(RELEASE); 
  motor2.run(RELEASE);
}

Em um próximo artigo, vamos mostrar como controlar um motor de passo utilizando o Arduino Motor Shield L293D. Até lá !

Atualizado: Controlando motores de passo 28BYJ-48 com o Arduino Motor Shield L293D 
Veja também: Controlando servo motor com o Motor Shield L293D

5/5 - (1 voto)

Related posts

Como ligar um motor brushless ao Arduino

by Arduino e Cia
9 anos ago

Como usar o motor shield para ESP8266 NodeMCU

by Arduino e Cia
4 anos ago

Controle de motor DC com módulo MOSFET IRF520N

by Arduino e Cia
4 anos ago
Sair da versão mobile