Tengo un ATmega328P funcionando a 16 Mhz en CR2032 con algunos sensores y radio desde hace una semana. Comenzó con más de 3 voltios y actualmente mide 2,96 voltios. Actualmente, no estoy usando reguladores de impulso para regular esto. Utilizo el modo de suspensión de bajo consumo con las bibliotecas jee lib , duermo durante unos segundos y luego me despierto durante menos de un segundo, tomo algunas lecturas, transmito y vuelvo a dormir nuevamente.
Últimamente, noté que la duración del sueño se había reducido en algunos órdenes de magnitud. Parece dormir durante aproximadamente 50 milisegundos, en lugar de los 5 segundos de sueño en los que solía trabajar. Si cambio a 2xAA (2,84 voltios), sigo teniendo el ciclo completo de suspensión de 5 segundos.
¿Este comportamiento se debe a que el ATmega328P volvió a usar los 8 MHz internos en lugar de los 16 MHz externos? ¿Tampoco está seguro de cómo funciona bien la temporización/reposo con 2xAA a 2,84 voltios pero no con CR2032 a 2,96 voltios?
Unas pocas cosas. Lo más probable es que esté midiendo la batería sin carga. Incluso si está conectado y en funcionamiento, un multímetro no detecta consumos rápidos de energía. Se necesita un osciloscopio para consumos de energía de milisegundos. Recuerde, los CR2032 están diseñados para uso a largo plazo con baja corriente. 250 mAh a unos pocos mA. El micro y los sensores que salen del modo de suspensión provocan una irrupción, y la alta ESR (resistencia en serie equivalente) del CR2032 provoca una caída de tensión. ¿Tiene un condensador de desacoplamiento en paralelo cerca de los pines de alimentación?
Y las caídas de voltaje no harán que el ATmega baje a una velocidad más lenta. Esa es una característica demasiado avanzada para la mayoría de los micros humildes. Seguirá intentando funcionar a 16 MHz, con un reloj inestable. Es probable que se produzcan apagones.
Puede ejecutar el ATmega a 8 MHz para todos los voltajes para evitar el problema y ajustar sus retrasos/temporizadores en función de eso.
Parece que está ejecutando la MCU fuera del área de operación segura con una celda de moneda. De acuerdo con la hoja de datos de ATmega328P , página 316, el voltaje de suministro seguro mínimo para 16 MHz es de alrededor de 3,8 V (las marcas rojas son mías). Debería esperar ver un comportamiento errático en ese caso. En la práctica, solo está haciendo overclocking en su MCU. Vea lo que Russell McMahon tiene que decir al respecto .
En cuanto a la pregunta de AA vs. celda de moneda, tiene que ver con el hecho de que los AA tienen tasas de descarga mucho más altas (los AA pueden entregar unos pocos amperios). Las celdas tipo moneda ( consulte una hoja de datos de muestra ) pueden entregar hasta unos pocos mA para pulsos cortos.
chris stratton