Beruflich Dokumente
Kultur Dokumente
comum. Estes motores podem ter o sentido de rotao controlado de acordo com o
sentido da corrente aplicada em seus terminais. Alm disso, utilizando modulao
por largura de pulso (PWM) possvel controlar a velocidade de rotao do motor
sem que se perca o torque do mesmo.
Um circuito muito til para controlar o sentido da corrente que alimenta um motor
DC o Circuito Ponte H. No o objetivo deste artigo explicar o funcionamento
deste circuito, de modo que basta saber que o mesmo composto por transistores
e diodos que, pela sua configurao, permite alterar o sentido da corrente aplicado
em um motor DC.
O circuito integrado L293B um CI que possui em seu interior duas Pontes H,
sendo o mesmo capaz de trabalhar com correntes de at 1A. Como neste artigo
nosso objetivo apresentar uma forma de se controlar motores DC utilizando o
Arduino, o L293B nos atender perfeitamente, pois, alm de sua simplicidade, ele
nos permite fornecer ao motor uma corrente bastante acima daquela suportada
pelo Arduino que por volta de 40mA.
Para iniciar nosso estudo vamos comear analisando o CI L293B. A figura abaixo
apresenta a pinagem do mesmo:
1 Arduino Uno
2 Botes
1 Motor DC de 9V
1 Protoboard
1 Bateria de 9V
Fios diversos
2 Resistores de 10 kOhm
o
o
o
o
o
pino
pino
pino
pino
pino
4
2
5
6
7
como
como
como
como
como
input1
enable1
input2
button1
button2
rotina rotateLeft:
acionar enable1
desativar input2
acionar input1
fim
rotina rotateRight:
acionar enable1
desativar input1
acionar input2
fim
rotina parar:
desativar enable1
desativar input1
desativar input2
fim
enquanto button1 acionado:
rotateLeft
fim
enquanto button2 acionado:
rotateRight
fim
parar
input1 = 4;
enable1 = 2;
input2 = 5;
button1 = 6;
button2 = 7;
void setup(){
pinMode(input1, OUTPUT);
pinMode(enable1, OUTPUT);
pinMode(input2, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void rotateLeft(){
digitalWrite(enable1, HIGH);
digitalWrite(input2, LOW);
digitalWrite(input1, HIGH);
}
void rotateRight(){
digitalWrite(enable1, HIGH);
digitalWrite(input1, LOW);
digitalWrite(input2, HIGH);
}
void parar(){
digitalWrite(enable1, LOW);
digitalWrite(input1, LOW);
digitalWrite(input2, LOW);
}
void loop(){
while(digitalRead(button1) == HIGH){
rotateLeft();
}
while(digitalRead(button2) == HIGH){
rotateRight();
}
parar();
}