La sugerencia de Duskwuff es buena, esta es la forma en que lo haría. Sin embargo, hay información importante que se debe agregar:
Parte de hardware
- Funciona solo si la fuente de prioridad más baja tiene un voltaje más bajo que la fuente de prioridad más alta. Por ejemplo, funciona con una entrada de 3.3V y una batería de litio de 3V, pero no funcionaría con una entrada de 2.5V y una batería de 3V.
- Los diodos deben ser diodos schottky . Y su caída de tensión debe ser considerada. Como la MCU que usted menciona consume unas pocas decenas de mA como máximo, según la hoja de datos, no tendrá una caída de voltaje muy alta. Algo así como 0.3-0.4V con BAT54, por ejemplo. En su aplicación, esto está bien porque la MCU puede trabajar con un voltaje de suministro tan bajo como 2.4V, y porque las baterías de litio tienen una curva de descarga muy plana que no baja a 2.8V para corrientes bajas (estamos realmente en el límite aquí, sin embargo, una MCU que acepte un suministro de 2.0 V o inferior sería más segura).
- También coloque una tapa grande en los cátodos del diodo, para que le dé más tiempo, en la parte del software (ver más abajo), para reaccionar cuando se retira la alimentación principal. Por ejemplo, algo así como 100µ le dará aproximadamente 2.5ms para pasar de un suministro de 2.9V (3.3 diodos menos) a 2.4V (el mínimo requerido por la MCU) a ~ 20mA (un consumo razonable en el peor de los casos de la MCU). - Revise su caso específico).
Esto también tiene un impacto en los dispositivos periféricos externos: todos los LED y el hardware adicional que consumen mucha energía deben ser alimentados por la fuente principal directamente (antes del diodo). Por lo tanto, esta parte del circuito se apagará inmediatamente cuando desaparezca la alimentación principal y no absorberá la energía del capacitor (lo que reduciría el tiempo permitido para el apagado). Así que eso significa que los LED no deben estar conectados directamente a los pines MCU, sino a través de un transistor (o fet). Eso también significa que ahora tiene dos dominios de alimentación, por lo que puede tomar algunas precauciones con las señales de la MCU que van a los chips periféricos del dominio de alimentación de la "fuente principal". Es posible que haya un tiempo durante el cual aún esté transmitiendo algunas señales de la MCU, que van a los chips periféricos apagados. Esto tendrá malas consecuencias (la corriente fluirá a través de los diodos de protección de los chips periféricos). Al menos, debe colocar resistencias en serie (tal vez 1k) en estas señales (verifique las calificaciones máximas absolutas de estos chips periféricos). Pero esto disminuirá estas señales. Por lo tanto, para las señales de alta velocidad, otra solución es usar una etapa adicional entre los dominios de energía. Un traductor de voltaje con alimentación doble y Ioff (apagado parcial) es perfecto para esto (por ejemplo, 74AVC2T45, 74AVC4T245, ...)
Parte de software
Ahora, hay una cosa importante a considerar: debe cambiar la MCU al modo de espera ASAP cuando desaparezca el suministro principal . O la MCU se reiniciará, porque si la MCU está ocupada y consume mucha corriente cuando se retira el suministro principal, la tensión de respaldo experimentará una caída mayor de la que se puede tolerar, debido a la resistencia interna de la batería y al diodo Schottky.
El condensador mencionado anteriormente puede ayudar con este asunto, pero debe asegurarse de que cambia antes del tiempo adicional que le da. Así que hay dos formas posibles de asegurar que:
Leyendo el nivel de voltaje de la fuente principal con un ADC :
Esto es lo que sugirió duskwuff (a través del divisor de resistencia). Esto es bueno porque puede monitorear el voltaje de manera precisa y ser advertido tan pronto como comienza a disminuir. Sin embargo, debe muestrearlo regularmente con el ADC. Por lo tanto, toma algo de tiempo de procesamiento de MCU, porque el período entre los muestreos debe ser más bajo que el tiempo que el capacitor te da para apagar.
Lectura de la tensión de alimentación principal como un valor digital :
Esto requeriría dimensionar el divisor de resistencia de modo que, cuando la entrada sea 3.3V, tenga un voltaje de entrada por encima de Vih (por lo tanto, la resistencia superior es mucho más baja que la resistencia inferior). De esta manera, puede configurar el pin de entrada como una entrada digital que activa una interrupción. Por lo tanto, el procesamiento de la MCU no toma tiempo para monitorear la alimentación, se le avisa automáticamente cuando desaparece. Esto es bueno, pero solo puede funcionar si la fuente desaparece muy rápido (mucho más rápido que el tiempo de apagado dado por el capacitor). De lo contrario, solo se le avisará cuando el suministro descienda por debajo de Vil , y eso será demasiado tarde: habrá cambiado a la batería desde hace mucho tiempo sin saberlo.
Si no está seguro, dimensione las resistencias para el estuche digital y elija un pin de entrada que pueda actuar como una entrada ADC o como un GPIO con capacidad de interrupción. De esta forma, solo tienes que modificar el firmware para ir de una u otra forma.