Em primeiro lugar, vale ressaltar que o Motor Shield L293D para Arduino facilita muito o controle simultâneo de motores. Isso significa que, essa placa permite o controle de 4 Motores DC ou 2 motores de passo e 2 servo motores ao mesmo tempo. Mas como isso funciona? Vamos entender melhor em seguida.
Antes de tudo, confira o método ARDUHACK! Aprenda Arduino da melhor forma!
A placa possui como principais componentes: dois CI’s (circuitos integrados) L293D e um 74HC595 (registrador de deslocamento). O CI L293D funciona como uma ponte H, ou seja, um circuito composto por 4 chaves cuja função é inverter o giro do motor. Cada CI desses pode controlar 2 motores (possui duas pontes H), portanto, com a Motor Shield é possível controlar até 4 motores DC ou 2 motores de passo.

Sendo assim, vamos ver na imagem abaixo como funciona uma Ponte H. Quando as chaves S1 e S4 estão fechadas, e as outras duas abertas, o motor girará em um sentido. Caso contrário, com as chaves S1 e S4 abertas, e S2 e S3 fechadas, o motor inverterá seu giro.

Conheça o Driver – Motor Shield L293D
Antes de continuarmos, é importante saber as especificações do Driver Motor Shield. Dessa forma, você deve alimentá-lo com uma fonte externa de 4,5 a 36V. Nesse caso, retire o jumper destacado na imagem abaixo. Esse jumper tem a função de selecionar o tipo de alimentação, se você usar somente a fonte do Arduino, deixe o jumper, caso utilize uma fonte de alimentação externa, retire o jumper.

Sendo assim, vamos ver como funciona o controle de rotação. Lembre-se que é possível controlar motores de até 36V. Para esse exemplo, vamos usar um motor DC 5V. Acompanhe o diagrama abaixo:

Além dessa shield, existem vários outras placas e sensores que podem ser usados com Arduino, como por exemplo, o leitor RFID.
Código – Motor Shield
Em seguida, vamos começar a programar. Baixe a biblioteca AFMotor para o controle da Shield, clique AQUI para baixá-la. Após isso descompacte a pasta, copie e cole em “libraries” do Arduino:
- Documentos
- Arduino
- Libraries
Agora, já temos tudo que precisamos! Carregue o código abaixo para a placa do Arduino. Veja que é possível alterar o número de motores e ainda incluir dois servos. Como utilizaremos somente um motor, o código ficará assim:
//Modifique o código conforme o número de motores que você vai usar
//Salve a biblioteca AFMotor na pasta "libraries" do Arduino
//Inclui a biblioteca AFMotor
#include <AFMotor.h>
//AF_DCMotor motor1(1); // Motor conectado à M1
AF_DCMotor motor2(2); // Motor conectado à M2
//AF_DCMotor motor3(3); // Motor conectado à M3
//AF_DCMotor motor4(4); // Motor conectado à M4
void setup()
{
//Define a velocidade máxima para os motores
//motor1.setSpeed(255);
motor2.setSpeed(255);
//motor3.setSpeed(255);
//motor4.setSpeed(255);
}
void loop()
{
//Aciona os motores no sentido horário
//motor1.run(FORWARD);
motor2.run(FORWARD);
//motor3.run(FORWARD);
//motor4.run(FORWARD);
delay(5000); // Aguarda 5 segundos
//Desliga os Motores
//motor1.run(RELEASE);
motor2.run(RELEASE);
//motor3.run(RELEASE);
//motor4.run(RELEASE);
//Aciona os motores no sentido anti-horário
//motor1.run(BACKWARD);
motor2.run(BACKWARD);
//motor3.run(BACKWARD);
//motor4.run(BACKWARD);
// Aguarda 3 segundos
delay(3000);
// Desliga os motores
//motor1.run(RELEASE);
motor2.run(RELEASE);
//motor3.run(RELEASE);
//motor4.run(RELEASE);
}
Desta forma, algumas funções que podemos destacar são o “motor.seetSpeed(255)”, faz com que a o motor trabalhe em velocidade máxima. Para variar a velocidade, você pode alterar este valor de 0 até 255. Por outro lado, caso queira aumentar ou diminuir a velocidade gradativamente, é possível usa a estrutura “for”, da seguinte maneira:
for (i=0; i<255; i++) { //0 até velocidade máxima
motor.setSpeed(i);
delay(10);
}
for (i=255; i!=0; i--) { //Velocidade máxima até 0
motor.setSpeed(i);
delay(10);
}
Além disso, tem-se também os comandos BACKWARD e RELEASE, ou seja, “para frente” e “para trás”, invertendo o sentido de giro.
Por fim, agora que você já conhece o versátil Motor Shield L293d para Arduino, não deixe de conferir o treinamento completo de Arduino!
Veja mais em nossas redes sociais
Instagram: @lobodarobotica
Facebook: /lobodarobotica
YouTube: /lobodarobotica