¿Cómo conectar un interruptor SPST con corriente mínima (1 µA)?

La forma habitual de conectar un interruptor SPST a una MCU es mediante una resistencia pull-up. Sin embargo, esto desperdicia corriente cuando el interruptor está cerrado. Si este interruptor se usa para despertar la MCU del modo de suspensión, entonces esta corriente (100-500 µA) es significativa en comparación con la corriente de suspensión (< 0,1 µA). Me imagino que aumentar el valor de la resistencia hasta megaohmios no sería práctico por varias razones. Entonces, ¿hay una mejor manera de interactuar con un SPST en general? Tengo un par de pines en la MCU de sobra (pero tenga en cuenta que la MCU debe estar en reposo la mayor parte del tiempo; debería activarse y hacer sus cosas solo cuando cambia el estado del interruptor).

La única solución que se me ocurre es usar básicamente el esquema pull-up, pero almacenarlo a través de un par P-MOSFET/N-MOSFET para aumentar la impedancia de entrada.

Y sí, me doy cuenta de que la solución es trivial si estuviéramos tratando con un SPDT o un botón pulsador.

Respuestas (2)

Si la latencia (en la lectura del interruptor) fue aceptable de una vez cada 100 milisegundos, ¿por qué no dejar que el micro se despierte durante un período corto (en el modo de corriente más bajo posible), energice brevemente el interruptor, lea el interruptor? , luego haga lo que tiene que hacer y luego vuelva a ingresar al modo de suspensión.

El interruptor solo toma corriente brevemente cuando el micro se activa.

Tal vez el problema con este escenario es que el micro se activa durante 1 milisegundo y consume 1 mA durante ese período, PERO si solo lo hace una vez cada 100 milisegundos, entonces su consumo promedio es de 10 uA. ¿Al menos eso puede ser mejor que energizar un interruptor cerrado continuamente?

Aparte, debe tener cuidado de alimentar un interruptor con suficiente corriente para atravesar las capas de óxido que se forman; se llama corriente de humectación del interruptor y algunas pueden ser de varios miliamperios.

Ah, tienes razón, por supuesto. Esto es totalmente viable. Por alguna razón, tengo la impresión de que los WDT de los PIC siempre provocan un reinicio, pero al leer las especificaciones más a fondo, ahora veo que en el modo de suspensión simplemente activan el dispositivo, lo cual es perfecto. Voy a usar este camino, gracias!

Aquí hay un problema: por lo general, el interruptor quiere ver una corriente mínima para ser confiable, tal vez se especifica 100uA como la corriente mínima para un interruptor de oro sobre oro.

Es posible que pueda cambiar la corriente usando un par de pines de puerto para reducir la corriente para que cambie (digamos) 0.2mA y luego, una vez que el interruptor se haya calmado, reduzca la corriente y espere una interrupción en la corriente .

esquemático

simular este circuito : esquema creado con CircuitLab

Entonces, cuando detecta un "alto", energiza el pullup de alta corriente R1 y espera un BAJO. Cuando vea un BAJO, espere unos 20 ms, luego desenergice el pullup de alta corriente y energice el lado "alto".

Esto está funcionando bien fuera del rango garantizado de la mayoría de los micros (dos salidas deben perder mucho menos de 1uA) y también del interruptor (solo ve la corriente mínima al cambiar), así que tenga cuidado.

Este es SPDT: mi pregunta era sobre el antiguo SPST. Los SPDT simples se pueden leer colocando 5v/GND como alternativas en un lado y un pin MCU en el otro. Configure el pin como interrupción en el cambio y bam, tiene una solución de 0.1 µA.
Creo que el OP dejó bastante claro que usar un SPDT no era una opción ... ¿viste la última oración en la pregunta?
De acuerdo, eliminé la segunda mitad del interruptor, el punto es que puede obtener una respuesta rápida con este método mientras mantiene una corriente baja (y podría funcionar).