Sí, eso es un haiku. (EDITAR: lo arregló ... ahora es en realidad un Haiku)
No, no estoy sonriendo.
Estoy haciendo algunas pruebas estándar; viendo lo que sucede cuando uno de los dos rieles de alimentación se acorta a GND en una PCB que diseñé. Estamos hablando de un riel de alimentación de 12 V suministrado por una fuente de alimentación de sobremesa, con un convertidor reductor de 5 V integrado que suministra el otro riel en la PCB (al que está conectado mi ATmega328PB).
El riel de 12 V tiene un montón de conectores de barril de CC que estarán expuestos a los usuarios finales. Entonces, naturalmente, decidí meter un destornillador de joyero en uno de ellos para realizar mi prueba de corto circuito.
He aquí, una nube de humo de mi ATmega328PB.
Creo que eso significa que sucedió una de las siguientes cosas:
Tiempo esquemático
Aquí está el esquema de las conexiones al ATmega328PB:
Aquí están todos los esquemas de las cosas en el diseño que tienen una conexión con el riel de 12 V (el riel VBAT +) y que controlan las rutas de retorno de corriente GND:
Y aquí hay un esquema de los conectores de barril y los pines de detección de conector asociados (tenga en cuenta que estos se conectan directamente a algunos de los pines del ATmega328PB sin resistencia en serie):
El plan de corto circuito
El plan para lidiar con los cortocircuitos en el riel de 12 V era simplemente apagar el FET de canal N LOAD_FET debido a una de las dos condiciones lógicas que se cumplen en el firmware:
- El muestreo de ADC a una frecuencia de 1 Hz detectaría la condición de sobrecorriente y haría que el interruptor FET_LOAD dejara de conducir, cortando así la corriente de cortocircuito
- El voltaje que suministra el ATmega entraría en una condición de caída de voltaje, y la MCU restablecería e inicializaría el interruptor FET_LOAD a "apagado", cortando así la corriente de cortocircuito
El gran humo
Aquí hay una sonda de osciloscopio de lo que le sucede al riel Vbat + en CH1 (amarillo) y al riel +5 en CH2 (azul) al acortar Vbat + a GND mediante la aplicación de un destornillador de joyero a los cables expuestos de un cable que está enchufado en el circuito de jack de barril (no pegué el destornillador en el receptáculo ) mientras está siendo alimentado por un suministro de sobremesa que se establece en 12V a 5 amperios:
Después de que eso sucedió, el ATmega simplemente se calentó cada vez que encendí la placa, y efectivamente estaba actuando como un cortocircuito entre su entrada de + 5V y la señal de tierra. Desoldeé el ATmega con aire caliente y probé el FET_LOAD N-channel FET para ver si estaba frito. De hecho, había fallado de tal manera que ya no se apagaba o encendía por completo cuando se aplicaba un voltaje de puerta a +5 o señal a tierra, sino que estaba operando en algún lugar de la zona crepuscular. Caía unos 2,3 voltios mientras realizaba ~ 200 mA, ya sea que estuviera "encendido" o "apagado" cuando se enchufó una carga en el conector del barril.
Corazonada
Tenía el presentimiento de que, debido a que el FET estaba dañado, el vector de daño al ATmega podría haber sido causado por la transmisión de un alto voltaje a través del drenaje del FET a su puerta y hacia la MCU. Hice algunas pruebas posteriores con voltajes más bajos que suministran el riel de 12V. Tenga en cuenta que las primeras tres imágenes son básicamente las mismas, pero con diferentes corrientes máximas. Una vez que el ATmega se apaga (debido al voltaje colapsado en el riel Vbat +), la señal LOAD_GND_ENABLE suministrada por la MCU (azul, abajo) a su vez se baja, cortando el interruptor FET_LOAD .
Leyenda:
CH1 = Voltaje a través de Rshunt (0.005 ohm) CH2 = Voltaje en la señal LOAD_GND_ENABLE (conectado a ATmega)
Vbat + suministrado a 6V:
Vbat + suministrado a 7V:
Vbat + suministrado a 8V:
Vbat + suministrado a 9V:
En ese último, la corriente nunca dejó de aumentar y la señal LOAD_GND_ENABLE hizo un baile funky, pero en general parece que los límites máximos nunca se violaron en el pin LOAD_GND_ENABLE (al menos no creo que fueran ... Solo tengo un alcance de 2 canales y habría tenido que haber medido el riel de + 5V para saber cuál es el voltaje en LOAD_GND_ENABLE wrt Vcc).
Próximos pasos
Solo me queda 1 tablero que se puede sacrificar, por lo tanto, mi plan es:
Use un ATmega328PB en blanco para que todos sus pines tengan el valor predeterminado de alta impedancia sin periféricos configurados / inicializados. Repita la prueba de cortocircuito para ver si ATmega328PB todavía se eleva en humo. Si no deja de funcionar, entonces la MCU debe haber fallado porque estaba suministrando / hundiendo demasiada corriente de uno de sus pines configurados como salida mientras ejecutaba firmware en las pruebas anteriores.
Pruebe con un ATmega328PB montado en una placa de conexión (desafortunadamente este chip no viene en paquetes DIP) conectado a la PCB a través de alambres. Comience selectivamente a conectar un solo cable a la vez, ejecute la prueba y vea qué cable termina siendo el responsable de freír el ATmega328PB.
Ordene una nueva PCB de muestra con diseño alterado de modo que todos los rastros que se conectan al ATmega328PB estén conectados por puentes de soldadura que pueden soldarse a mano mientras lo pruebo. De esta forma, la prueba de cortocircuito (y cualquier otra prueba) se puede realizar con el ATmega conectado a un número limitado de señales a la vez, y facilita la conexión de todos los demás circuitos externos a estos puentes de soldadura para controlarlos independientemente del ATmega .
Sí, realmente es una pregunta (s)!
Y la (s) pregunta (s) es:
- ¿Alguien ve algo aquí que yo no? ¿Es obvio? Espero que no sea obvio ...
- ¿Cuál sería tu próximo paso?
fuente
Respuestas:
Creo que su interruptor en la línea LOAD_GND es probablemente la parte culpable aquí, combinado con las líneas de detección de jack desprotegidas al micro (lo que señalaría que están conectadas a LOAD_GND para cualquier jack donde NO haya un enchufe insertado.
Considere lo que sucede si apaga ese mosfet (las líneas de detección de jack en cualquier enchufe sin un conector insertado se conectarán al voltaje de la batería a través de la carga en cortocircuito, se producirá humo), al menos debería tener resistencia en serie y una abrazadera en las líneas de detección de toma (digamos 10k más o menos y un par de diodos), pero realmente no veo lo que el interruptor LOAD_GND realmente te compra a través de un interruptor lateral alto.
Por cierto, la escena automotriz tiene interruptores laterales altos controlados por lógica realmente agradables con detección de sobrecorriente y disparo de corriente incorporados, vale la pena echarle un vistazo.
fuente
Lo que significa que pones + 12V en la
JACK_DETECT
línea desprotegida , friendo la MCU. Ver "voltaje en cualquier pin [..]" arriba.Rediseñe el circuito que tiene un cortocircuito
VBAT+
yJACKx_DETECT
no permite que el voltaje en el pin MCU se eleve por encima de VCC, por ejemplo, con una resistencia y un diodo.fuente
Aparentemente no puedo comentar (todavía). Pero cambié mi respuesta para estar de acuerdo con lo anterior, con la siguiente observación.
Un elemento al que debería prestar atención es asegurarme de que sus FET estén bien controlados (pullup / pulldown) cuando ATMega esté en estado de arranque / reinicio. Los pines normalmente se configuran en el modo de entrada IIRC, lo que hace que la puerta FET flote y presente una unidad Vgs deficiente, lo que aumenta la resistencia del canal. Si el flujo de corriente entre las conexiones de drenaje y fuente es significativo, sobrecalentará / destruirá el FET rápidamente.
fuente