Problema 16F876A + DRIVER L293B
Resultados 1 al 5 de 5

Tema: Problema 16F876A + DRIVER L293B

  1. #1
    Usuario
    Mensajes
    35
    Gracias
    38
    Agradecido 8 veces en 3 posts

    Post Problema 16F876A + DRIVER L293B

    Hola, bueno habiendo solucionado el problema anterior, me surgió otro inconveniente, esta vez algo muy raro que me sucede al querer mover un motor de una lectora de CD.

    Estoy terminando un proyecto de una Tolva, el cuál consiste brevemente en:

    - 3 pulsadores de llamada(que determinan el peso a cargar en la caja)
    - 3 red switch (con imán, que cumplen la función de indicadores para saber si ya se ha llegado al peso fijado por el pulsador).


    Nombre:  tolva (ilustracion).jpg
Visitas: 767
Tamaño: 35.5 KB














    El programa es muy simple, esta hecho en lenguaje C y espera que uno de los 3 pulsadores de llamada se active, una vez hecho esto, la lectora se habre (lo que es la puerta de la tolva) para comenzar a descargar hacia la caja. Durante esta operación, el recipiente se llena de material hasta que se active el red switch correspondiente al pulsador que se ha elegido, por ej: si pulso el pulsador número 1, la tolva descargará hacia el red switch 1. El código del programa es el siguiente:

    Código:
    #include "16F876A.h" 
    
    ///// ESTABLEZCO FRECUENCIA DEL CRISTAL A UTILIZAR /////
    
    #use delay (clock=4000000) 
    
    ///// CONFIGURACIÓN DE FUSES /////
    
    #fuses XT,NOWDT,NOPROTECT,NOPUT,NOLVP,BROWNOUT
    
    ///// INICIALIZACION DE VARIABLES /////
    
    int pulsador;
    int peso;
    
    void main (void)
    {
    
    ///// CONFIGURACIÓN DE PUERTOS /////
    
    set_tris_b(11111111); /* puerto B entrada */
    set_tris_a(000000); /* puerto A salida */
    set_tris_c(11111111); /* puerto C entrada */
    
    ///// PROGRAMA PRINCIPIAL /////
       
       output_low(pin_a0); /* coloco en 0 la salida A0 */
       output_low(pin_a1); /* coloco en 0 la salida A1 */
       
       principio:
       
       while(1) /*espero que se presione el pulsador 1, 2 o 3 para saber hacia donde va a descargar*/
       { 
          pulsador=0;
          if(input(pin_b0)) /* pulsador 1 seteo peso 10 */
          {
             pulsador=1;
             peso=10;
             break;
          }
          if(input(pin_b1)) /* pulsador 2 seteo peso 20 */
          {
             pulsador=2;
             peso=20;
             break;
          }
          if(input(pin_b2)) /* pulsador 3 seteo peso 30 */
          {
             pulsador=3;
             peso=30;
             break;
          }
       
       }
       
       switch(pulsador) /* dependiendo del valor de pulsador descarga al switch 1,2 o 3 */
       {
       case 1:
       
                   delay_ms(1000);
                   output_high(pin_a0); /*abro la puerta de la lectora*/
                   delay_ms(4000);
                   output_low(pin_a0);
          
                   while(input(pin_c0) != 1) /* mientras no llegue al peso solicitado carga el material */
                   {  
                   delay_ms(100); /* cargando material... */
                   }
                   
                   output_high(pin_a1); /*cierro la puerta*/
                   delay_ms(4000);
                   output_low(pin_a1);
                   break;
          
       case 2: 
       
                   delay_ms(1000);
                   output_high(pin_a0); /*abro la puerta*/
                   delay_ms(4000);
                   output_low(pin_a0);
                   
                   while(input(pin_c1) != 1)
                   {  
                      delay_ms(100); /* cargando material... */
    
                   }
                   
                   output_high(pin_a1); /*cierro la puerta*/
                   delay_ms(4000);
                   output_low(pin_a1);
               
                   break;
                   
       case 3:
       
                   delay_ms(1000);
                   output_high(pin_a0); /*abro la puerta*/
                   delay_ms(4000);
                   output_low(pin_a0);
                   
                   while(input(pin_c2) != 1)
                   {  
                      delay_ms(100); /* cargando material... */
    
                   }
                   
                   output_high(pin_a1); /*cierro la puerta*/
                   delay_ms(4000);
                   output_low(pin_a1);
                   break;
       default:
                   output_low(pin_a0);
                   output_low(pin_a1);
                   break;
       }
       
       delay_ms(500); /* antirebote */
       goto principio; /* vuelve a comenzar el programa */
      
    }
    Bueno, dicho esto prosigo con la parte práctica. Lo primero que hice fue simular en Proteus ISIS el programa, y funcionó. Lo armé en una Protoboard antes de comenzar la placa PCB, suplantando los 2 cables de la lectora por 2 LED's (ya que aún no disponía del L293B), uno de apertura y otro de clausura de la puerta (si se enciende el conectado al pin A0 del PIC, indica que la puerta se debe abrir, caso contrario, si se enciende el conectado al pin A1, se debe cerrar - ver código de programa -) y los 2 red switch fueron "simulados" con 3 cables (debido a que tampoco tenía los 3 red switch) que conecté a VDD (+5v) cuando pruebé el funcionamiento.

    Hasta aquí todo funciona correctamente. El problema está cuando pruebo el programa con el DRIVER que maneja el motor. Lo que sucede es que la puerta se ABRE PERO NO SE CIERRA. Cuando pulso P1, por ej., existe un "1" lógico en el pin 2 (input 1) del integrado L293B - ver diagrama de conexiones L293B - (el cuál soporta una tensión de entre 2.3V hasta 7V, en mi caso le envío 5V que es el valor que me entrega el PIC 16F876A por el pin A0). Al estar activado el red switch 1 (cable del pin C0 a +5V) debería sacar por el pin A1, según el programa lo indica, 5V durante 4 segundos, pero NO lo hace, no envía los 5V necesarios para cerrar la puerta. Esto lo observé haciendo funcionar el PIC normalmente y probando la tension con el Multimetro. En el primer caso se envian los 5V para la apertura, pero no los 5V durante los 4 segundos para cerrarla.

    Cabe destacar que, cuando desconecto los cables de los pines 2 y 7 del L293B, el programa funciona bien, enviando los valores correctos de tensión en cada uno de los pines y por el tiempo establecido, no así cuando los conecto al DRIVER. Asi mismo, si hago funcionar el L293B en forma independiente lo hace perfectamente, sin nigún problema. Al final del hilo adjunto el esquema de conexion del PIC y el DRIVER.

    Otra cosa que quiero mensionar es que estoy alimentando los 2 circuitos juntos (PIC+DRIVER) con 5V, pero no creo que sea ese el inconveniente.

    Bueno, se hizo un poco extenso, espero haberme expresado con claridad y que me puedan ayudar con este problema porque me tiene a mal traer y es muy raro.

    Muchas gracias.

    Aquí les dejo los archivos adjuntos:

    Diagrama de Conexiones.rar

    L293B datasheet.rar
    Última edición por 14matias13; 13/04/2012 a las 23:51

  2. #2
    Usuario Avatar de editronikx
    Ubicación
    Pasto Colombia
    Mensajes
    299
    Gracias
    24
    Agradecido 230 veces en 125 posts
    saludos

    la alimentacion del PIC es la misma del motor?,si es asi hay puede estar la falla, ya que tal vez hay ruido en el circuito a causa de la conmutacion del motor, también coloquele diodos de proteccion en el motor, coloque un condensador de 100nf en paralelo al motor y un concensador de Bypass, el codigo esta bien, aunque el enable seria bueno hacerlo desde el PIC y no de forma manual ya que el motor se queda activo (esto es fatal para un PAP)

    colocare una imagen que siempre uso en mi montajes con el l293 y l298 que siempre funciona (es la misma de su montaje a diferencia del PIC) pero tal vez vea algo que su montaje no tiene (no tiene las protecciones)
    Pulsa en la imagen para verla en tamaño completo

Nombre: motor.jpg
Visitas: 834
Tamaño: 84.1 KB
ID: 2757


    mas parece una falla de montaje que de software.
    Última edición por editronikx; 13/04/2012 a las 18:13

  3. Los siguientes 3 usuarios agradecieron a editronikx por este post:

    14matias13 (13/04/2012), Guerra (26/06/2012), HJ.0X00 (26/06/2012)

  4. #3
    Usuario
    Mensajes
    35
    Gracias
    38
    Agradecido 8 veces en 3 posts
    Hola editronikx.

    Cita Iniciado por editronikx Ver mensaje
    la alimentacion del PIC es la misma del motor?
    Si la alimentacion que uso tanto para PIC, integrado L293B y motor proviene de una fuente regulada de 5V.

    La única duda que me queda es la tensión que tiene que tener el pin 8 del L293B, según la hoja de datos esta patilla es la alimentación que necesita el motor para funcionar, estaré en lo correcto conectarlo a +5V, tensión que comparto con el PIC y el pin 16 del L293B teniendo en cuenta que el motor es de una lectora de CD o tienen que ser +5V provenientes de otra fuente distinta?

    Muchas gracias compañero por aclararme las dudas.

    Saludos.

  5. #4
    Usuario
    Mensajes
    35
    Gracias
    38
    Agradecido 8 veces en 3 posts
    Una pregunta, cuando el L293B reciba los 5V del PIC ya sea para abrir/cerrar el motor, a éste último se le aplicará la tensión del pin 8 del driver? (13,5V, en este caso).

  6. #5
    Usuario Avatar de editronikx
    Ubicación
    Pasto Colombia
    Mensajes
    299
    Gracias
    24
    Agradecido 230 veces en 125 posts
    Saludos

    en lo personal yo he tenido problemas de ruido cuando conecto un motor al mismo voltaje del PIC este se hace loco, es por eso que el l293 tiene un pin para alimentar al motor el cual asi sea 5 voltios loos tomo de otra fuente.

    ensaya con otra fuente y nos cuentas.

Temas similares

  1. Driver para el DHT22 (RHT03) en CCS
    Por PicTrance en el foro Electrónica Digital
    Respuestas: 6
    Último mensaje: 22/11/2012, 22:57
  2. duda con flyback driver
    Por nachonach en el foro Electrónica
    Respuestas: 1
    Último mensaje: 21/02/2012, 15:15
  3. Driver para el SHT21
    Por PicTrance en el foro Electrónica Digital
    Respuestas: 9
    Último mensaje: 26/06/2011, 23:22
  4. Controlar motores de PC con L293B
    Por Meta en el foro Electrónica Digital
    Respuestas: 10
    Último mensaje: 28/01/2011, 06:49
  5. necesito ayuda para programacion pic 16f876a en compiler ccs
    Por and_r_iu69 en el foro Electrónica Digital
    Respuestas: 3
    Último mensaje: 08/10/2010, 00:58

Los visitantes encuentran esta página buscando por:

pic con l293b

l293b proteus

driver l293b proteus

L293b

proteus L293B

COMO SE CONECTA EL L293 EN PROTEUS

CONECTAR l293 A PIC

voltimetro 16f876a

conectar l293b para aplicacion de pic

codigo pic16f877 y l293b

dht22 proteus

averiguar codigo pin a1

pic16f84a con l293b

como conectar un pic16f84a a un l293

l293b funcionamiento

L293B conexion

l293b con PIC

l293b y pic problemas

como conectar el l293b

l293d como alimentar 9 volts pic16f84a

l293 proteus

diagrama de conexiones del l293b

l293 pic

aplicaciones l293 en 5 motores-esquema proteus

problemas con l293b y pic

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37