top of page
Foto do escritorUFRJ Nautilus

Controle de Motores DC usando Sinal Digital

Drones, Submarinos ou carros, todos os veículos possuem uma entidade em comum, sem a qual é impossível que funcionem: o Motor. Realmente, é inimaginável um veículo sem a materialização mecânica da energia elétrica. Existem diversos tipos de motores, e o foco deste artigo é o controle e uso de motores DC (corrente contínua) usando sinais digitais.


O motor DC gira em um sentido quando polarizado diretamente e no sentido oposto quando polarizado reversamente. Você deve imaginar que como LEDs, buzzers e outros componentes eletrônicos simples, é possível ligá-los às portas digitais ou analógicas do seu microcontrolador e controlá-los enviando sinais diretos. Mesmo que a voltagem das portas analógicas/digitais seja suficiente, a alta corrente exigida por esses componentes pode (literalmente) fritar o microcontrolador. Então, como utilizar motores, controlando sua velocidade, sentido de rotação e usando até uma fonte de alimentação externa?


Para contornar essa situação utilizamos um circuito conhecido como Ponte H. Uma ponte H é um circuito com o formato que lembra a letra H e é capaz de alterar a polarização do elemento central através de sinais externos. Simplificadamente, esse circuito possui 4 chaves que quando ligadas em determinadas combinações permitem a passagem de corrente no motor na direção desejada, alterando seu sentido de rotação. Essas chaves podem ser substituídas por componentes eletrônicos, como Transistores, o que permite que a polaridade do elemento central dependa exclusivamente de um sinal digital externo enviado para o circuito.

Circuito Ponte H - UFRJ Nautilus
Circuito Ponte H
Ponte H usando Transistores

Como controlar o motor usando esses conceitos:


Uma implementação usual da ponte H é feita usando o CI l293D. Esse chip contém 2 Pontes H, por meio de 4 vias, isto é, pode controlar dois motores independentes, aguentando até 600mAh em cada e tensão de 4,5 a 36 Volts.

L293 Pinout - UFRJ Nautilus
L293 Pinout


Os pinos funcionam da seguinte maneira:


1,2EN -Ativa os canais 1 e 2

1A -4A: Input

1Y - 4Y -Saída para os motores

3,4EN -Ativa os canais 3 e 4

Ground -Terra do CI

Vcc1 -Alimentação do CI

Vcc2 -Alimentação dos motores (De 4.5V a 36V)



1 - Primeiro, vamos alimentar o CI usando 5 volts do Arduíno (Vcc1), a alimentação para os motores (Vcc2) e ligar os grounds.

Implementando a Ponte H - Parte 1 - UFRJ Nautilus
Implementando a Ponte H - Parte 1

2 - Agora conectamos o 3,4EN e os Inputs 3A E 4A ao Arduino.

Implementando a Ponte H - Parte 2 UFRJ Nautilus
Implementando a Ponte H - Parte 2

3 - Agora é só conectar os terminais do motor nos outputs 3Y e 4Y.

Implementando a Ponte H - Parte 3 UFRJ Nautilus
Implementando a Ponte H - Parte 3

O código


Utilizamos o código abaixo, que será explicado mais abaixo, para implementar a ponte H.


 

int enable1 = A0;
int in1 = 2;
int in2 = 3;

//Executado apenas uma vez
void setup(){
  pinMode(enable1, OUTPUT);
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
}

//Executado repetidamente
void loop(){
  //Define a velocidade do motor
  analogWrite(enable1, 255);
  //Gira o motor para um lado por 1 segundo
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  delay(1000);
  //Gira o motor para o outro lado
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  delay(1000); 

}

Destrinchando o código


int enable1 = A0;
int in1 = 2;
int in2 = 3;

Declaramos os pinos onde ligamos os inputs no CI.


void setup(){
  pinMode(enable1, OUTPUT);
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
}

Na função Setup definimos os pinos como OUTPUT.


   analogWrite(enable1, 255);

Os pinos 3,4EN e 1,2EN, além de ativar os respectivos canais podem definir a velocidade dos motores se aplicado um sinal PWM. O 255 representa a velocidade máxima, ou seja, a tensão total aplicada no pino Vcc2 do L293D.


digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);

Agora vamos de fato aprender a controlar o sentido de rotação dos motores. O comportamento dos motores é controlado por sinais lógicos enviados nas inputs do CI. Então para o nosso circuito:


Montagem do circuito com Arduíno. UFRJ Nautilus
Montagem do circuito com Arduíno.

Escrito por Gabriel Guimarães.

0 comentário

Posts recentes

Ver tudo

Commentaires


bottom of page