Mi objetivo es generar una interrupción en un procesador Atmega328P cada segundo aproximadamente, utilizando un consumo de corriente promedio sustancialmente menor que el del temporizador de vigilancia incorporado.
Puede ver en la hoja de datos que, con el temporizador de vigilancia habilitado, el consumo actual a 5 V y 25 ° C es de aproximadamente 6,5 µA:
Conelladeshabilitada,hemosbajadoaalrededorde100nA:
Algointermedio,porejemplo,1µA,podríaresultarenunfuncionamientosustancialmentemásprolongadodelabatería,peroaúnasípermitirqueelprocesadorseactiveyverifiqueelniveldeluzactual,latemperatura,esetipodecosas.
Heestadoexperimentandoconesto:
Laideaesqueelcondensadorsecargarárápidamente(50µs)atravésdelaresistencia,loquelimitalacorrienteaalrededorde22mA(suponiendounaoperaciónde5Vporelmomento).Lasalidaluegopasaaunaaltaimpedancia,yesperamosunainterrupcióndescendenteparaactivarelprocesadorytratarconél.
Códigodeprueba:
const byte capacitor = 2;
const byte LED = 13;
volatile byte fired = true;
void myISR ()
{
digitalWrite (LED, HIGH);
fired = true;
}
void setup()
{
pinMode (LED, OUTPUT);
attachInterrupt (0, myISR, FALLING);
}
void loop()
{
if (fired)
{
delay (1000);
digitalWrite (LED, LOW);
digitalWrite (capacitor, HIGH);
pinMode (capacitor, OUTPUT);
delayMicroseconds (50);
EIFR = bit (INTF0); // clear flag for interrupt 0
pinMode (capacitor, INPUT); // high impedance
digitalWrite (capacitor, LOW);
fired = false;
} // end of if fired
}
Este código no tiene el código de suspensión, no es realmente relevante para la pregunta.
Las pruebas indican que esto produce un retraso de aproximadamente 970 ms desde que comienzo a cargar el condensador, hasta que se dispara la interrupción, que es lo que quiero hacer.
Las preguntas
-
¿Es esta la mejor manera (o al menos una forma razonable) de generar una señal de despertador cronometrada con un consumo de energía mínimo?
-
Calculo que el consumo promedio sería:
22 mA / (1 / 50 µs) = 1.1 µA
¿Eso parece correcto? ¿O es aún menos, ya que el condensador tomaría menos corriente a medida que se carga? Como, ¿aproximadamente la mitad de eso?