Hola a todos, aca les dejo un tutorial de como realizar un puente H con el integrado l298
Para los que no sepan lo que hace un puente H, se los explico muy basicamente: es un circuito electronico que nos permite controlar el giro de un motor de corriente continua, me refiero a que el motor gire en el sentido de las agujas de un roloj o en el sentido contrario a las mismas.
En internet los venden ya armados:
Pero lo podes armar en tu casa por mucho menos dinero, asi me quedo el mio:
No sera lo mismo esteticamente pero funciona de la misma manera que el comprado.
ARMADO
ACLARACION: al circuito le agregue le agregue un 7805 para regular la tension de la bateria y poder conectar directamente el arduino
Componentes:
Componentes:
1 L298N (circuito integrado puente H)
1 LM7805
8 Diodos 1n4148
2 Capacitor de 2200uf
1 Capacitor de 0.33uf
1 Capacitor de 0.01uf
2 Disipadores
1 plaqueta virgen de 9cm x 6cm (o de 10x10 cm para no complicarse)
4 borneras de dos contactos
6 espadines/pines
El L298 nos permite controlar dos motores en el mismo integradro y regularles la velocidad a nuestro gusto.
Con un arduino solo nececitaremos tres pines para controlar el motor:
1ro en high mueve el motor en una direccion
2do en high mueve el motor en la direccion contraria
3ro nos permitira controlar la velocidad, con PWM
hoja de datos l298
http://www.alldatasheet.com/datasheet-pdf/pdf/22437/STMICROELECTRONICS/L298.html
Diagrama
El circuito impreso lo diseñe en PCBWizard
de aca lo podes bajar el progrma
y aca te dejo los archivos del diagrama y el pcb
https://sourceforge.net/projects/puenteh/files/
el pcb es distinto al de las fotos porque le deje mas espacio para los disipadores
imagen del artwork, esto es lo que se imprime.
AVISO: imprimirlo siempre desde el PCBWizard no imprimir esta imagen
ya con el PCB armado solo tenes que imprimir el artwork en papel fotografico y plancharlo en una placa virgen para luego sumergirlo en cloruro ferrico.
si no sabes como se hace esto busca en taringa que esta lleno de post:
http://www.taringa.net/posts/hazlo-tu-mismo/11280314/Circuitos-impresos-parte-I-y-II.html
http://www.taringa.net/posts/hazlo-tu-mismo/17542295/Como-hacer-circuitos-impresos-Tecnica-de-la-plancha.html
Despues a agujerear y por ultimo soldar los componentes
PRUEBA
para probarlo lo conecte al arduino de la siguiente manera
y cree un programita de prueba medio loco que va variando el giro y la velocidad
[color=#000000][color=#000000][color=#000000]
int md_adelante = 5; //md = motor derecho
int md_atras = 4;
int md_velocidad = 3;
int mi_adelante = 11; //md = motor izquierdo
int mi_atras = 10;
int mi_velocidad = 9;
void setup()
{
pinMode(md_adelante,OUTPUT);
pinMode(mi_adelante,OUTPUT);
pinMode(md_atras,OUTPUT);
pinMode(mi_atras,OUTPUT);
pinMode(mi_velocidad,OUTPUT);
pinMode(md_velocidad,OUTPUT);
digitalWrite(mi_adelante,LOW);
digitalWrite(md_adelante,LOW);
digitalWrite(mi_atras,LOW);
digitalWrite(md_atras,LOW);
Serial.begin(9600);
}
void loop()
{
analogWrite(md_velocidad, 60); //seteo las dos velocidades a 60
analogWrite(mi_velocidad, 60);
digitalWrite(mi_adelante,HIGH); //arranca el motor izq adelante
delay(2000); //espero dos segundos
digitalWrite(md_adelante,HIGH); //arranca el motor derecho adelante
delay(2000); //espero dos segundos
analogWrite(mi_velocidad, 120); //aumento velocidad del izq a 120
delay(2000); //espero dos segundos
analogWrite(mi_velocidad, 180); //aumento velocidad del izq a 180
delay(2000); //espero dos segundos
digitalWrite(md_adelante,LOW); //freno el derecho
analogWrite(md_velocidad, 160); //aumento la velocidad del derecho a 160
digitalWrite(md_atras,HIGH); //arranca el derecho para atras
delay(2000); //espero dos segundos
digitalWrite(mi_adelante,LOW); //freno el izq
delay(3000); //espero tres segundos
analogWrite(mi_velocidad, 255); //seteo velocidad del izq al maximo
digitalWrite(mi_atras,HIGH); //lo arranco a fondo
delay(2000); //espero dos segundos
analogWrite(md_velocidad, 255);
digitalWrite(md_atras,HIGH); //arranco a fondo el otro
delay(2000); //espero dos segundos
digitalWrite(md_atras,LOW); //FRENO LOS DOS
digitalWrite(mi_atras,LOW);
delay(2000); //espero dos segundos
//vamos a aumentar los dos incrementalmente
analogWrite(mi_velocidad, LOW);
analogWrite(md_velocidad, LOW);
digitalWrite(md_adelante,HIGH);
digitalWrite(mi_adelante,HIGH);
for (int i=0; i <= 255; i++){
analogWrite(mi_velocidad, i);
analogWrite(md_velocidad, i);
delay(100);
}
//vamos a decrementarlos
for (int i=255; i >= 0; i=i-1){
analogWrite(mi_velocidad, i);
analogWrite(md_velocidad, i);
delay(100);
}
//frenamos todo por las dudas
digitalWrite(mi_adelante,LOW);
digitalWrite(md_adelante,LOW);
digitalWrite(mi_atras,LOW);
digitalWrite(md_atras,LOW);
}[/color][/color][/color]
Por ultimo les dejo un video de como funciona:
link:
SALUDOS!