Porque se cuelga el PIC 16f877?

Buenas:
Mi nombre es Victor y es la primera vez que participo de un foro de electronica, siempre los leo pero nunca me atrevi a preguntar, pero de veras espero que puedan ayudarme por favor.
Mi problema es el siguiente: tengo hecho un sistema de llamadas de emergencia en una clinica, este sistema tiene 27 pulsadores (uno por cuarto) que dan los pulsos de entrada al circuito de control, y tiene un display de 7 segmentos que muestra el numero de cuarto respectivo cada vez que ocurre una llamada, ademas tiene como indicador una alarma sonora. En resumen, el sistema funciona bien hasta que se cuelga, mas no encuentro la razon de porque sea.
Adjunto al correo les envio el esquema del ckto de control, como veran se usa dos PIC 16f877: uno para el control de las entradas y otro para el control de las salidas.
Gracias por la ayuda que me puedan brindar!!

Saludos cordiales
 

Adjuntos

  • ckto_control.JPG
    ckto_control.JPG
    71.7 KB · Visitas: 80
  • Circuito_contro_[eagle].rar
    33.9 KB · Visitas: 18
vicxo:

Primero que nada supongo que ya has revisado exaustivamente el software, y no se te está colgando por algún bug de soft. Esto es muy importante que lo revises muy bien.

La observación que hago de tu circuito:

- Estás usando pulsadores, cableados, que están alejados de tu PIC a seguramente varios metros de distancia. Esto hace que sea una muy buena antena. La energía estática, y radiaciones que entran en ella, van derechito al PIC. Esto puede estar haciendo que te produzcan picos de tensión o corriente en la entrada y te cuelguen el micro. Yo separaría las entradas del micro, o con transistores (que las entradas vayan a la base de un transistor, y que el transistor entre en el micro), o con opto-acopladores (que aisle totalmente la entrada de los pulsadores del micro).

Espero que te sirva de ayuda.
 
Cualquier circuito "serio" debe de cumplir al menos lo siguiente:

- Fuente de alimentación de calidad, un 7805 no es uno de ellos, un LM323 filtra mucho mejor
- Fuente de alimentación protegida a la entrada con un varistor que elimine pulsos de la red
- TODAS las entradas SIEMPRE OPTOACOPLADAS con una impedancia de entrada baja (como muchísimo 1K). Las únicas entradas que pueden ir directas son los pulsadores de la tapa de la caja del micro.
- Poner DOS FUENTES DE ALIMENTACIÓN completas. Si optoacoplas y alimentas por los dos lados del optoacoplador con la misma fuente no haces nada. Si usas el mismo transformador tampoco

- Revisa exhaustivamente el software, suele dar problemas
- Implementa SIEMPRE al menos un circuito de watchdog que permita recuperar el sistema si se cuelga y en ese caso que tenga una memoria interna para saber que se ha colgado.
- Implementa un segundo watchdog que verifique que el reloj del sistema funciona (todo esto suele ir dentro del propio micro, úsalo, si no lo lleva cambia a otro derivado que lo tenga.


Todo lo que no sea seguir estas directrices (y alguna mas que seguro que se me olvida) es, como decimos por aquí; "ahorrar una peseta y perder un duro (moneda de 5 pts)"

Con 27 cables de unas decenas de metros sin optoacoplar, impedancias de entrada de 16K, y supongo que pasando por los conductos eléctricos, lo sorprendente sería que funcionase.
 
Buenas con todos:
Primero que nada agradecerles a todos los comentarios. De acuerdo a algunas recomendaciones que me indicaron, me puse a revisar el software (que lo hice en el ccsc) y en una de las directivas decia:
#fuses NOLVP,HS,NOWDT
La duda entonces a partir de esto es: estoy usando un cristal de 4Mhz, y de acuerdo a las especifiaciones encontradas la directiva HS para el cristal podria estar provocando algun error? esto se los consulto ya que HS es indicado para cristales mayores de 4MHz.
Creo mucho que ese podria ser el problema, porque el circuito funciona bien por un buen numero de horas continuas, pero a las 10 horas mas o menos se cuelga.
Respecto a la parte de aislar a las entradas, tendre que disenar una nueva placa para probar la teoria recomendada, y les estare comentando como va el resultado!!
Nuevamente gracias por el apoyo.
 
Para saber si es problema de ruidos o de soft, prueba el circuito en "condiciones ideales", es decir en tu casa con una buena alimentación y con cables de 2cm, si funciona bien ya sabes que son los ruidos.
 
Atrás
Arriba