Aprenda a utilizar a ponte H L293D com Arduino

ponte-H-L293D
Font Size

Olá makers, como andam os projetos?

Hoje iremos mostrar a introdução de uma parte fascinante e muito ampla da eletrônica, a robótica. Um dos principais itens para a robótica são os motores, vamos lá então aprender a utiliza-los.

Nesse post ensinaremos como controlar motores, sentido e velocidade, utilizando o circuito integrado L293D.

Antes de tudo, vale comentar que muitas pessoas acreditam que ligar um motor de corrente contínua ou motor DC é como liga um LED, basta ligar em alguma porta digital do arduino e inserir o outro fio no GND. Porém, essa atitude pode ser extremamente fatal para o arduino, pois diferentemente de um LED, um motor DC consome uma corrente bastante elevada, que os pinos do arduino não são capazes de suportar, conectar o motor diretamente em uma das portas pode acabar ocasionando a queima da mesma, por isso vamos evitar isso, ok?

Para controlar motores com o arduino são é utilizado um sistema similar ao de várias chaves ligadas nos terminais do motor, através dessas que passam a corrente alta e o arduino só atua abrindo e fechando essas chaves, esse sistema se chama Ponte H, olhe como ele funciona na imagem abaixo:

Figura 01: Estrutura Ponte H
Fonte:  Blog Engenheiro Caiçara

 

Legal né? Mas por que quatro chaves? uma só não seria suficiente? Ai é que entra a chave secreta da ponte H, com essas quatro chaves é possível controlar o sentido de rotação do motor e até mesmo a velocidade.
Entenda como ela funciona com essa animação:

 

circuito integrado L293D é tão impressionante que consegue fazer o trabalho de duas Pontes H ao mesmo tempo, isso mesmo, controlar dois motores motores dc.
Figura 02: Pinos do ci l293d
Olhe como são definidos os pinos do L293D, os pinos que utilizaremos nesse tutorial estão em vermelho, já os em preto serão utilizados em um desafio que proporemos a você no final deste tutorial.

Agora que já sabemos o que é uma Ponte H vamos lá ao projeto.

Material Utilizado:

Esquema de Montagem do Circuito:

 

Figura 03: Esquema de ligação

Fonte: Saulo Alexandre

Código Comentado: 

//Programa: Controle de motor DC com L293D
//Autor: Saulo Alexandre 


int PinoVelocidade = 3; //Pino que define a velocidade do motor e está ligado ao pino 1 do L293D e a Digital 3 do Arduino 
int Entrada1 = 2; //Entrada do terminal do motor ligado ao pino 2 do L293D e a Digital 2 do Arduino 
int Entrada2 = 7; //Entrada do terminal do motor ligado ao pino 7 do L293D e a Digital 7 do Arduino 

void setup( ) 
{ 
    //Iniciando o Serial do arduino 
    Serial.begin(9600); 
    Serial.println("Vamos la controlar o motor:"); 
    Serial.println("Digite 1 para ir para frente"); 
    Serial.println("Digite 2 para ir para tras"); 
    Serial.println("Digite 0 para parar"); 
    //Define os pinos como saida 
    pinMode(PinoVelocidade, OUTPUT); 
    pinMode(Entrada1, OUTPUT); 
    pinMode(Entrada2, OUTPUT); 

} 

void loop( ) 
{ 

    //Define a velocidade de rotacao 
    int velocidade = 500; 
    analogWrite(PinoVelocidade, velocidade); 
    //Verificando se algum valor foi inserido no Serial 
    if(Serial.available() > 0) { 
        //Convertendo esse valor para Inteiro e atribuindo a variável val 
        val = Serial.parseInt(); 
        //definindo o movimento do motor de acordo com o valor digitado 
        if (val == 1) { 
            digitalWrite(Entrada1, HIGH); 
            digitalWrite(Entrada2, LOW); 
            Serial.println("Girando para Frente"); 
        } else if (val == 2) { 
            digitalWrite(Entrada1, LOW); 
            digitalWrite(Entrada2, HIGH); 
            Serial.println("Girando para Tras"); 
        } else if (val == 0) { 
            digitalWrite(Entrada1, LOW); 
            digitalWrite(Entrada2, LOW); 
            Serial.println("Parado"); 
        } else { 
            Serial.println("Opcao Invalida"); 
            Serial.println("Digite 0, 1 ou 2"); 
        }     

        //dando um intervalo para evitar mudança de estado brusca
        delay (100);
    } 
}

Resultado : 

Observações: Não utilizei o motor que descrevi no projeto, utilizei um carrinho de controle remoto modificado, isso tudo para vocês verem o que podemos fazer controlando um motor
Se o seu motor girou para trás quando você mandou ele girar para frente, não se preocupe, basta apenas inverter as conexões do motor com o circuito integrado.

Comentários adicionais:

Espero que tenham gostado desse tutorial ;D
Este é só um início para a robótica, então, achou fácil? Se achou, temos um desafio, queremos ver se você consegue fazer o arduino controlar dois motores ao mesmo tempo, isso tudo com a mesma ponte H, e ambos individualmente, ou seja, um pode estar rodando enquanto o outro está parado.
Comentem as suas dúvidas, sugestões e críticas nos comentários, será um prazer para nós falar com você!

 

Saulo Alexandre
Estudante de Ciência da Computação pela Universidade Federal de Pernambuco, técnico em eletrônica pelo Instituto Federal de Ciência e Tecnologia de Pernambuco e apaixonado  desde criança por eletrônica programação e uma boa música. Adoro projetos de cunho social e que da alguma forma possam ajudar alguém, e sou adepto de que “A melhor maneira de prever o futuro é inventá-lo.”

Posts relacionados

Aprenda a utilizar o módulo RTC17 DS1307

por autocore
7 anos ago

3 ferramentas úteis para desenvolvimento de PCB

por autocore
8 anos ago

Como utilizar Display Nokia 5110 com Arduino?

por Danilo Nogueira
5 anos ago
Sair da versão mobile