quarta-feira, 6 de abril de 2016

Módulo Ponte H

O que é uma Ponte H?

Na maioria das abordagens em robótica faz-se necessária a utilização de motores DC em diversos tipos de locomoção de robôs, movimentação de braços mecânicos, etc. Os motores DC (direct current ou corrente continua) são cargas indutivas que, em geral, demandam uma quantidade de corrente superior à que as portas do Arduino conseguem fornecer.
Exemplo de motor DC


Sendo assim, não devemos ligar estes motores diretamente nas portas do Arduino pois se o motor demandar uma corrente acima de 40mA nas portas digitais (máxima fornecida pelo Arduino) pode queimar a porta e danificar a placa.

Para solucionar a questão da alta corrente poderíamos usar transistores, porém é importante que seja possível controlar o sentido de giro do motor, função que não se faz possível usando apenas um transistor já que para inverter o sentido de giro devemos inverter a polaridade da alimentação do motor (onde era positivo se põe negativo e vice-versa). Um transistor só seria suficiente para ligar e desligar o motor.

Para resolver nosso problema utilizamos um famoso circuito conhecido como Ponte H que nada mais é que um arranjo de 4 transistores. Este circuito é uma elegante solução por ser capaz de acionar simultaneamente dois motores controlando não apenas seus sentidos, como também suas velocidades. Além de seu uso ser simples no Arduino.

Mas como funciona a Ponte H? Porque este nome?

As pontes H em possuem este nome devido ao formato que é montado o circuito, semelhante a letra H. O circuito utiliza quarto chaves (S1, S2, S3 e S4) que são acionadas de forma alternada, ou seja, (S1-S3) ou (S2-S4), veja as figuras abaixo. Dependendo da configuração entre as chaves teremos a corrente percorrendo o motor hora por um sentido, hora por outro.

Circuito Ponte H


Quando nenhum par de chaves está acionado, o motor está desligado (a). Quando o par S1-S3 é acionado a corrente percorre S1-S3 fazendo com que o motor gire em um sentido (b). Já quando o par S2-S4 é acionado a corrente percorre por outro caminho fazendo com que o motor gire no sentido contrário (c).

Modulo de Ponte H


Esses módulos são muito utilizados em aplicações de robótica. Eles possuem dimensões pequenas e já possuem o circuito básico para o uso do CI, o que facilita na acomodação do módulo no robô ou em outros projetos e a sua utilização.
Existem várias opções disponíveis no mercado, com tamanhos e especificações diferentes. Algumas especificações são importantes ao escolher seu módulo, são elas:
  • Especificação de potência máxima fornecida;
  • Tensão máxima suportada;
  • Corrente máxima suportada;
  • Tensão lógica.

 


Módulo Ponte H com CL L298N


Agora que já sabemos como a Ponte H funciona, vamos entender  na prática como podemos usá-las em conjunto com o Arduino. Para isso iremos usar o módulo com CI L298N.

Entradas e Saídas

Para começa vamos entender função de cada pino bem como deve ser utilizado.

Entradas e saídas do módulo

  • Motor A e Motor B: Conectores para os dois motores
  • 6-35V: Porta para alimentação da placa com tensão entre 6 a 35V.
  • Ativa 5V: Quando jumpeado, a placa utilizará o regulador de tensão integrado para fornecer 5v (na porta 5v) quando a porta 6-35V estiver sendo alimentada por uma tensão entre 6 e 35V. Neste caso, não se deve alimentar a porta 5V pois pode danificar os componentes. A tensão fornecida na porta 5V pode ser usada para alimentar o Arduino, por exemplo.
  • 5v: Em casos de não haver fonte de alimentação com mais de 6V podemos alimentar a placa com 5V por esta porta.
  • Ativa MA: Quando jumpeado aciona o motor A com velocidade máxima. Para controlar a velocidade do motor A basta remover o jumper e alimentar o pino com uma tensão entre 0 e 5v, onde 0V é a velocidade mínima (parado) e 5V a velocidade máxima.
  • Ativa MB: Quando jumpeado aciona o motor B com velocidade máxima. Para controlar a velocidade do motor B basta remover o jumper e alimentar o pino com uma tensão entre 0 e 5v, onde 0V é a velocidade mínima (parado) e 5V a velocidade máxima.
  • IN1 e IN2:são utilizados para controlar o sentido do motor A;
  • IN3 e IN4: são utilizados para controlar o sentido do motor B;
Veja que agora, no lugar das chaves S1-S3 e S2-S4 temos os pinos IN1 e IN2. Onde IN1 corresponde às chaves S1-S3 e a IN2 às chaves S3-S4.
Para controlar o sentido, temos as seguintes combinações para o motor A(IN1 e IN2)
Tabela de combinações

Para o motor B (IN3 e IN4), a tabela funciona da mesma forma.
Ponte H com Arduino – Exemplo de Código Básico
Vamos fazer um exemplo para testar na pratica a ponte h. Neste primeiro exercício queremos testar o controle do sentido de giro dos motores A e B através do Arduino.
Para este exemplo, utilizaremos:
  • Arduino UNO
  • Ponte H
  • 2 Motores DC 12V (pode ser feito com apenas 1)
  • Fonte alimentação de 12V
Prossiga com a montagem conforme esquema abaixo (caso você use apenas um motor, basta desconsiderar o motor B:
Garanta que seu Arduino e a fonte externa estejam desligados durante a montagem.


Esquema de montagem do exemplo

Agora vamos à implementação do programa. Dessa forma, dentro da IDE Arduino: escreva o seguinte código e ao final clique em Upload para que o programa seja transferido para seu Arduino.

/*Pinagem do arduino*/

//motor A
int IN1 = 2 ;
int IN2 = 3 ;

//motor B
int IN3 = 4 ;
int IN4 = 5 ;

//Inicializa Pinos
void setup(){
     pinMode(IN1,OUTPUT);
     pinMode(IN2,OUTPUT);
     pinMode(IN3,OUTPUT);
     pinMode(IN4,OUTPUT);
}

void loop(){

 /*Inicio dos Estados do motor A*/

     //Sentido Horario
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    delay(5000);

 //Freia Motor
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,HIGH);
    delay(5000);

 //Sentido Anti-Horario
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    delay(5000);

//Freia Motor
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,HIGH);
    delay(5000);

 /*Fim dos Estados do motor A*/

 /*Inicio dos Estados do motor B*/

   //Sentido Horario
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
    delay(5000);

   //Freia Motor
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,HIGH);
    delay(5000);

  //Sentido Anti-Horario
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
    delay(5000);

  //Freia Motor
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,HIGH);
    delay(5000);</pre>
/*Fim dos Estados do motor B*/

Nenhum comentário:

Postar um comentário