El MOSFET ... se puede quitar de forma segura. Puede conducir su Pullup directamente desde un pin de salida del microcontrolador en lugar de usar un FET. La carga no consume suficiente corriente para justificar un FET externo.
También puede usar un pullup interno (encendido / apagado) en lugar de uno externo, guardando un pin.
Hacer que R1 sea más alto brindará una mejor protección contra EMI, ESD, etc.
BAT54 tiene una fuga de aproximadamente 0.5-1µA a su bajo voltaje. Decide si esto es malo para la duración de la batería. Si es así, use un diodo estándar (no Schottky). Gracias a R4, la corriente que puede fluir hacia el pin de entrada es bastante limitada de todos modos.
1Mohm pullup me pone incómodo. La humedad leve a lo largo de los cables sería suficiente para filtrar unos pocos µA, lo que hace que su micro crea que el interruptor está cerrado.
Además, 1Mohm * 10nF necesitará mucho tiempo para establecerse. Si realmente desea ahorrar energía, deberá volver a poner el micro en suspensión mientras espera a que se asiente ...
Aquí está mi propuesta.
La cantidad de carga que consumirá es lo que se necesita para cargar C2 hasta un voltaje que el micro lea como "1", digamos 3V * 10nF = 30nC.
Aquí está mi solución:
- Eliminar MOSFET, eliminar R7
- R1 = 1k
- Establezca C2 en 1nF, y póngalo en paralelo con los diodos para un mejor filtrado de EMI
- Reemplace R5 con condensador de 33 nF
- Establezca SW_EN como salida, dirigido a GND
Para consultar el sensor:
- Establezca SW_EN en ALTO. Esto permite que la tapa de 33 nF envíe un impulso al cable y cargue C2. Si el interruptor está abierto, C2 se cargará a 90% VCC. Si está cerrado, su voltaje disminuirá rápidamente a 0V.
- Espere 500µs (TBD)
- Comprueba GPIO_IN
- Establezca SW_EN en LOW
- Vete a dormir
Esto consume 100 nC en cada cheque (cargo en el límite de 33 nF por debajo de 3 V), por lo que si lo marca 10 veces por segundo, es de 1µA.
La corriente enviada a través del cable será bastante alta (unos pocos mA). Esto debería ser suficiente para superar cualquier fuga debido a la humedad.
También puedes usar una resistencia en lugar de un condensador de 33 n, pero luego tendrás que comprometer las resistencias de protección de entrada.