Formas adecuadas de desconectar los circuitos integrados durante los estados de bajo consumo para evitar el suministro de parásitos / retroalimentación

10

Estoy trabajando en un proyecto basado en AVR de bajo consumo de energía de la batería que integra algunos dispositivos diferentes, incluida una tira de neopixel y una Adafruit pixie . Cuando el dispositivo en general está inactivo, me gustaría que consumiera menos de 0.1 mA para maximizar la vida útil de la batería LiPo.

Conseguí todo esto funcionando (medido 0.035 mA) pero no estoy seguro de que necesariamente lo hice de la manera "correcta" y planeo crear un producto basado en esto, así que me gustaría hacerlo bien.

(Nosemuestra:undiododeretornoderetornoparaelrelé)

Laprincipalpreocupaciónquetengoeslaalimentación"parásita" de los dispositivos cuando VCC se desconecta a través de la corriente que fluye de los pines de datos. Por ejemplo, la Pixie (que se comunica a través de la serie), no tiene modo de apagado e incluso cuando "apagado" drena alrededor de un miliamperio. Así que coloqué un pequeño relé para desconectar su VCC, y descubrí que el pin serie en realidad seguía alimentando al duendecillo. Sugerencias en otra parte sugirieron que muchos chips tienen un diodo que desvía sus pines de entrada digital a VCC como protección de energía. Para resolver esto, tuve que suspender la biblioteca de serie y, de hecho, digitalWrite (PIN, LOW) durante el modo de suspensión.

Lo mismo con la tira WS2812b: desconectar VCC todavía permite que el dispositivo se alimente desde el pin de datos. Y en otros diseños, cuando he desconectado la GND con un MOSFET de canal N, he visto lo contrario: ¡un flujo de retorno de corriente a través de la línea de datos a tierra! (Esto se tuvo que resolver con un diodo por post en PJRC .) Los WS2812b en realidad toman alrededor de un miliamperio cada uno incluso cuando están apagados,

Entonces, la pregunta: ¿hay una forma general, "limpia" de desconectar VCC y GND de partes de un proyecto durante la suspensión del sistema cuando hay pines de datos en la mezcla? cual es la mejor practica?

Algunas ideas:

  1. Forzar VCC a GND (¿no está seguro de cómo? ¿Hbridge?). (Si hago eso, ¿qué sucede con los pines de datos que están altos?)
  2. Coloque un búfer de tres estados entre todos los pines de datos y estos dispositivos, y durante el modo de reposo, coloque el búfer de tres estados en un estado de alta impedancia, desconecte VCC o GND solo con P o N mosfet
  3. Desconecte GND solo con N mosfet y coloque diodos en todos los pines de datos
  4. ¿Existe algún tipo de bloqueo de alimentación que desconecte tanto a VCC como a GND y los ponga en un estado de "alta impedancia" (como un búfer de tres estados para la alimentación?) De esa manera, la corriente no tiene forma de salir "de la corriente" líneas de datos.

¿Puede alguien aclararme la forma más limpia y repetitiva de manejar este tipo de problema de "desconexión de carga"? (No hace falta decir que he pasado horas buscando en Google este problema con poca suerte, aunque encontré esta nota técnica en la conmutación de carga, pero no aborda la alimentación de retorno y la potencia parasitaria)

    
pregunta Jeremy Gilbert

4 respuestas

5

Cuando hago esto, generalmente uso interruptores analógicos CMOS en las líneas de datos afectadas.

Algo como ADG812 tiene 4 canales de interruptores SPST que son fácilmente adecuados para una lógica bastante rápida, y proporcionan una impedancia realmente alta entre los nodos del interruptor cuando están apagados.

Lobuenodeestoesquelatécnicafuncionaparalaslíneasdedatosbidireccionalesyunidireccionales.

Estaspartestambiénseejecutanenunasonrisabrillante:

Lasecuenciahabitualparaelapagado:

  1. Desactivarlosinterruptoresdelarutadedatos

  2. Apagardominio.

Elencendidoestodolocontrario,porsupuesto.

[Actualización]

Dehecho,estossonconocidosporotrosnombres,comopuertasdepasoy puertas de transmisión .

Estos son significativamente diferentes de un verdadero búfer de tres estados (como se puede ver en el diagrama en el enlace anterior), pero para la lógica ordinaria, el efecto es mejor (esto es inherentemente un bidireccional dispositivo) pero con menor potencia.

    
respondido por el Peter Smith
3

Si las señales de datos están conectadas a su microcontrolador, simplemente puede aumentar su impedancia configurando esos pines como entradas. (Si el otro chip utiliza muy poca energía, puede tratar su Vcc como una señal de datos).

De lo contrario, puede usar interruptores analógicos (74x66 chips lógicos) para desconectarlos. Para señales unidireccionales, 74x125 también funcionaría.

    
respondido por el CL.
1

Lamentablemente, no creo que exista una estrategia única para todos. Cambie la alimentación a los subsistemas como ya lo ha hecho. En el software, los pines de la unidad son bajos para los estados de baja potencia, a menos que hacerlo causaría una condición de estado estable de alta potencia. En ese caso, conduzca el pin alto. Nunca dejes que las entradas floten. Secuencia de poder según sea necesario para establecer condiciones iniciales seguras.

    
respondido por el vicatcu
1

Un problema desagradable que puede hacer que los microcontroladores hagan cosas muy extrañas.
La buena solución es usar la E / S serial desplegable como \ $ I ^ 2C \ $. Esto requiere resistencias de pull-up en líneas SCK, SDA. Las resistencias de pull-up están conectadas a la línea Vcc conmutada. Asegúrese de que la línea Vcc conmutada caiga a cero voltios cuando esté apagada (no la deje flotar).

No tiene esa opción, está obligado a usar E / S serie asíncrona. Algunos microcontroladores permiten un enfoque similar al I2C para resolver el problema. Si puede programar el pin de salida en serie para que sea solo desplegable en lugar del más común pull-up-for-1, pull-down-for-0 , luego puede agregar una resistencia de pull-up a Vcc conmutado para establecer una lógica alta.
Esta solución no es tan robusta al ruido como su enfoque actual, pero debería resolver el problema de volver a alimentar sus módulos de E / S desde el AVR. No es realmente una solución "limpia", pero es mucho más seguro para los microcontroladores en sus módulos IO.

simular este circuito : esquema creado usando CircuitLab

    
respondido por el glen_geek

Lea otras preguntas en las etiquetas