Puente H: cambio de giro y velocidad de motores DC. Por William David Galvis 1 26 Marzo del 2014 Puente H: El puente en H lleva su nombre gracias al aspecto físico del esquema básico de los interruptores usados para direccionar la corriente en un sentido o en el otro (figura 1), este cambio en la dirección de la corriente hace que el motor cambie el sentido del giro.
2 Imagen 1 Imagen 2 Los interruptores en las imágenes 2a y 2b pueden ser reemplazados por relés, contactores (eléctricos de potencia) o transistores, para hacer el diseño más compacto se han fabricado circuitos integrados que funcionan como puente en H con mayores configuraciones para su funcionamiento. Uno de ellos es el L298N. Este circuito integrado soporta cargas inductivas tales como relés, motores DC, motores paso a paso y solenoides. La corriente que fluye por la carga no debe exceder los dos amperios por canal, esta corriente a su vez sale del puente a un pin de sensado, donde se debe conectar una resistencia externa para determinar la intensidad de la corriente, ésta se llama resistencia de sensado A (para el motor A, R SA ) y lo mismo sería para el motor B, R SB El circuito tiene dos puentes, el puente A (para el motor A) y el puente B (para el motor B), cada puente es controlado por tres compuertas, por ejemplo para el puente A, In1, In2 y EnA (Enable A). El máximo voltaje de operación para los motores es de 46 voltios DC.
3 Imagen 3 Imagen 4
Las dos entradas de habilitación EnA y EnB habilitan o deshabilitan por completo el puente respectivo independientemente del estado de las señales de entrada In1 e In2 que se encargan de indicar el sentido del giro del motor, lo mismo ocurre para el puente B. Si se quiere controlar la velocidad del motor en cualquiera de los dos puentes basta con energizar y des energizar el pin de control del puente (Enx), este voltaje promedio incrementará o disminuirá la cantidad de voltaje que le llega al motor, provocando su aceleración o desaceleración, este control se hace con los pines de PWM del Arduino. 4 Imagen 5 La función analogwirte(): Esta función escribe un valor analógico en un pin (PWM), esta puede ser usada para controlar la luminosidad de un led o la velocidad de un motor Sintaxis: analogwrite(pin, valor) Parámetros a ingresar en la función: pin: Es el pin en el cual se quiere generar la señal PWM.
valor: El ciclo de trabajo deseado comprendido entre 0 (siempre apagado) y 255 (siempre encendido). Programa # 1: Produce una señal donde se conecta el LED, cuyo voltaje promedio es proporcional al valor leído en el pin donde está conectado el potenciómetro. /* Programa tomado de: http://arduino.cc/es/reference/analogwrite#.uzzhcivaeiw */ 5 int ledpin = 9; // LED conectado al pin digital 9 int analogpin = 3; // potenciómetro conectado al pin 3 int val = 0; // variable en el que se almacena el dato leído void setup() pinmode (ledpin, OUTPUT); // sets the pin as output void loop() val = analogread(analogpin); // lee la tensión en el pin analogwrite(ledpin, val / 4); // los valores de analogread van desde 0 // a 1023 y los valores de analogwrite van desde 0 a 255, por eso // ajustamos el ciclo de trabajo a el valor leído dividido por 4. Imagen 6. Circuito para prueba del programa uno.
Qué similitud tiene este programa con el programa uno de la guía anterior? El cual consistía en variar el tiempo de encendido y apagado del LED con el valor análogo medido en el potenciómetro. Si los dos programas hacen lo mismo Qué programa es más eficiente? Programa #2 6 /* Programa para KITL298. Usa Tres funciones para marcha, paro y reversa de dos motores DC. Creado: Octubre del 2013 por William Galvis. Este programa es de domino público. */ /*Directivas de preprocesamiento asignan un nombre a un pin del Arduino en vez de una variable en memoria.*/ #define ena 9 // 2 #define enb 10 // 7 #define ain1 3 #define ain2 4 #define bin1 5 #define bin2 6 void setup() /* se definen como salida los pines que van a controlar los dos puentes A y B del puente en H para los dos motores*/ pinmode (ena, OUTPUT); pinmode (enb, OUTPUT); pinmode (ain1, OUTPUT); pinmode (ain2, OUTPUT); pinmode (bin1, OUTPUT); pinmode (bin2, OUTPUT); void loop() marcha (255,255); // Motor A y Motor B a máxima velocidad. delay(2000); // el vehículo marcha dos segundos. pare(); // paro los motores antes de hacer cualquier cambio brusco. reversa(126, 126); // luego de parar se invierte el giro de los motores // para que este ande en reversa a la mitad de la velocidad. delay(2000); // el vehículo en reversa dos segundos. pare(); // paro los motores antes de hacer cualquier cambio brusco.
void marcha( int a, int b) analogwrite(ena,a); analogwrite(enb,b); digitalwrite (ain1, HIGH); digitalwrite (bin1, HIGH); // digitalwrite (ain2, LOW); digitalwrite (bin2, LOW); void pare ( void) digitalwrite (ena, LOW); digitalwrite (enb, LOW); digitalwrite (ain1, LOW); digitalwrite (bin1, LOW); digitalwrite (ain2, LOW); digitalwrite (bin2, LOW); delay(300); void reversa( int a, int b) analogwrite(ena,a); analogwrite(enb,b); digitalwrite (ain2, HIGH); digitalwrite (bin2, HIGH); // digitalwrite (ain1, LOW); digitalwrite (bin1, LOW); 7 REFERENCIAS imagen 1: http://blutintegrado.blogspot.com/2012/05/puente-h.html imagen 3 http://www.bristolwatch.com/l298n/ Puente H: cambio de giro y velocidad de motores DC. by William Galvis is licensed under a Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License.