Aislamiento de energía en subsistemas de comunicación de 5 V

He estado plagado de un subsistema de sensor que, cuando se conecta a mi plataforma de microcontrolador base, causa problemas de forma intermitente que asociaría categóricamente con problemas de secuenciación de energía en el arranque. Algunos ejemplos de cosas que a veces he observado que aparentemente suceden con este subsistema de sensor adjunto:

  • la placa de procesamiento no sale del reinicio/inicia su programa
  • Junta de procesamiento experiencias programa (flash) corrupción
  • la placa de procesamiento experimenta corrupción de datos (eeprom)
  • la placa de procesamiento no puede leer con precisión los valores almacenados en eeprom
  • la placa de procesamiento no puede inicializar el dispositivo SPI/I2C externo

La interfaz del subsistema del sensor es un UART (RX y TX), y la energía se le entrega a través de la placa de procesamiento, que también tiene un circuito de conmutación de lado alto basado en FET que envía los 5 V a la unidad, lo que le da a la placa del procesador la capacidad de apagar/encender el subsistema del sensor. Para su referencia, aquí hay un extracto esquemático del circuito de conmutación del lado alto.

ingrese la descripción de la imagen aquí

Ese circuito nunca ha funcionado realmente como yo pretendía. Mi firmware puede, por supuesto, apagar el subsistema del sensor. Pero no puede volver a encenderlo sin reiniciarlo. ¡Qué pesadilla! Pero al menos puede apagarlo en el caso de un modo de falla de comunicación, por lo que he vivido con varias soluciones de firmware/patrones de comportamiento durante un tiempo. Sin embargo, conformarse con soluciones alternativas ha sido una maldición, y realmente quiero llegar al fondo de esto.

Lo he repasado mucho en mi cabeza y no he podido reducir la causa raíz con certeza, así que creo que es hora de reconsiderar seriamente mi estrategia de integración para desacoplar mejor la distribución de energía entre el procesamiento tablero y el subsistema del sensor de alguna manera.

Mi sistema está alimentado por una fuente de alimentación de CA/CC de 5 V/2 A que tiene mucho margen (al menos el 50 %) para que todo el sistema funcione. El subsistema del procesador es de mi propio diseño, el subsistema del sensor es comercial y no puedo cambiarlo.

Así que aquí hay algunas preguntas :

  1. ¿Qué tipos de cambios de diseño consideraría en mi situación?
  2. ¿Qué explicaciones coherentes hay de por qué el subsistema de mi procesador no puede apagarse y luego encender el subsistema del sensor sin reiniciarse?
  3. ¿Qué pasos puedo tomar para hacer que mi diseño sea más robusto/confiable sin romper el banco (después de todo, no es un sistema crítico para la seguridad ni nada por el estilo)?

Referencias cruzadas relacionadas tangencialmente con la pregunta/consideración aquí .

¿Cuál es el tiempo de descarga del sensor a 0V?
¿Tiene suficientes condensadores de desacoplamiento en ambos módulos? ¿Ha examinado el riel de alimentación de 5 V mientras intentaba encender el sensor?
Una dirección completamente diferente ayuda a dividir y conquistar el problema. La mayor parte de lo que enumeró en la parte superior también podría estar relacionado con algunos problemas de software en el código de inicio. Estoy seguro de que piensas que es poco probable. No discutiré. Pero una cosa que debe hacer es eliminar por completo su aplicación de la MCU y reprogramarla con un código muy simple que solo acepta un encendido y alterna un pin de E/S. Eso es todo. Nada mas. Luego regrese y vea si alguno de su lista de comportamientos desaparece. Si es así, es posible que tenga más de un problema con el que lidiar. Es una buena idea para resolver problemas de hardware.
@TonyEErocketscientist Tendré que verificar dos veces, pero creo que probé hasta 10 segundos de retraso después de apagar el subsistema del sensor antes de intentar volver a encenderlo y la MCU aún rebota. Estoy bastante seguro de que estará completamente descargado para entonces. Pero puedo tratar de medir ese tiempo, claro.
@immibis No tengo conocimiento ni control sobre el desacoplamiento del módulo del subsistema del sensor. El subsistema de procesamiento tiene la cerámica habitual de 0,1 uF en todos los circuitos integrados, incluido el microcontrolador y el electrolítico de 10 uF de capacitancia a granel en el riel de 5 V. Tendré que encontrar un poco de tiempo para configurar un escenario en el que pueda alcanzar +5 V, SENSOR_5V y SENSOR_RESET_5V al mismo tiempo, y tal vez el MCU se reinicie por si acaso.
@jonk ya Realmente no creo que sea software, pero es un punto justo: proceso de eliminación y todo eso, lo mantendré en la lista.

Respuestas (1)

Verifique el riel SENSOR_5V y el riel +5V con un osciloscopio durante la secuencia de encendido. Probablemente tenga un borde rápido en el riel, posiblemente con un timbre o bajo voltaje en el riel de +5V durante la conmutación.
El bajo voltaje en el riel de +5 V es el más probable y probablemente sea causado por tapas de filtro de fuente de alimentación ESR bajas en el módulo del sensor. Puede solucionar esto poniendo una resistencia en serie con el drenaje del NFET. Esto formará un paso bajo RC con la capacitancia de la puerta del PFET y ralentizará los bordes de conmutación en el riel de salida de la fuente de alimentación, lo que reducirá el requisito de corriente máxima para cargar las tapas de derivación en el módulo del sensor.

¿Qué tamaño de resistencia estás pensando? ¿Y quiere decir conectar el drenaje del NFET a la puerta del PFET con esta resistencia? ¿Importa de qué lado de esa resistencia se conecta el pull-up (lado de drenaje NFET o lado de puerta PFET)?
El valor ideal requeriría un análisis. Muchos chips de sensores tendrán un tiempo de rampa mínimo o máximo para el encendido (generalmente para asegurar un restablecimiento confiable del chip al encender). Para mantenerlo simple, comenzaría con una resistencia de 1K en la puerta del PFET. Poner una resistencia que no sea pequeña en el drenaje del NFET disminuirá Vgs en el PFET (bueno, la aumentará ya que es negativa) lo que puede complicar las cosas. Realmente necesita un osciloscopio para diagnosticar y corregir problemas como este. Si se trata de un producto o sistema de producción, hurgar hasta que funcione no es una buena estrategia.
Tengo un Tek DPO2014 de 4 canales, por lo que ciertamente puedo sondear y disparar. Es difícil saber exactamente lo que estoy buscando.
Coloque una sonda en el riel +5V y otra en el riel SENSOR_5V, dispare en el flanco ascendente @ 2V más o menos en el riel SENSOR_5V. Debería ver lo que sucede en ambos rieles durante el evento del interruptor de encendido. Si no encuentra nada interesante, intente configurar el riel de +5 V en el acoplamiento de CA y suba el V/div para ese canal, dispare a -0,1 V. Una perturbación tan pequeña no debería afectar nada, pero al menos obtendrá una buena visión de lo que está sucediendo exactamente.
Genial, gracias por los consejos, definitivamente lo haré. Casi nunca me encuentro usando acoplamiento de CA :-), cómo ... analógico. Para su información, publiqué una pregunta de seguimiento / tangencial después de considerar esta respuesta electronics.stackexchange.com/questions/386136/…