15
Driver L293B El circuito integrado L293B (tabla 12.1 y guras 12.1, 12.2, 12.3 y 12.4) se ha diseñ el propósito de realizar el control de los motores CC ( DC) de manera óptima y económ Está conformado por cuatro ampli cadores push-pull capaces de entregar una corriente salida de 1A por canal. Cada canal está controlado por entradas compatibles con los niveles TTL y cada par de ampli cadores (un puente completo) está equipado con una entrada de habilitación, que puede apagar los cuatro transistores de salida. Tiene una entrada de alimentación independiente para la lógica, de manera que se puede polarizar con bajos voltajes par reducir la disipación de potencia. Los cuatro pines centrales se emplean para conduci calor generado hacia el circuito impreso. Sus características sobresalientes son las siguientes: Corriente de salida de 1A por canal. Corriente pico de salida 2A por canal (no repetitiva). Pines de Habilitación. Alta inmunidad al ruido. Fuentes de alimentación separadas. Protección contra exceso de temperatura. Tabla 12.1 Valores máximos absolutos del driver L293B

Driver L293B

Embed Size (px)

DESCRIPTION

Driver L293B uso y aplicaciones

Citation preview

Driver L293BEl circuito integrado L293B (tabla 12.1 y figuras 12.1, 12.2, 12.3 y 12.4) se ha diseado con el propsito de realizar el control de los motores CC ( DC) de manera ptima y econmica. Est conformado por cuatro amplificadores push-pull capaces de entregar una corriente de salida de 1A por canal.Cada canal est controlado por entradas compatibles con los niveles TTL y cada par de amplificadores (un puente completo) est equipado con una entrada de habilitacin, que puede apagar los cuatro transistores de salida. Tiene una entrada de alimentacin independiente para la lgica, de manera que se puede polarizar con bajos voltajes para reducir la disipacin de potencia. Los cuatro pines centrales se emplean para conducir el calor generado hacia el circuito impreso. Sus caractersticas sobresalientes son las siguientes: Corriente de salida de 1A por canal. Corriente pico de salida 2A por canal (no repetitiva). Pines de Habilitacin. Alta inmunidad al ruido. Fuentes de alimentacin separadas. Proteccin contra exceso de temperatura.

Tabla 12.1 Valores mximos absolutos del driver L293B

Figura 12.1 Distribucin de terminales del driver L293B

Figura 12.2 Diagrama de bloques del driver L293B y tabla de verdad (Z= Alta impedancia de salida). Se muestran diferentes tipos de conexin de motores CC ( DC).

Observe con cuidado la tabla de verdad de la figura 12.2 y note que si el voltaje de entrada de habilitacin Vinh tiene un nivel ALTO el voltaje de salida Vo tendr el mismo nivel (ALTO o BAJO), aunque NO el mismo valor, del nivel de entrada Vi. Algo que debe tenerse muy en cuenta es que los valores del voltaje de entrada Vi no son los mismos valores del voltaje de salida Vo, ya que Vi corresponde a valores TTL mientras que Vo es el voltaje de alimentacin de los motores Vs.

Por otro lado, si Vinh tiene un valor BAJO, el pin de salida se pone en estado de alta impedancia (sin importar el valor del voltaje de entrada Vi).

Figura 12.3 Control de motores CC ( DC) (con conexin al positivo y al negativo de la fuente). Tabla de verdad.La tabla de verdad de la figura 12.3 muestra la posibilidad de controlar dos motores CC ( DC) en el mismo sentido de giro, con la diferencia de que M1 girar si la entrada A tiene un nivel BAJO, mientras que M2 girar si la entrada B tiene un nivel ALTO.

Figura 12.4 Control de giro en ambos sentidos de un motor elctrico DCDriver L293DEl driver L293D (figura 12.5) es similar al L293B, se diferencia fundamentalmente en su mxima corriente de salida y en la incorporacin de los diodos de proteccin en cada uno de los cuatro amplificadores. Sus caractersticas principales son las siguientes:

Corriente de salida de 600 mA por canal. Corriente pico de salida 1,2A por canal (no repetitiva). Pines de Habilitacin. Alta inmunidad al ruido. Fuentes de alimentacin separadas. Proteccin contra exceso de temperatura. Diodos de proteccin incorporados.

Figura 12.5 Diagrama de bloques del driver L293DEl L293D diseado para recibir niveles TTL y alimentar cargas inductivas (rels, motores DC y PAP bipolares y unipolares) y transistores de potencia de conmutacin. Este dispositivo se puede usar en aplicaciones de conmutacin hasta los 5 kHz. Est encapsulado en formato DIP16 y sus cuatro pines centrales se han conectado juntos y se emplean como disipadores de calor.

Conexin del driver L293D al PICEl control de giro de motores DC por medio del driver L293D se detalla en el siguiente ejemplo. Tambin puede emplearse el L293B tomando en cuenta que se deben aadir los diodos de proteccin (pueden ser del tipo 1N4007) como se indica en la figura 12.4.

Ejemplo-MotorDC_01.c: Conexin tpica de un motor elctrico DC al PIC a travs del driver L293D (figuras 12.6.1 y 12.6.2). El giro del motor est determinado por el estado de los pines RB0 y RB1 de acuerdo a la tabla 12.2. El pin RB0 determina el encendido o apagado del motor, mientras que RB1 controla el sentido de giro.

Tabla 12.2 Tabla de verdad del problema MotorDC_01.c

Figura 12.6.1 Circuito de control de motores CC (DC) con el L293D//MotorDC_01.cvoid main(){OSCCON=0x60; //Oscilador interno a 4MHz (TCI=1 us).while (OSCCON.IOFS==0); //Esperar mientras el oscilador est inestable.PORTB=0x00; //Inicializacin.NOT_RBPU_bit=0; //Habilitar las pull-up.TRISB=0b11100011; //RB como salidas.while (1){ if (RB0_bit==0) RB4_bit=0; //Motor desconectado. if (RB0_bit==1){ if (RB1_bit==0) PORTB=0b00011000; //Giro a la derecha. if (RB1_bit==1) PORTB=0b00010100; //Giro a la izquierda. }}}

En el utilizamos el drivers L298, recuerda que la mxima intensidad que soporta como salida las patillas del PIC son de 25 mA y un motor de estas caractersticas (segn el modelo), pueden llegar a 200 300 mA, hay muchos drivers para el control de motores pequeos y cuya corriente no superen 2 amperios, pero este tiene la ventaja de que est modelado en Proteus con lo que podremos simularlo sin problemas, el datasheet del drivers lo tenisaqu.En el vemos sus caractersticas, este puede controlar dos motores cuya intensidad mxima no superen los dos amperios, para saber su funcionamiento miramos su tabla de verdad:

Si Ven est a nivel alto:IN3=H y IN4=L--> giro derechaIN3=L y IN4=H--> giro izquierdaIN3=IN4--> para el motorLos diodos utilizados son para proteger al circuito de las fuerzas contra electromotrices que se producen en el bobinado del motor al conmutar el sentido de la marcha.Vamos a ver el programa en C://Archivos de cabecera:#include #FUSES NOWDT, XT, NOPUT#use delay(clock=4000000)#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)#bit RB1=0x06.1 // Identificadores de bits#bit RB2=0x06.2//Prototipos de las funcionesvoid instrucciones(void);void derecha(void);void izquierda(void);void parar(void);void mensaje(void);//Archivo principal:#include "Control_Motor_CC.h"int marcha=0;//variables globaleschar sentido;void main(){char M;set_tris_b( 0b11111001 ); // Se configura la puerta BRB1 = 0; // Se inicializa los bits de salidaRB2 = 0;//llamada a la funcin instrucciones();instrucciones();while (true){M=getc();switch (M) {case 'i':izquierda();sentido='i';break;case 'd':derecha();sentido='d';break;case 'p':parar();break;default :mensaje();break;}}}//Definicin de funcionesvoid instrucciones() //instrucciones para el control del Motor{puts("========= Control de un Motor de CC ==========");puts("Pulsa 'i' para giro a la izquierda");puts("Pulsa 'd' para giro a la derecha");puts("Pulsa 'p' para parar el motor");}void izquierda (){if ((marcha==1) && (sentido=='d')){ //si motor est en marcha -->derecha paro y espero 3sparar();delay_ms(3000);RB1=0;RB2=1;marcha=1;}else{RB1=0;RB2=1;marcha=1;}}void derecha (){if ((marcha==1)&& (sentido=='i')){ //motor en marcha --> izquierda, paro y espero 3sparar();delay_ms(3000);RB1=1;RB2=0;marcha=1;}else{RB1=1;RB2=0;marcha=1;}}void parar (){RB1=0;RB2=0;marcha=0;}void mensaje (){puts("Prueba de nuevo");}ComentarioEste es un ejemplo que estructura el cdigo en funciones, para los que estis empezando a programar y no sepis como utilizarlas, "no problem" porque pronto se ver en el tutorial de teora todo lo referente a ellas. De momento vale con que sepis que toda funcin necesita una declaracin, que se suele incluir en un archivo de cabecera, una definicin donde se encuentran las instrucciones que realiza la funcin y una llamada a la funcin.Si ejecutamos el programa la terminal nos mostrar la siguiente informacin para el control del motor:

El ejemplo lleva incluido la siguiente proteccin para el motor: si el motor est en marcha girando en un sentido y pulsamos la letra correspondiente para cambiar el sentido de marcha, primero para el motor, espera durante tres segundos y luego cambia el sentido de giro al motor.Pese a los diodos de proteccin no viene mal controlar esta situacin por medio del cdigo del programa. Imagnate que vas en coche por la autopista a 120 Km/hora y metes la marcha atrs.El cdigo fuente y el DNS lo tenisaquHasta ahora hemos visto como interactuar con las funciones de entrada y salida por medio de la terminal, en el prximo ejemplo veremos cmo utilizar el componente COMPIM de proteus, para interactuar con un puerto serie real ( virtual, si no disponemos de ninguno) de nuestro ordenador y utilizar el HyperTerminal de Windows otro programa para interactuar con la simulacin del circuito en Proteus.Como siempre el ejemplo puede ser mejorado, espero vuestros comentarios y aportaciones en el foro.Un saludo

Archivo Control_Motor_CC.c/*--------------------------------------------------------*\| Control de un motor de CC por medio de la Terminal || autor: biblioman || www.aquihayapuntes.com |\*--------------------------------------------------------*/

#include "Control_Motor_CC.h"

int marcha=0;//variables globaleschar sentido;

void main(){

char M;

set_tris_b( 0b11111001 ); // Se configura la puerta BRB1 = 0; // Se inicializa los bits de salidaRB2 = 0;

//llamada a la funcin instrucciones();instrucciones();

while (true){M=getc();

switch (M) {

case 'i': izquierda(); sentido='i'; break; case 'd': derecha(); sentido='d'; break; case 'p': parar(); break; default : mensaje(); break; }}}

//Definicin de funciones

void instrucciones() //instrucciones para el control del Motor{ puts("========= Control de un Motor de CC =========="); puts("Pulsa 'i' para giro a la izquierda"); puts("Pulsa 'd' para giro a la derecha"); puts("Pulsa 'p' para parar el motor");}void izquierda (){ if ((marcha==1) && (sentido=='d')){ //si motor est en marcha -->derecha paro y espero 3s parar(); delay_ms(3000); RB1=0; RB2=1; marcha=1; } else{ RB1=0; RB2=1; marcha=1; }}void derecha (){ if ((marcha==1)&& (sentido=='i')){ //motor en marcha --> izquierda, paro y espero 3s parar(); delay_ms(3000); RB1=1; RB2=0; marcha=1; } else{ RB1=1; RB2=0; marcha=1; }}void parar (){ RB1=0; RB2=0; marcha=0;}void mensaje (){ puts("Prueba de nuevo");}

Archivo Control_Motor_CC.h#include #FUSES NOWDT, XT, NOPUT#use delay(clock=4000000)#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)#bit RB1=0x06.1 // Identificadores de bits#bit RB2=0x06.2

//Prototipos de las funcionesvoid instrucciones(void);void derecha(void);void izquierda(void);void parar(void);void mensaje(void);