• Giovana Veiga

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
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


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

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

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

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.

Escrito por Gabriel Guimarães.