Restablecimiento intermitente de MCLR en PIC32: implica cambiar electroimanes

Estoy trabajando en un proyecto que involucra muchos cambios de electroimanes.

La conmutación está controlada por un microcontrolador de la serie PIC32MX6xx, que determina los estados requeridos de 80 electroimanes de 12 V CC (cada uno con un consumo de aproximadamente 15-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 activa o desactiva un MOSFET, que a su vez activa su electroimán respectivo.

El problema que estoy experimentando es que, cuando se cambian los electroimanes, el PIC se reinicia de forma intermitente. No hay una secuencia/carga de conmutación en particular que provoque este restablecimiento: sucede completamente al azar. A veces se necesitan unos 30 segundos de cambio para restablecerlo y, en otras ocasiones, casi 15 minutos.

Lo que sí sé es que es el restablecimiento de MCLR lo que se lleva a cabo; lo determiné al monitorear el registro RCON, donde el bit de indicador EXTR (evento de restablecimiento de MCLR) se establece en cada uno de esos restablecimientos. Este es el circuito inicial del PIC, con un enfoque específico en el pin MCLR y los capacitores de desacoplamiento según lo recomendado por la hoja de datos del PIC.

Pin MCLR y condensadores de desacoplamiento

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 notar la recomendación de un capacitor en el pin MCLR para evitar reinicios no intencionales, agregué un capacitor cerámico de 100 nF entre el pin MCLR y GND. Aún así, los reinicios aún ocurren de manera intermitente, aunque parece que el intervalo entre reinicios fuera más largo que sin el capacitor.

Con la esperanza de eliminar la ocurrencia de reinicio, reemplacé la resistencia de 1k entre el interruptor y GND, así como la resistencia de 10k entre el pin MCLR y VDD con resistencias de 0 ohmios (cortocircuitos). Esto aseguraría que el pin MCLR siempre esté conectado a VDD. El condensador de 100 nF también estaba todavía presente. Por lo tanto, esencialmente el único componente conectado al pin MCLR es el capacitor de 100 nF entre el pin MCLR y GND. Aún así, los reinicios intermitentes continúan ocurriendo.

El sistema es alimentado por un transformador industrial con entrada trifásica de 380 VAC y salida de 12 VDC. Esta salida de 12 VCC es luego la entrada a 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 V CC) también hay un circuito de supresión de sobretensiones que consiste en un MOV y un diodo amortiguador.

El circuito del interruptor MOSFET para cada electroimán es el siguiente:Circuito de conmutación de electroimán

Como puede verse, el circuito de conmutación es una topología de circuito de conmutación de lado alto (negativo común), que utiliza un transistor NMOS y PMOS para la conmutación. Tenga en cuenta que también hay un diodo de retorno/amortiguador en su lugar. El LED está puramente allí para indicar el estado del electroimán. Este es el circuito utilizado para cada electroimán en el sistema.

Dado que el pin MCLR es una señal baja activa, el único evento que puedo prever que desencadenaría el evento de reinicio es si hay una caída momentánea en VDD (ya que el pin MCLR está conectado directamente a VDD). Sin embargo, dado que VDD es proporcionado por un regulador de voltaje LM1085, supongo que un repentino pico de voltaje "positivo" en el suministro de 12 VCC 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 el voltaje de suministro probablemente esté cayendo momentáneamente a un nivel tal que provoque un voltaje lo suficientemente bajo en la línea VDD que active el evento de reinicio de MCLR, aunque no puedo entender cómo sería eso. suceder. En mi opinión, la única otra posibilidad podría ser que un pico de voltaje se propague en la señal GND,

Algunas respuestas a posibles preguntas anticipadas:

  • La conexión de los diodos flyback directamente a los electroimanes no es práctica debido a la ubicación de los electroimanes. Por lo tanto, los diodos flyback se colocan junto con el circuito de conmutación MOSFET en la PCB del circuito de control.
  • Todas las salidas del circuito de control terminan en un bloque Krone, donde también terminan las líneas de señal positiva de los electroimanes. La distancia desde el bloque Krone hasta los electroimanes reales es de 2 a 10 metros.
  • Actualmente no tengo acceso a un osciloscopio para ver qué sucede realmente en las líneas VDD y MCLR.

Dadas las precauciones que ya tomé contra los picos/sobrevoltajes de voltaje, ¿qué me falta todavía? Es absolutamente crucial que el PIC no se reinicie de forma intermitente como lo hace actualmente.

Los aportes, consejos y comentarios serán muy apreciados.

Gracias de antemano.

¿Esa salida del PIC está vinculada DIRECTAMENTE a la puerta de ese MOSFET?
Excelente pregunta.
@Trevor: No, es la salida del registro de desplazamiento la que está vinculada directamente a la puerta del MOSFET de canal N. ¿Es esto una preocupación?

Respuestas (3)

Esto huele fuertemente a que las corrientes de retorno del solenoide y las rutas de retroceso inductivo no se manejan correctamente. Hay picos de voltaje grandes y rápidos en los solenoides. A veces, una de estas parejas es suficiente para el microcontrolador como para confundir su lógica interna. El mecanismo de reinicio se dispara, pero no por el pin MCLR externo.

¡Absolutamente lo primero que debe hacer es AÑADIR UN TAPÓN DE BYPASS a través de los pines de alimentación y tierra del micro! Coloque una tapa de cerámica de 1 µF físicamente lo más cerca posible entre los pines de alimentación y tierra. Este es exactamente el tipo de síntoma que causaría la falta de un tapón de derivación.

Aparte de eso, quedan dos sospechosos obvios: rutas de alimentación y corriente de retorno mal diseñadas, y contragolpes inductivos mal manejados.

Su esquema no nos da ninguna idea del diseño físico de la potencia y las corrientes de retorno a los solenoides. El bucle de corriente de la fuente de alimentación al solenoide y de vuelta a la fuente de alimentación debe tener lo menos posible en común con el bucle de alimentación del microcontrolador. Por ejemplo, si los dos comparten una sección significativa de un cable a tierra, entonces las altas corrientes de solenoide en ese cable a tierra podrían causar un rebote a tierra para el micro.

Idealmente, hay alimentaciones de energía y tierra separadas para los solenoides y el circuito digital, con estos conectados en un solo lugar cerca de la fuente de alimentación. Luego, por supuesto, debe haber una derivación adecuada de la energía en cada punto de uso en el lado digital.

Tiene un diodo que se supone que atrapa el retroceso inductivo, pero no ha mostrado ninguna especificación. No, un 1N400x no es apropiado aquí. Prefiero ver un diodo Schottky, debido a sus tiempos de respuesta muy rápidos.

La colocación del diodo también es importante. Es bueno tener algo de protección en el circuito del controlador en caso de que sucedan cosas, pero para lidiar realmente con el retroceso inductivo, debe derivarse lo más cerca posible de la fuente. Desea contener la corriente desagradable en un bucle lo más pequeño y local posible. Small minimiza su radiación y acoplamiento capacitivo a otros lugares. Local evita que provoque rebotes en el suelo y similares en otras partes del circuito.

Como experimento, intente agregar diodos Schottky en reversa a través de cada solenoide justo en el solenoide . Tal vez no pueda ponerlos allí en la producción final, pero haga el experimento de todos modos para ver si las cosas cambian.

Sospecho que al observar una higiene adecuada, las cosas funcionarán mucho mejor. Después de arreglar este lío, reflexione sobre todas las veces que le dijeron que usara tapas de derivación, coloque con cuidado las rutas de corriente de retorno, mantenga los bucles pequeños, etc., y pensó "bypass schmypass, blah, blah" . Ahora sabes por qué es importante. Sí, a veces puedes salirte con la tuya sin esto, pero tarde o temprano te alcanzará. Simplemente lo hizo.

Muchas gracias por tu respuesta Olin. Hay muchas tapas de derivación lo más cerca posible de los pines de alimentación y tierra del PIC, como se sugiere en la hoja de datos. Estoy muy seguro de que las tapas de derivación son suficientes, pero lo comprobaré dos veces. Según mis respuestas anteriores a los comentarios de otros usuarios, un cierto culpable es el uso de rutas de retorno a tierra comunes (y líneas de suministro de energía) hacia y desde los solenoides. La separación de estos es sin duda una mejora del sistema. Actualmente tengo diodos 1N4007 y los reemplazaré con los diodos Schottky según su sugerencia.
comentario anterior continuación Estoy seguro de que tengo una buena idea de cómo mejorar el diseño alrededor de la tierra y las líneas de suministro de energía. La parte más difícil de comprender/resolver correctamente para mí es el manejo del retroceso inductivo. Es extremadamente difícil llegar a los solenoides reales para agregar los diodos para un experimento. Lo mejor que puedo hacer es construir una plataforma pequeña con solenoides similares y simular el sistema real y ver qué sucede. Con respecto a su sugerencia para los diodos Schottky, ¿son por lo general una opción mucho mejor que los diodos 1N400x estándar para tal aplicación?
@wave: los diodos Schottky suelen ser mejores para detectar el retroceso inductivo debido a sus rápidos tiempos de respuesta. Esto es esencial si se usa PWM, donde la corriente del pulso anterior sigue fluyendo cuando comienza un nuevo pulso. 1N400x son demasiado lentos para eso. Debido a la menor caída de voltaje de los Schottky, dejan que la corriente circule un poco más antes de apagarse. Eso puede ralentizar el tiempo de apagado de los relés. La resistencia del tamaño correcto en serie se encarga de eso. Esencialmente, obtienes un voltaje de retroceso finito administrado de esa manera.
Veo lo que quieres decir con los diodos Schottky. En mi caso, no hay PWM en marcha, pero si se puede usar un diodo mejor, entonces parece lógico mejorar el diseño en ese aspecto. Revisé algunas hojas de datos de diodos Schottky y el 1N5819 parece ser una opción adecuada en mi aplicación. Tengo otra pregunta que quiero hacerle, pero le enviaré un mensaje de chat para eso, ya que se desvía de esta pregunta original.

Examinemos sus posibilidades.

El PIC tiene numerosas rutas de reinicio con varias banderas de registro para indicar la fuente del reinicio. MCLR es uno de ellos. Ya intentó vincular el MCLR directamente al riel de suministro para el PIC, por lo que puede descartar el ruido en ese pin como la fuente de este evento.

El PIC también está equipado con un reinicio de encendido que se produce si se desconecta y se vuelve a aplicar la alimentación. Asumo que usted dice que el indicador EXTR está configurado para que SOLO ese indicador esté configurado, es decir, todos los demás indicadores no están configurados. Como tal, no perdió energía en el chip.

De manera similar, la energía no se redujo o se establecería la bandera de apagón.

Entonces, ¿qué nos deja eso? El chip hizo algo internamente que no puedes explicar.

¿Qué podría causar eso? El chip tiene un regulador de voltaje interno para impulsar su circuito interno y requiere esa tapa C1. La tapa debe estar muy cerca del pin VCAP. Supongo que por ahora seguiste esas instrucciones.

Entonces, suponiendo que todo lo anterior es correcto y sabemos que el reinicio ocurre cuando cambia los solenoides, ¿qué podría estar sucediendo?

No ha indicado en sus dibujos o texto cómo se conectan las rutas de retorno (tierras) para los solenoides. Sin embargo, la posición del diodo de retorno D5 sugiere que las tierras son comunes entre la carga y la lógica. Eso sería un error. Las tierras de los solenoides deben regresar al regulador de 12 V a través de su propio camino, separadas del sistema de tierra de 5 V y el diodo de retorno debe conectarse a esa tierra. Si no lo hace, puede causar un aumento significativo, o una compensación, en el terreno de los PIC, lo que hará cosas impredecibles internamente.

Dado que las longitudes de sus cables son tan largas, también sugeriría agregar un pequeño circuito amortiguador (RC) a través del diodo de retorno.

Además, al observar el circuito de su controlador, no veo ninguna resistencia en la puerta de Q25.

Los MOSFET tienen una capacitancia significativa en la puerta tanto del drenaje como de la fuente. Eso significa que habrá un pico de corriente significativo en la salida del 74HC595 cuando encienda y apague el MOSFET. Además, cuando lo apague, el drenaje estará cerca de los 12 V y el 74HC595 tendrá que bajarlo del condensador de fuente de compuerta. Cómo se relaciona eso con el PIC y qué hace eso con las partes internas del PIC es indeterminado.

Gracias por la respuesta. Desafortunadamente, no verifiqué si se habían establecido otras banderas además de la bandera EXTR después del reinicio. Eso es ciertamente algo que tendré que verificar dos veces para estar seguro. El condensador está a unos 12 mm del pin VCAP debido al enrutamiento de las huellas de otros pines. Como señaló, los terrenos entre los electroimanes y la lógica son de hecho comunes, lo que de hecho es una señal de alerta. Acerca del circuito amortiguador en el diodo flyback, ¿cuál sería una constante de tiempo adecuada para esto? ** el comentario continuó en una nueva publicación de comentarios después de esta **
** continuación del comentario anterior ** De hecho, no hay resistencia en la puerta de Q25. Su comentario sobre esto plantea una posible explicación para otro fenómeno: en algunos casos aislados, algunos transistores permanecieron "encendidos" después de que las salidas 74HC595 cambiaron a 0 (apagado). Cuando esos electroimanes en particular debían volver a encenderse, los transistores NMOS se quemaron (la corriente máxima especificada para los transistores NMOS es de 0,5 A, mientras que el PMOS está especificado en 4,2 A). Este es otro problema que aún tengo que resolver. Comenzaré un hilo separado sobre esto pronto y pondré el enlace en la pregunta original.
@wave.jaco El amortiguador RC deberá tener al menos * 10 su tiempo mínimo de conmutación. Sí, esa pequeña resistencia en línea ayuda a proporcionar mucho aislamiento cuando se trata de cargas inductivas que crean picos bastante incómodos. Probablemente sea prudente agregar otro sobre el canal N a la puerta del canal P por la misma razón.
Gracias por la aclaración sobre la constante de tiempo RC del amortiguador. Esa resistencia en línea en los transistores podría ser justo lo que se necesita para evitar que se dañen los transistores, como mencioné en mi comentario anterior. Supongo que también protegerá al 74HC595 de estos picos. En los casos en que los transistores se dañaron como describí, también se frió el respectivo 74HC595. ¿Cuál sería un valor adecuado para esta resistencia? Si entiendo correctamente, ¿esta resistencia simplemente disipará esa liberación de carga más lentamente de lo que lo hace actualmente (con el cortocircuito)?
comentario anterior continuación Volviendo a la cuestión de la tierra entre los electroimanes y el resto del sistema. Mencionó anteriormente que los electroimanes deben tener su propio camino de regreso a tierra, separado del resto de los caminos de retorno a tierra del sistema. ¿Entiendo correctamente si digo que el retorno a tierra de los electroimanes debe ir directamente a la tierra del transformador de 12 V CC, y que el resto del sistema (la lógica del sistema de 5 V y el PIC) puede compartir un retorno a tierra diferente pero común? camino a la misma tierra del transformador de 12 VDC?
@wave.jaco sí, los terrenos deberían encontrarse en algún lugar antes del regulador U1. Si hay cables largos desde la placa hasta la fuente, es posible que necesite más filtrado en la entrada al regulador... mayor volumen y un bypass rápido. OBSERVE el desplazamiento a Vgd en el mosfet de canal n que causará la separación del suelo. Si es demasiado, es posible que deba optoaislarlo.
@wave.jaco Re-in-lines... su misión es limitar la corriente en el pin del IC, pero también ralentizará el tiempo de conmutación del MOSFET, por lo que demasiado grande es malo. Se justifica algo de experimentación.

Al menos 4 rutas para trastornar la MCU (1) acoplamiento de campos eléctricos a MR (2) acoplamiento de campos magnéticos (3) colapso de VDD o sobretensión de VDD (4) alteración de GND, con las rutas de retorno FET que comparten GND con MCU

Abordemos (4) primero:

esquemático

simular este circuito : esquema creado con CircuitLab

Es interesante que una BATERÍA LOCAL en los controladores FET, utilizando inductores de 1uH en la línea de 12 voltios, con 0,03 ohm Rdampen, aísle la basura del controlador FET. Ese 1uH necesita manejar alta corriente: 30 solenoides * 0.2amp = 6 amperios.

Observe la separación de GND entre los controladores FET y MCU. Al hacer la BATERÍA LOCAL, las corrientes transitorias en GND son muy pequeñas; el capacitor de 1,000uF proporciona las sobrecorrientes; si cambiar un solenoide toma 10uS, a 0.2 amperios, el VDD alterado en los controladores FET es

d V / d T = yo / C
d V = yo T / C

d V = 0.2 a metro pag 10 tu S / 0.001 F a r a d = 2 mi 6 / 1 mi 3 = 2 metro i yo yo i V o yo t s

Si la BATERÍA LOCAL no detiene los reinicios, entonces una placa protectora puede ayudar. Para capturar la inyección de carga de Efield, ate el blindaje con CABLE CORTO a MCU TIERRA; ¿Está utilizando un plano de tierra debajo de la MCU?

===========================================

¿Qué voltaje alterado, debido a corrientes rápidamente conmutadas a través de MOSFET? [ advertencia: este ejemplo pretende molestarlo, motivarlo a que preste atención a la planificación de la PCB (o varias PCB) y los bucles. ]

Suponga que tiene 0,2 amperios, cambiando en 5 nanosegundos. Fluyendo en un cable largo. Acoplamiento magnético en un bucle de 0,1 metros * 0,1 metros (4 pulgadas cuadradas). ¿Cuál es el voltaje inducido, si la distancia es de 10 cm (0,1 metros)?

Usa la fórmula

V i norte d tu C mi = [ METRO tu 0 METRO tu R A r mi a / 2 pag i D i s t a norte C mi ] d yo / d T

Área = 0,1*0,1 = 0,01 metros. La distancia es de 0,1 metros. Mu0 es 4*I*10^-7. La fórmula se convierte

V i norte d tu C mi = 2 mi 7 A r mi a / D i s t a norte C mi d yo / d T

Vinduce = 2e-7 * 0,01/0,1 * 40 millones de amperios/segundo Vinduce = 2e-7 * 0,1 *40e+6 = 8 * e-7 * e+6 = 8 * e-1 = 0,8 voltios.

Dos FETS de conmutación simultánea: 1,6 voltios Tres FETS de conmutación simultánea: 2,4 voltios

Así que revisemos el sistema GND:

esquemático

simular este circuito

Gracias por la respuesta. Como señaló Trevor, los terrenos compartidos entre los controladores/electroimanes FET y MCU es una causa muy probable de los reinicios. En cuanto al concepto de BATERÍA LOCAL, ¿sugiere que agregue el inductor de 1 uH y 1000 uF por cada 30 imanes? Si la alteración de VDD (según sus cálculos) es de 2 mV por imán, ¿se sumaría proporcionalmente si se conmutan varios imanes simultáneamente? Además, ¿qué quiere decir con las "corrientes de sobretensión" que proporciona el condensador de 1000 uF? Hay un plano de tierra debajo de la MCU. Toda la superficie "no utilizada" en la PCB es un plano de tierra.
La tapa de 1000 uF puede suministrar los 100 solenoides, si lo desea. Tenga en cuenta la resistencia de 0,03 ohmios, a la izquierda de la 1uH. Ese valor se selecciona de sqrt (L/C) para amortiguar, para evitar que suene ese L+C. Los cables largos a los solenoides, a 1uH/metro (regla general) son otra causa del zumbido. Puede escalonar la conmutación utilizando diferentes valores de resistencias desde el registro de desplazamiento hasta las puertas FET; pero delta_R de 100 ohmios * 1000pF de Cgate es solo un cambio de 100 nanosegundos en la demora. Considere soldar un cable n.º 22 en paralelo con la conexión a tierra existente para unir varias piezas de GND. Sí, esos 2mV se suman.
¿Entiendo correctamente que quiere decir que el límite de 1000 uF filtra las sobrecorrientes, en lugar de proporcionarlas? Gracias por la aclaración sobre la resistencia de 0,03 ohmios. Veo que su diagrama dice que es de 100 ohmios. ¿Es esto solo un error tipográfico, o esta resistencia está allí además de la resistencia de 0,03 ohmios, por lo tanto, queda un total de 100,03 ohmios del inductor de 1 uH? Al "escalonar la conmutación", ¿quiere decir agregar resistencias de varios valores a las puertas FET para tener en cuenta un promedio de las posibles longitudes de los cables a los electroimanes? No estoy muy seguro de lo que quieres decir con este "asombroso".
Esa resistencia debe ser de 0,03 ohmios; gracias por mencionar ese error. Con respecto a las sobrecorrientes, dado que los FET proporcionan repentinamente corriente a los solenoides, queremos que los transitorios de corriente se suministren localmente desde el capacitor de 1000 uF; el inductor es solo una forma de alentar adicionalmente a que los transitorios SOLO provengan de 1,000uF; que 0.03 amortigua el circuito LC. La corriente continua para el solenoide pasará por 0.03ohm+1uH. Para escalonar la conmutación, puede hacer que los FET cambien con varios retrasos, pero sus 100 señales de control provienen de ese registro de desplazamiento. Necesitaría retrasos RC, además de Schmitts.