Você está na página 1de 10

Motor Shield Arduino L293D é um produto bastante utilizado nos mais diversificados projetos

uma vez que possibilita o controle de até quatro Motores DC ou dois Motores de Passo
simultaneamente e possuir saída para controle de até dois Servos Motores com funcionamento
também simultâneo.

Motor Shield Arduino L293D – Driver Ponte H para Projetos


Além de possuir uma capacidade bastante elevada de funcionamento, o shield também
necessita de uma alimentação maior que a cedida pelo próprio Arduino para seu
funcionamento, tendo isto em vista o Motor Shield L293D possui pinos para alimentação
externa que facilitam a instalação e funcionamento de motores.

Por ser desenvolvido no formato de Shield, o Driver Ponte H em questão possui um encaixe
perfeito com o Arduino e elimina a necessidade de Jumpers comumente utilizados nos
diversificados Módulos, seu contato direto elimina problemas de mau contato e garante maior
qualidade na comunicação entre Shield e Arduino.

L293D – Drive Ponte H


O Circuito Integrado L293D é um CI fácil de se encontrar e que possui grande eficiência
quando o assunto é o controle de motores, através de seus dois circuitos denominados Ponte
H, este possibilita o controle de dois motores simultaneamente através de um sinal externo
gerado por um microcontrolador como o Arduino.

Fundamentalmente, a Ponte H é constituída de quatro chaves de contato e uma fonte de


alimentação, cada uma destas consegue controlar um Motor DC e seu sentido de rotação, veja
abaixo um esquema de funcionamento deste procedimento:

Esquema de Funcionamento da Ponte H


Tomando a imagem acima como base, podemos determinar através dela o sentido de giro de
um Motor DC através do acionamento de suas chaves, por exemplo, ao acionarmos as chaves
C1 e C4 a corrente irá fluir em um sentido e ao acionarmos as chaves C2 e C4 este sentido de
giro será invertido, de maneira ilustrativa, observamos abaixo estes dois procedimentos:

Funcionamento do sentido de inversão da corrente na Ponte H


Por se tratar de um CI, existem bastantes mistificações quanto a sua utilização, porém esta é
bastante simplificada, a conexão dos motores e pinos de comunicação do microcontrolador
normalmente são desenvolvidas através de uma protoboard, porém vale observar sempre a
alimentação que envolve o funcionamento deste circuito.

Ao observarmos o datasheet do L293D encontramos diversas informações relevantes quanto


ao seu funcionamento, dentre elas os seus limites de alimentação, a corrente de saída
suportada pelo circuito, por exemplo, é de 600mA por canal com correntes de pico de até 1,2A
enquanto que a tensão suportada pelo mesmo é de 4,5 à 36V aproximadamente.

Outra informação bastante importante que encontramos no datasheet diz respeito aos pinos do
circuito integrada e as suas devidas funções, através da imagem abaixo podemos verificar os
pinos de sinal e alimentação, vale lembrar que ao desenvolver um projeto, todos os pinos de
alimentação devem estar devidamente conectados.

Esquema de Ligação do Circuito Integrado L293D


Além dos pinos de alimentação, temos os pinos Enable 1 e 2 que fornecem a velocidade dos
motores e estão associados ao Arduino, os pinos Output 1, 2, 3 e 4 utilizados para a conexão
dos motores e os pinos Input 1, 2, 3 e 4 utilizados para realizar o controle do sentido de rotação
dos motores através de um microcontrolador como o Arduino.

Motor Shield Arduino L293D


Através de um componente como o L293D consegue-se controlar até dois motores DC, porém
como o Motor Shield Arduino possui dois destes circuitos, o mesmo expande a sua capacidade
de funcionamento e consegue controlar até quatro motores DC simultaneamente.

Circuitos Integrados que Constituem o Motor Shield Arduino


Na imagem acima, pode-se observar que além de dois L293D, o Motor Shield constitui-se
também de um CI 74HC595, um registrador de deslocamento que possibilita uma saída
paralela de 8 bits através de uma entrada digital, entrada esta que constituísse de três pinos,
clock, latch e data.

A alimentação do Motor Shield Arduino obedece os limites de tensão estabelecidos pelo Driver
L293D e por mais que seja um shield com contato direto no Arduino, a alimentação do Arduino
normalmente não é suficiente para o funcionamento dos motores, por isto é necessária uma
alimentação externa.

Através do esquema exibido abaixo, podemos observar o borne para para alimentação externa
e como dito, este possui limite de alimentação de 4,5 a 36V, ao lado tem-se o jumper de
seleção para fonte de alimentação, quando este tiver no local indicado a alimentação utilizada
para os motores é o do próprio Arduino, porém ao inserirmos uma fonte externa é fundamental
a retirada deste jumper.

Sistema de alimentação externa e principais componentes

O Motor Shield Arduino também é constituído de um LED Power de


indicação que aponta a funcionalidade do Shield, um botão reset
interligado diretamente com o botão reset do Arduino e uma barra de
resistores Pull Down que mantem os motores desligados durante a sua
inicialização.

Quanto a conexão dos motores, por trabalharmos com um shield que


comumente utiliza sua biblioteca para projetos, esta exige a conexão dos
motores em locais específicos, cada local corresponde a uma posição, os
Motores DC M1, M2, M3 e M4, o motor de passo 1 utilizando os bornes de
M1 e M2, o motor de passo 2 os bornes de M3 e M4 e os servos motores,
seus locais específicos que possibilitam a conexão direta de seus fios, veja
abaixo um esquema com estas posições:
Esquema com os locais de fixação para os motores DC, de passo e Servo Motores
O Motor Shield Arduino L293D é um dispositivo que vai diretamente conectado ao Arduino e
possibilita a utilização direta de seus pinos, desta maneira cada modelo possui uma
capacidade diferenciada para a inclusão de elementos externos. De uma forma resumida, os
pinos utilizados estão associados da seguinte maneira:

– Controle dos Motores DC e Motores de Passo: D3, D4, D5, D6, D7, D8, D11 e D12.

– Controle dos Servos Motores: D9 e D10.

Ao utilizar todos estes pinos mencionados acima para o controle dos motores, o Arduino UNO
disponibiliza apenas os pinos D2 e D13 (Digital 2 e Digital 13) para inclusão de sensores e
elementos de comunicação digital, quanto aos pinos analógicos, estes ficam disponíveis do A0
ao A5 e podem ser utilizados para incluir diversos equipamentos de comunicaçãoI2C, inclusive
displays, por exemplo.

Produtos Utilizados no Teste


– Arduino Uno R3 + Cabo USB;
– Motor Shield Arduino L293D Driver Ponte H;
– Motor DC 3-6V com Caixa de Redução e Eixo Duplo;
– Motor de Passo 12V 1,5Kgf.cm 39HBD26DJ4;
– Servo Motor MG995 Tower Pro 180° 11kgf/cm;
– Fonte de Alimentação Chaveada 5VDC 1A;
– Fonte de Alimentação Chaveada 12VDC 1A.
 

Esquema de Ligação Motor Shield com Motor DC


Com a capacidade de utilizar até 4 motores DC, o Motor Shield L293D possui a capacidade de
controle individual para cada um destes dispositivos, porém também possibilita a utilização
controlada de cada um dos seus Bornes de Instalação, ou seja, podemos controlar apenas um
ou dois motores sem problema algum.
Motor Shield L293D com 4 Motores DC
Acima vemos o esquema de ligação possível utilizando-se os 4 motores DC conectados ao
Motor Shield Arduino, porém vale ressaltar que nestes casos a corrente máxima por porta deve
ser de 600mA, utilizarmos as quatro portas teremos um total de 2,4A e a fonte de alimentação
utilizada através dos Bornes deve suprir esta necessidade para o total desempenho dos
motores.

Para o nosso teste, vamos utilizar apenas um motor sendo controlado pelo shield, para isto,
vamos utilizar uma fonte externa de 5V 1A e o Motor DC na posição M4, veja no esquema de
ligação abaixo:

Esquema de Ligação para Controle de Motor DC


Para realizar o controle de outros motores basta instalá-los em um dos outros bornes, vale
lembrar que os motores não possuem uma polaridade específica e por isto não possuem uma
pinagem correta para instalação, porém dependendo do modo de instalação o sentido de
direção poderá ser diferenciado.

Código de Funcionamento Motor Shield com Motor DC


O código de funcionamento, através da utilização da biblioteca específica torna-se bastante
simples e dinâmico, uma vez que possibilite atalhos de comandos e dispensa uma
configuração direta de pinos já que estes contam internamente na biblioteca.

Biblioteca AFMotor: DOWNLOAD AQUI.


1 #include <AFMotor.h>    // Inclui a Biblioteca AFMotor.h
2  
3 AF_DCMotor motor(4);    // Define M4 como posição de controle para motor
4  
5 void setup() {
6 motor.setSpeed(200);    // Define velocidade inicial do motor
7 motor.run(RELEASE);     // Define a função Stop
8 }
9  
10 void loop() {
11 uint8_t i;
12 motor.run(FORWARD);           // Liga o Motor
13  
14 for (i=0; i<255; i++)   {     // Acelera de 0 até a velocidade máxima
15 motor.setSpeed(i);
16 delay(10);
17 }
18  
19 for (i=255; i!=0; i--)   {    // Diminui da velocidade máxima até 0
20 motor.setSpeed(i);
21 delay(10);
22 }
23  
24 motor.run(BACKWARD);          // Inverte a direção do motor
25  
26 for (i=0; i<255; i++)   {     // Acelera de 0 até a velocidade máxima
27 motor.setSpeed(i);
28 delay(10);
29 }
30  
31 for (i=255; i!=0; i--)   {    // Diminui da velocidade máxima até 0
32 motor.setSpeed(i);
33 delay(10);
34 }
35  
36 motor.run(RELEASE);           // Desliga o Motor
37 delay(1000);
38 }
O código está totalmente comentado e não possui grandes segredos, para realizar a alteração
do local de instalação do Motor, deve-se alterar a função abaixo de acordo com o apresentado:

1 AF_DCMotor motor(1);    // Define M1 como posição de controle para motor


2 AF_DCMotor motor(2);    // Define M2 como posição de controle para motor
3 AF_DCMotor motor(3);    // Define M3 como posição de controle para motor
4 AF_DCMotor motor(4);    // Define M4 como posição de controle para motor
Com este código base consegue-se realizar a maioria dos procedimentos possíveis no controle
de Motores DC através do Motor Shield, seus comandos são simples e de fácil adaptação,
porém vale lembrar que para incluir mais um motor, fundamentalmente todos estes comandos
devem ser duplicados de acordo com o projeto.

Esquema de Ligação Shield L293D com Motor de Passo


Além de possuir a capacidade de controlar até quatro motores DC, o Motor Shield também
consegue controla até dois Motores de Passo com correntes de funcionamento de até 600mA,
porém vale ressaltar que o motor de passo utiliza o local de dois motores DC para o seu
funcionamento, veja na imagem abaixo a posição de instalação para cada um dos motores de
passo 39HBD26DJ4:
Motor Shield Arduino no Controle de dois Motores de Passo
Para este projeto, já que o Motor de Passo possui uma tensão de funcionamento de 12V, é
necessário incluirmos uma fonte de alimentação de 12V 1A, corrente necessária para o
controle de até dois destes Motores de Passo 12V 39HBD26DJ4 que possuem uma corrente
máxima de funcionamento de 480mA.

Tendo em vista a diversidade dos motores de passo e a suas diferentes especificações, muitas
vezes o que dificulta a sua utilização diz respeito a identificação dos fios correspondentes às
bobinas, se você também possui esta dúvida, assista o vídeo abaixo de nosso parceiro e
verifique como desenvolver tal verificação:

Após termos realizado o teste e identificado os pinos, conectamos o motor aos terminais M3 e
M4 do Shield para realizarmos o controle de sua direção e velocidade, o diagrama
correspondente ao código disponibilizado logo abaixo e utiliza o Motor de Passo 39HBD26DJ4
como base:

Projeto Controle de Motor de Passo via Motor Shield L293D


Vale ressaltar aqui, que alguns modelos como este são comercializados com barramentos de 5
ou 6 fios, porém ao realizarmos a medição com um multímetro verificamos que apenas 4
destes são realmente conectados à bobinas, onde um par de bobinas iria conectado no M3 e
outro no M4, por exemplo.

Código de Funcionamento Shield L293D com Motor de Passo


A grande maioria dos códigos de funcionamento do Motor Shield L293D possuem suas funções
atribuídas à Biblioteca AFMotor uma vez que esta possibilita funções práticas e
diretas para a utilização de motores, é o caso do código abaixo o qual nos
possibilita em poucas linhas realizar o teste de funcionamento de um Motor
DC.
Biblioteca AFMotor: DOWNLOAD AQUI.
1 #include <AFMotor.h>                      // Inclui a Biblioteca AFMotor.h
2  
3 const int stepsPerRevolution = 48;        // Número de etapas por volta
4  
5 AF_Stepper motor(stepsPerRevolution, 2);  // Define M3 e M4 como local de instalação
6  
7 void setup() {
8 motor.setSpeed(100);                    // Define a velocidade do Motor
9 }
10  
11 void loop() {
12 motor.step(648, FORWARD, SINGLE);       // Movimenta o Motor para uma Direção
13 motor.step(648, BACKWARD, SINGLE);      // Inverte a direção do Motor
14  
15 motor.step(648, FORWARD, MICROSTEP);    // Movimenta o Motor em uma Direção
16 motor.step(648, BACKWARD, MICROSTEP);   // Inverte a direção do Motor
17 }
Neste código, algumas das variáveis possuem algumas funções mais complexas e que geram
algumas dúvidas, na tradução literal FORWARD significa “para frente” e BACKFORWARD
“para trás”, porém estes podem variar de acordo com a instalação das bobinas e o método de
conexão dos fios.

1 motor.step(648, FORWARD, MICROSTEP);   // Movimenta o Motor em uma Direção


Na linha acima temos a função responsável por realizar um dos procedimentos de
movimentação do motor, o valor 648 define quantas etapas o motor irá executar, FORWARD
define a direção deste movimento e por fim o tipo de movimento, por exemplo:

– SINGLE: As bobinas são energizadas de maneira individual e possuem um torque razoável.

– MICROSTEP: As bobinas adjacentes sofrem um movimento o qual cria um número de “micro


etapas”, isso resulta em uma resolução mais fina e suave, porém faz com que o motor perda
parte do seu torque.

Esquema de Ligação Motor Shield com Servo Motor


Dentre os objetos de controle do Motor Shield, o Servo Motor a depender da sua utilização e
modelo é o único que exerce suas funções básicas sem problema e apenas com a alimentação
do próprio Arduino, porém ao utilizamos Servos Motores metálicos como os selecionados para
este projeto, é recomendada a inclusão de uma fonte externa, podendo ser a mesma 5V 1A
utilizada para o controle dos motores DC.

Assim como na utilização do Motor de Passo, o Shield L293D controla também duas unidades
do Servo Motor, porém estes possuem um local específico de instalação que possibilita a
conexão direta de seus cabos em uma barra de pinos especial. Abaixo vemos o esquema de
ligação para controle de um Servo Motor:
Esquema de ligação Projeto Motor Shield Controle de Servo Motor
Como vemos, o primeiro pino da esquerda pela direita é o pino GND e após temos o pino de
alimentação e o pino de comunicação, seguindo sempre o mesmo padrão dos servos motores
comercializados.

Código de Funcionamento com Servo Motor


O pino de sinal do Servo Motor é conectado diretamente no pino PWM do Arduino, ou seja,
diferente do Motor DC e do Motor de Passo, este não passa pelo 74HC595 e não necessita da
biblioteca AFMotor, apenas a biblioteca Servo que já vem instalada junto do Arduino.

O controle de Servo Motor pode ser executado utilizando códigos padrões como o que já
desenvolvemos anteriormente em nosso seguinte artigo e que novamente utilizaremos para
demonstrar o funcionamento do nosso Motor Shield L293D:

https://www.usinainfo.com.br/blog/controle-de-posicao-servo-motor-com-
arduino/
1 #include "Servo.h" // Inclui a Biblioteca Servo.h
2  
3 Servo meuservo; // Cria o objeto servo para programação
4 int angulo = 0; // Ajusta o ângulo inicial do Servo
5  
6 void setup() {
7 meuservo.attach(10); // Declara o pino do servo
8 }
9  
10 void loop() {
11  
12 for (angulo = 0; angulo < 180; angulo += 1) { // Comando que muda a posição do servo de 0 para 180°
13 meuservo.write(angulo); // Comando para angulo específico
14 delay(15);
15 }
16  
17 delay(2000); // Tempo de espera para próximo movimento
18  
19 for (angulo = 180; angulo >= 1; angulo -= 5) { // Comando que muda a posição do servo de 180 para 0°
20 meuservo.write(angulo); // Comando para angulo específico
21 delay(5);
22 }
23  
24 delay(2000); // Tempo de espera para próximo movimento
25 }
Com todas as funções já comentadas, este código demonstra algumas funções padrões do
software Arduino quando trabalhamos com o Servo, o que facilita ainda mais a sua utilização é
a sequencia de pinos específico necessários para o funcionamento do mesmo.

CONCLUSÃO
O funcionamento do Motor Shield Arduino é baseado quase que exclusivamente na biblioteca
AFMotor.h, porém vale ressaltar que os projetos podem ser executados sem esta, porém é
necessário um conhecimento mais aprofundado de programação para este procedimento.

A linha de projetos possíveis de se desenvolver com este Shield é extremamente grande, o


mesmo pode ser atribuído a projetos de carros tanto 2WD quanto 4WD, pode ser atribuído a
projetos com necessidade de precisão de movimento através de motores de passo e até
mesmo os mais diversificados projetos com Servo Motor 180 ou 360º.

Se você já usou este Shield, tem algum uma experiência com ele e deseja compartilhar com os
demais, não esqueça de deixar o seu comentário logo abaixo, além da utilização de cada um
dos tipos de motores, é possível intercalar o seu funcionamento, sendo ideal para o
desenvolvimento de um Carro Robô 4WD com Micro Servo Motor e Eixo Móvel.

Você também pode gostar