semaforo con pic16f84a

Tema en 'Electrónica / Robótica' iniciado por rompe_cholla, 27 Abr 2011.

  1. rompe_cholla

    rompe_cholla Becerro

    Ola corrral neecesito de sus conocimientos :D estoy haciendo un circuito como proyecto donde tengo qe hacer las funciones de un semaforo, tengo problemas a la hora de hacer funcionar el circuito. el

    los materiales qe use son : leds.
    pic16f84a
    el oscilador lo hice con un cristal de cuarzo, 2 capacitores de 22 pf.

    Tengo el diagrama del pic: http://www.maicas.net/bot/pic16f84.gif....

    El programa lo realize en C con mikroc pero no se donde esta el error ..... El gragador que uso es el programagor de pic 600 soporta el pic16f84a....

    El codigo es este qe tengo:

    void main()
    {
    int i=0;
    PORTB=0x00; //Inicialización.
    PORTA=0x00;
    TRISB=0x00; //Puerto B como salida.
    while (1)
    {
    PORTB.f1=1; //Encender LED conectado en RB1.
    PORTB.f4=1;
    Delay_ms(5000);
    PORTB.f4=0;
    for(i=0;i<3;i++)
    {
    PORTB.f5=1; //Encender LED conectado en RB2.
    Delay_ms(2000);//Esperar 2 segundos.
    PORTB.f5=0; // Apagar LED RB2
    Delay_ms(1000);//Esperar 1 segundos.
    }
    PORTB.f1=0; //Apagar LED RB1
    do
    {
    PORTB.f3=1; //Encender LED conectado en RB3.
    PORTB.f6=1;
    Delay_ms(5000);//Esperar 5 segundos.
    PORTB.f3=0; // Apagar LED RB3
    PORTB.f6=1;
    }while(PORTB.f3=0);
    for(i=0;i<3;i++)
    {
    PORTB.f2=1; //Encender LED conectado en RB2.
    Delay_ms(2000);//Esperar 5 segundos.
    PORTB.f2=0; // Apagar LED RB2
    Delay_ms(1000);//Esperar 5 segundos.
    }
    PORTB.f6=0;
    }
    }


    Corre a la perfeccion en mikroc
    aca la imagen de mi circuito : http://www.imagengratis.org/?v=img00791.jpg
    la fuente es de 5 volts .!!! utilice un potenciometro para bajar el voltaje!!!!

    :eolo:
     
  2. Zephyros

    Zephyros Bovino de la familia

    Por lo que veo estás utilizando alambre telefónico o UTP para tus conexiones. No te recomiendo utilizar ese alambre, ya que es propenso a causar falsos contactos, mejor utiliza alambre calibre 22 (un solo polo), el cable es de varios polos, no te serviría.

    Si funciona bien en el emulador, entonces es probable que haya algo mal conectado en la proto, revisa las conexiones.
     
  3. olibeiro

    olibeiro Bovino maduro

    junto con lo dice el compañero Zephyros, yo creo que el problema está en la parte del oscilador, tienes dos condensadores de muy pequeña capacidad 22pF, pero también la placa para prototipos por su construcción le esta agregando una capacidad parasita de las pistas a la capacidad de los condensadores del oscilador y por ese motivo creo que no va bien.
    Te recomiendo que lo montes en una placa perforada para prototipos y nos cuentas.
    Saludos olibeiro
    www.soloelectronica.net
     
  4. geraio

    geraio Becerro

    Nuevo en el sistema

    Mira yo he trabajado con editores mas viejos y ahi se necesita configurar el pic para que reciba senal de cristal y no de resistencia con capacitor, checa esto en el programa y ahi no se como ayudarte
     
  5. ☻☻☻

    ☻☻☻ Bovino maduro

    yo trabaje con el mismo pic y con los mismos capacitores con un cristal de 4MHz y me da a la perfeccion, no creo que ese sea el problema.. he usado mikrobasic, me imagino que sera igual, al crear el proyecto te pide el valor del cristal y el modelo del pic, ya que lo seleccionas le das en default para que te configure las banderas automaticamente, no se si hicieras eso, sino checalo por ahi.

    otra cosa, que te hace mal.. no prende nada o se quedan prendidos los leds o que hace?

    y por ultimo te aconsejo que en vez de potenciometro para el voltaje uses un 7805 que te da salida a 5V
     
  6. [N3M0]

    [N3M0] Bovino Milenario

    mandame un correo o agregame a tu msngr ========= t puedo ayudar, precisamente estoy viendo los pics 16f84a, tengo un programa para semaforo pero no es en c pero te puede servir, y pues la foto de tu circuito ya armado la estoy revisando... saludos.
     
  7. rompe_cholla

    rompe_cholla Becerro

    Ola Gracias por sus respuestas, pues lo que hace es que prende el led rojo con el verde pero de ahi no pasa :S deberia de seguir el amarillo como lo dice mi codigo pero no lo hace, configure el oscilador desde mikro c con el oscilador XT pero nomas noo quiere :S
     
  8. rompe_cholla

    rompe_cholla Becerro


    Ok hare eso cambiare tu cable por el de calibre 22, ese cable es el que me recomiendan :D
     
  9. rompe_cholla

    rompe_cholla Becerro

    agrego



    ya te agregue men !!!
     
  10. mcpiebot

    mcpiebot Bovino adicto

    En la foto de tu circuito no veo la resistencia de reset ni las resistencias para los leds.

    Saludos!
     
  11. rompe_cholla

    rompe_cholla Becerro

    Espero y me ayuden alo mejor este mal en el programa, no me gusta ensamblador :S jaja tendre que aprender bueno Solo quiero que los pines del B sean salidas y que haga la funcion del semaforo espero y me puedan ayudar con el programa, tengo MPLAB para ensamblador y Mikroc para C :D
     
  12. rompe_cholla

    rompe_cholla Becerro

    Es necesario el pin del Reset ??? entoncess que materiales puedo utilizar :D para activarlo y las resistencias tenia entendido que si van pero no se de cuanto ??
     
  13. ☻☻☻

    ☻☻☻ Bovino maduro

    el pin de reset va a voltaje solo con una resistencia, yo le pongo de 1k pero casi puede ser la que sea...si no le pones esto se estara reseteando y no pasara de la primer linea. este pin si buscas el diagrama del pic aparece como MCL. es el pin 1 creo

    para los leds, para fines practicos puedes ponerle de unos 220 o 330, eso solo para que no se quemen

    te aconsejo que hagas un programa que solo prenda y apague un led o algo mas sencillo, y si si funciona eso entonces es el programa el que esta mal, asi podemos reducir loserrores posibles.. aunque estoy casi seguro que el problema es que pin de reset
     
  14. rompe_cholla

    rompe_cholla Becerro

    HOla muchas gracias ia vii el problema... siii es el pin del reset. Cuando lo configure en el software del modulo del programador estaba en off y lo que hice fue pasarle 5 volts a la entrada con una resistencia de 1 K y asii ya pudo funcionar, Gracias compañeros subire el video para que lo puedan ver, pues el codigo estaba correcto el unico inconveniente fue la configuracion del PIC
     
  15. carlos ruiz r

    carlos ruiz r Becerro

    ammm mira de programacion en ensamblador se me hace algo rara, pero en fin te paso este codigo en c. correlo en cualquier compilador k tenga c y te andara perfecto. yo uso el pcw en ccs.

    #include <16F84A.h>
    #fuses XT, NOWDT, NOPROTECT
    #use delay (clock=4000000)
    #use fast_io(b)
    int contador=0;
    void main()
    {
    SET_TRIS_B(0x00);
    inicio:
    OUTPUT_B(0x04);
    output_high(PIN_B4);
    delay_ms(2000);
    {
    for (contador=0;contador<=2;contador++)
    {
    OUTPUT_B(0x00);
    output_low(PIN_B4);
    delay_ms(100);
    OUTPUT_B(0x04);
    output_high(PIN_B4);
    delay_ms(120);
    }
    }
    OUTPUT_B(0x02);
    delay_ms(160);
    OUTPUT_B(0x01);
    output_high(PIN_B6);
    delay_ms(2000);
    {
    for (contador=0;contador<=2;contador++)
    {
    OUTPUT_B(0x00);
    output_low(PIN_B6);
    delay_ms(100);
    OUTPUT_B(0x01);
    output_high(PIN_B6);
    delay_ms(120);
    }
    output_high(PIN_B5);
    delay_ms(160);
    }



    goto inicio;
    }
     
  16. carlos ruiz r

    carlos ruiz r Becerro

    amm por cierto. los capacitores son los optimos para ese microcontrolador por su estructura interna, lo k aumenta es la resistividad. cualquiera k sepa o se enfoque bien en microship lo sabra. ademas te recomiendo k puentees un cable del los 5 volt hacia el pin del reset. este pic presenta problemas con eso. si co esto funciona colocale la resistencia y listo.tambien limita la corriente de los led.

    estos pic son mui buenos por su facilidad de programar, pero si te recomendaria k despues de aprenderlos a minimo de un 80%. pruebes los de frescaler (motorola) o mejor aun los multi timers de texas instruments. saludoz