semaforo con pic16f84a

#1
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:
 

Zephyros

Bovino de la familia
#2
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.
 

olibeiro

Bovino maduro
#3
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
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
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
 

[N3M0]

Bovino adicto
#6
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
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
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.

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

[N3M0];15615619 dijo:
mandame un correo o agregame a tu msngr nehemias_romo@ hot. 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.


ya te agregue men !!!
 
#11
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
 
#13
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
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
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
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
 
Arriba