Generador de interrupciones de baja potencia

1

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?

pregunta Nick Gammon

2 respuestas

1

Este esquema no solo es dependiente de la tensión de alimentación como lo ha notado, sino que también depende de la geometría precisa a nivel atómico de los transistores de entrada, específicamente su umbral de fuga y tensión.

Si desea una potencia aún menor que la WDT, entonces debería considerar usar un cristal de reloj y el temporizador asíncrono. La hoja de datos coloca el consumo de energía típico para este método en 0.8µA a 1.8V y 0.9µA en 3V, lo que hace que una extrapolación de 1.1µA a 5V sea muy razonable.

    
respondido por el Ignacio Vazquez-Abrams
0

Considere usar un procesador separado, como PIC12LF1571 . Su consumo actual es:

Typical sleep current is 30 nA @ 25 °C (maximum 270 nA @ 85 °C)
Typical WDT takes an additional 550 nA @ 25 °C (maximum 750 nA @ 85 °C)  

Total: typical 850 nA @ 25 °C, and maximum 1.02 µA @ 85 °C.

El WDT puede cronometrar desde 1 ms hasta 256 (1 s es una de las opciones). Todo lo que necesitas agregar es una tapa de desacoplamiento. Es una parte de 3.3V.

El chip cuesta alrededor de 75 centavos y viene en Paquetes DIP de 8 pines , SOIC o MSOP.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas