Estoy trabajando en un proyecto que implica mucha conmutación de electroimanes.
La conmutación está controlada por un microcontrolador de la serie PIC32MX6xx, que determina los estados necesarios de 80 electroimanes de 12 V CC (cada uno de los cuales consume entre 15 y 200 mA) y envía estos datos a una serie de registros de desplazamiento 74HC595 interconectados. Cada una de las salidas de estos registros de desplazamiento enciende/apaga un MOSFET, que a su vez enciende su respectivo electroimán.
El problema que estoy experimentando es que, cuando se conmutan los electroimanes, el PIC se reinicia intermitentemente. No hay ninguna secuencia/carga de conmutación en particular que provoque este reinicio, sino que ocurre de forma completamente aleatoria. A veces tarda unos 30 segundos de conmutación en reiniciarse, y otras veces casi 15 minutos.
Lo que sí sé es que es el reinicio del MCLR el que tiene lugar - lo determiné monitorizando el registro RCON, donde el bit EXTR-flag (evento de reinicio del MCLR) se pone en cada uno de esos reinicios. Este es el circuito inicial del PIC, con un enfoque específico en el pin MCLR y los condensadores de desacoplamiento como se recomienda en la hoja de datos del PIC.
Se puede ver en el diagrama, que hay una resistencia de 1k entre GND y el interruptor, así como una resistencia pull-up de 10k en el pin MCLR. Después de observar la recomendación de un condensador en el pin MCLR para evitar reinicios involuntarios, añadí un condensador cerámico de 100 nF entre el pin MCLR y GND. Aún así, los reinicios siguen ocurriendo de forma intermitente, aunque parece que el intervalo entre reinicios es mayor que sin el condensador.
Con la esperanza de eliminar la ocurrencia del reinicio, sustituí la resistencia de 1k entre el interruptor y GND, así como la resistencia de 10k entre el pin MCLR y VDD por resistencias de 0 ohmios (cortocircuitos). Esto aseguraría que la clavija MCLR esté siempre conectada a VDD. El condensador de 100 nF también estaba presente. Por lo tanto, esencialmente el único componente conectado al pin MCLR es el condensador de 100 nF entre el pin MCLR y GND. Sin embargo, los reinicios intermitentes siguen ocurriendo.
El sistema está alimentado por un transformador industrial con una entrada trifásica de 380 VAC y una salida de 12 VDC. Esta salida de 12 VDC es la entrada de dos reguladores de voltaje LM1085: uno con una salida de 5 V (que alimenta todos los circuitos integrados lógicos) y el otro con una salida de 3,3 V (que alimenta el PIC). Justo antes de las entradas del regulador de voltaje (entradas de 12 VDC) hay un circuito supresor de sobretensiones formado por un MOV y un diodo snubber.
El circuito de conmutación MOSFET para cada electroimán es el siguiente:
Como puede verse, el circuito de conmutación es una topología de circuito de conmutación de lado alto (común negativo), que utiliza tanto un transistor NMOS como PMOS para la conmutación. Nótese que también hay un diodo snubber/flyback. El LED sólo está ahí para indicar el estado del electroimán. Este es el circuito utilizado para cada electroimán del sistema.
Como el pin MCLR es una señal activa-baja, el único evento que puedo prever que desencadenaría el evento de reinicio es si hay una caída momentánea de VDD (ya que el pin MCLR está conectado directamente a VDD). Sin embargo, ya que VDD es proporcionada por un regulador de voltaje LM1085, mi conjetura sería que un repentino pico de voltaje "positivo" en el suministro de 12 VDC no causaría tal caída en la salida del regulador de voltaje. Por lo tanto, la única explicación que se me ocurre es que la tensión de alimentación probablemente esté cayendo momentáneamente a un nivel tal que provoque una tensión lo suficientemente baja en la línea VDD que desencadene el evento de reinicio de la MCLR, aunque no puedo entender del todo cómo ocurriría eso. La única otra posibilidad en mi opinión podría ser que un pico de voltaje se propague en la señal GND, causando que el diferencial de voltaje entre VDD y GND se vuelva lo suficientemente pequeño como para estar dentro del rango considerado como una señal LOW en la línea MCLR, ya que la "tierra" del microcontrolador está momentáneamente por encima de 0 V durante la ocurrencia del pico de voltaje.
Algunas respuestas a posibles preguntas anticipadas:
- Conectar los diodos flyback directamente a los electroimanes no es práctico debido a la ubicación de los electroimanes. Por ello, los diodos flyback se colocan junto con el circuito de conmutación MOSFET en la placa de circuito impreso de control.
- Las salidas del circuito de control se terminan en un bloque Krone, donde también se terminan las líneas de señal positiva de los electroimanes. La distancia entre el bloque Krone y los electroimanes es de entre 2 y 10 metros.
- Actualmente no tengo acceso a un osciloscopio para ver lo que realmente sucede en las líneas VDD y MCLR.
Teniendo en cuenta las precauciones que ya he tomado contra los picos de tensión/subidas, ¿qué me falta todavía? Es absolutamente crucial que el PIC no se reinicie intermitentemente como lo hace actualmente.
Se agradecerán mucho las aportaciones, los consejos y los comentarios.
Gracias de antemano.
1 votos
¿La salida del PIC está conectada directamente a la puerta del MOSFET?
0 votos
Excelente pregunta.
0 votos
@Trevor: No, es la salida del registro de desplazamiento la que está unida directamente a la puerta del MOSFET de canal N. ¿Es esto una preocupación?