Autor Tema: El microcontrolador se bloquea y no funciona el WDT?  (Leído 5165 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado epir

  • PIC10
  • *
  • Mensajes: 8
El microcontrolador se bloquea y no funciona el WDT?
« en: 07 de Junio de 2007, 16:20:08 »
Un saludo a todos, muchas gracias por este espacio que de tantas dudas me ha sacado. Hace tiempo trabajo con los microcontroladores de microchip, y hasta el momento pesaba que todo se podía hacer con algo de conocimiento y por supuesto un PIC,  sin embargo hoy tengo una duda que no he podido resolver, por eso recurro a esta comunidad.   

Hace rato hice un diseño para controlar un motor da AC 120V de 1/2Hp,  con reducción e inversión de giro, en su momento el diseño se realizo con un pic 16f84, el control de giro se hace con 2 reles de 12 con un contacto de 30Am (Eso decía la etiqueta del producto),  y la bonina principal, con otro rele, para un total de 3.  Se probo el funcionamiento del motor sin carga  y todo salio bien, el problema resulto cuando se le coloco la carga !!!.  Esto generaba un ruido en la etapa de rectificación que el microcontrolador se perdía,  se cambio la etapa de rectificación por un adaptador conmutado de 12V 1.2Am,  por lo menos el microcontrolador dejo de bloquearse asegurándolo con el uso del perro guardián.

Sin embargo el problema no paro hay, ahora se quedaban pegados los contactos de los reles y el motor perdía la compostura, esto se solucionaba cambiando los reles pero esto era cada ves mas frecuente.

Con el animo de mejorar se paso una propuesta para cambiar la parte electrónica y claro nuevamente se cobro y mucho mas fuerte, ahora se incluían CONTACTORES y el poderoso pic16f873 y programación Csc compiler,  todo iba a lo seguro, para la posición se pensaba incluir control PID  y  por supuesto un sensor que me diera la lectura del motor en todo momento (Conversor análogo ),  y dos set point de llegada, y teniendo en cuenta los problemas de fuente del pasado se compro una fuente conmutada casi igual a la de las que traen las torres del computador, se verifico con el osciloscopio la cantidad de rizado que tenia la fuente con la carga y bien, se probo el sistema ahora con los contactores bueno se creía que todo funcionaria bien, y problema !!!,  en el diseño se coloco una parte para activar el motor de manera manual, la cual activa los contactores  y perfecto ahora entra la parte tecnología con el PIC y ufff, el microcontrolador se enloco y lo peor se bloqueo,  a claro un problema de programación, no se había activado el perro guardián ¡Claro esto era el problema !, se programo el perro guardián ahora nuevamente a probar, ahora funciono perfecto,  ¡ Pero !  por alguna razón que desconozco el microcontrolador se queda bloqueado.

Claro se dijo ¡ no eso es ruido de la fuente !, se cambio por una de computador se programo para que el microcontrolador se reinicie cada 24 segundos, y sin embargo se bloquea. 

Cambie el código, utilicé la instrucción ( “sleep” ), sin embargo tampoco funciona, se supone que el micro entra, encuentra esta instrucción luego de configurar los puertos y queda en modo bajo consumo hasta que una interrupción lo desactive, sin embargo parece que nunca entra en modo bajo consumo ni siquiera cuando lo simulo en el MPLAB. 

Bueno me gustaría saber si alguien ha tenido este problema de funcionamiento y de inestabilidad con los PIC y de que manera pudo resolverlo.   

Muchas gracias.

Desconectado dvd

  • PIC10
  • *
  • Mensajes: 4
Re: El microcontrolador se bloquea y no funciona el WDT?
« Respuesta #1 en: 07 de Junio de 2007, 19:28:04 »
si no lo puedes simular en el mplab no te va afuncionar mucho menos en el circuito real te aconsejo que leas bien los registros de interrupciones que no son difisiles de entender
dvd

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: El microcontrolador se bloquea y no funciona el WDT?
« Respuesta #2 en: 08 de Junio de 2007, 08:49:32 »
epir sería poco responsable decirte "tu problema es A o B" ya que tendría que conocer más profundamente tu pcb, tu aplicación y el entorno para poderte afirmar tal cosa.

Creo que estas teniendo 'graves' problemas con un hardware pobremente diseñado para algo tan ruidoso como el manejo de un motor.  No achaques al pic problemas que de seguro te pasarán con otro microcontrolador, el problema lo estás teniendo en tu PCB.

Veo que has usado una fuente de PC, no se 'qué' fuente has usado y medir el rizado no es la única forma de evaluar una fuente de alimentación, hay muchos otros parámetros a tener en cuenta los cuales pueden hacer que tu circuito funcione o no.  Por ejemplo , uno de las cosas es como funciona dicha fuente frente a variaciones bruscas en el consumo, o tal vez lo que para tí o para tu circuito sea una variación brusca no lo sea para la fuente que ni siquiera sintió el cambio.

Otra cosa que puedes tener en cuenta es que en los motherboards de los PCs tienes "otra fuente" ya que la calidad de la de las PCs no alcanzan para lo que necesita el mother y el microprocesador.  Allí no solo verás que reducen la tensión de 5V a 1,8 o 1.7V dependiendo del micro que uses, sino que también filtran "y mucho" la fuente de la PC.

Además la fuente de la PC está siempre teniendo un consumo que le permite estar en una zona de rango dinámico que hace que actúe bien.


De todas formas, no creo que tu problema esté con al fuente de alimentación (aunque usar una fuente de PC no sería ni cerca mi propuesta de solución para el sistema que planteas).

Hacer un PCB inmune a ruidos magnéticos y de switcheo no es una tarea trivial, es tal vez de las cosas más complicadas que hay.

Por último, no soy quien para decirlo pero tal vez tengas un problema en tu código o tal vez tu código sea simple y no haya problemas aparentes y el inconveniente esté en el compilador que haga algo raro con tu código y no lo haga bien (los compiladores suelen tener bugs y CCS es un gran amigo de ellos).  Además, el uso del WDT debe ser limitado y concienzudamente colocado.  Puede que tu micro no se 'tilde' , simplemente esté ejecutando instrucciones en otro lugar que no deba.  Esto puede deberse a un error de lógica en tu código, a ubicar mal el WDT (poner clrwdt en todos lados no es la solución a estas cosas) o a que tú no tengas prevista cierta entrada o cierta secuencia en las entradas y que realmente en la realidad sí ocurran... por más que tu creas 'ey, no debería ocurrir'... esas cosas pasan je.

Lo que comentas de los reles que se dañan... es algo muy raro y lo adjudico nuevamente a un hardware no bien diseñado.

Una cosa es hacer algo que funcione en laboratorio y otra cosa es hacer algo que funcione en el mundo real.  hacer un prototipo de laboratorio te puede llevar un mes, hacerlo que funcione en el mundo real te puede llevar meses...



- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado epir

  • PIC10
  • *
  • Mensajes: 8
Un saludo amigo
« Respuesta #3 en: 08 de Junio de 2007, 19:33:10 »
Muchas gracias por tu colaboracion, resulta que la instruccion sleep estaba funcionando solo que no me habia fijado TO y PD, con los cuales puedo verificar la causa de la salida de bajo consumo, corregi esto para que no se ejecute el programa totalmente sino cuando verdaderamente llega una señal de interrupcion, hasta el momento ha trabajo bien todo el sistema.   En cuanto a lo que me recomiendas de la PCB, se realizaron para un sistema de potencia, cada contactor se activo con opto acoplador y triac, con un red RC, para manejo de cargas inductivas, ya que la bobina del contactor es de AC, por lo tanto posee una elevada corriente de mantenimiento 0.9A.  teniendo encuenta esta corriente cada camino del pcb se realizo en base ala cantidad de corriente que circula.

Quiza lo que me asombra es que cuando el microcontrolador se bloquea, no esta trabajando el motor, simplemente se bloquea solo.  Bueno sigo teniendo el sistema total en prueba, aunque hace mucho trabajo con microcontroladores siempre he tenido la duda de como organizar un buen esquema electrico para el MCLR  del micro, no se si conoscan el libro de Microcontroladore PIC de Jóse Angulo, bueno estos son los que he implementado en muchos diseños solo que hasta ahora ha resultado este inconveniente.

Soy un apasiondo de los microcontroladores auque muchos colegas usuarios de Motorola, algunas veces me han comentado de la inestabilidad del microcontrolador pic solo que no creia tal cosa. 
« Última modificación: 08 de Junio de 2007, 19:35:57 por epir »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Un saludo amigo
« Respuesta #4 en: 08 de Junio de 2007, 21:19:15 »
Soy un apasiondo de los microcontroladores auque muchos colegas usuarios de Motorola, algunas veces me han comentado de la inestabilidad del microcontrolador pic solo que no creia tal cosa. 

Jaja, tengo años usando pics, en aplicaciones tan variadas como interesantes.  Aplicaciones que DEBEN funcionar 24 horas los 365 días del año y no he tenido inconvenientes.

Esto que te han dicho es uno de los argumentos más comunes que he oído y sobre todo 100% sin fundamento... a esos que dicen esas cosas me gustaría que me demuestren cómo y donde lo vieron fallar y de esa forma ver si es el pic , o el hardware... o el software... casi con seguridad son las 2 últimas cosas.

Hace poco estuve un "altercado" con alguien que me decia "este pic no anda... los pics son una porqueria... fijate el ruido que tiene en esta pata... capta la señal de 50Hz..." .  ¿Qué habia ocurrido? La pata estaba como entrada... y 'al aire', por ende, una hermosa entrada CMOS de alta impedancia la cual por supuesto captará ruido ambiente.

Esto te pasa con un pic, con una compuerta y con cualquier circuito CMOS!! Lo que hace falta en esos casos es saber de electrónica y no pretender que el pic 'adivine' qué queremos hacer, jejeje.

Saludos

PD: el CCs me hacía cosas raras en algún momento razón por la cual lo descarté completamente para mis desarrollos, hay algunos que lo adoran pero no soy yo uno de la lista  :).  Si el pic se cuelga sin estar conectado al motor, entonces... te aseguro que es  software.  Ya sea porque como te dije, ocurra una secuencia que no tengas prevista o que el código tenga algún bug o bien el CCS sea el problema...

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: El microcontrolador se bloquea y no funciona el WDT?
« Respuesta #5 en: 11 de Junio de 2007, 19:42:42 »
Hola epir!

Le puedes pegar un vistazo a esto:

http://www.todopic.com.ar/foros/index.php?topic=16135.0

Ahí escribí en su día mi experiencia a la hora de configurar un buen wdt (y lo más efectivo posible).

También puede resultar interesante esta otra cosa:

http://www.todopic.com.ar/foros/index.php?topic=11903.0

Que tengas mucha suerte colega! Ya nos comentas.  :mrgreen:

PD: Perdona por el rollazo que te paso para que te leas, pero, si te ahorran unas horas de trabajo... bendito rollazo, ¿no?  :D :D


Un saludo desde Alicante.