Actualmente, estoy usando un uC (Atmel ATtiny85-PU20 ), que eventualmente funcionará con batería, y estoy tratando de reducir el consumo de energía de todo el circuito para maximizar el tiempo entre cambios de batería. Aparte de la uC este circuito tiene:
Si bien entiendo cómo poner el uC en modo de suspensión, solo para despertar cada 8 segundos usando la interrupción del temporizador de vigilancia, me preguntaba, ¿qué sucede con los componentes/módulos periféricos durante este tiempo?
Mi pensamiento inicial fue poner un NPN BJT como un interruptor, controlado por un pin GPIO, para cambiar el Vcc alimentado a los 2 módulos, pero ¿se define el comportamiento de dicho interruptor cuando uC pasa al estado de suspensión?
Básicamente, los periféricos (internos) se apagan cuando el AVR se va a dormir. Los módulos que se apagan dependen del modo de suspensión en el que ingrese. El tinyx5 tiene tres modos de suspensión: inactivo, reducción de ruido ADC y apagado. A menos que necesite algo para continuar trabajando mientras duerme, sugeriría el "Modo de apagado" que aún permite que el perro guardián funcione si eso es lo que usará para despertarlo.
Todos los módulos internos están controlados por relojes reducidos desde el reloj de la CPU. Si los relojes de cualquier módulo están apagados, ese módulo dejará de funcionar hasta que los relojes se vuelvan a encender. Teóricamente, estos módulos consumirán corriente cero cuando se apaguen, aunque siempre hay algún nivel de fuga.
Además de los modos de suspensión, hay muchos pasos que puede seguir para asegurarse de que su circuito no consuma mucha energía durante el funcionamiento, al menos en lo que respecta al AVR. Aqui hay algunas ideas. Todos estos pasos se describen en la hoja de datos :
En cuanto a apagar los periféricos externos, podría hacerlo fácilmente con un transistor como sugirió. Los pines de E/S son pestillos estáticos que retienen su estado cuando el AVR se va a dormir, por lo que podría (en el software) apagarlos antes de ir a dormir y encenderlos cuando se despierte. Le sugiero que use un MOSFET de canal N de nivel lógico para conectar/desconectar los dispositivos de su suministro a tierra (conmutación del lado bajo), siempre que el voltaje de umbral de FET Gate sea un poco más bajo que el voltaje de suministro de AVR para que gire completamente ON desde una salida alta. El MOSFET no atrae corriente a través de la compuerta cuando está encendido (una vez que se ha cargado el capacitor de la compuerta) a diferencia de un BJT NPN que consumirá corriente continuamente mientras está encendido. De cualquier manera, debe usar una resistencia desplegable externa (10k más o menos) para asegurarse de que el transistor permanezca apagado cuando se supone que debe estar apagado. Esto consumirá un poco de corriente, por lo que se recomienda un pull down débil (5V a 10k es solo 0.5mA, 50uA a 100k).
También puede usar este truco para apagar los dispositivos externos en cualquier otro momento que no los esté usando; aunque es posible que necesiten un poco de tiempo para volver a encenderse por completo cuando necesite usarlos o, de lo contrario, le darán resultados extraños:
Muchos microcontroladores conservan su estado de salida de pin cuando entran en modo de suspensión. El ATtiny85 ciertamente lo hace (al igual que todos los AVR de los que he oído hablar). Por lo general, la hoja de datos dirá en su descripción de los modos de bajo consumo.
Para cambiar algo con un microcontrolador de modo que permanezca apagado cuando el microcontrolador está apagado, se puede usar una " resistencia desplegable ", digamos 100 kOhms, en la línea de salida de la MCU. Esta línea luego impulsa la parte de conmutación, ya sea un BJT, MOSFET o algo más.
Si el microcontrolador afirma un valor en el pin de salida (GPIO), eso supera el tirón de tierra de la resistencia, y el resultado es un estado de encendido o apagado según se desee. Si el microcontrolador está completamente apagado o en algún estado donde la salida está "flotando", el interruptor ve una entrada baja (0 voltios) cortesía del menú desplegable y permanece apagado.
NB One también puede usar resistencias pull-up en su lugar, con algunos cambios de circuito y lógica; mi respuesta simplemente brinda una descripción general simplificada en lugar de una lista completa de posibles enfoques.
Esto es lo que encontré en la hoja de datos de Atmel ATtiny85-PU20
Entonces esto no afectará su E/S. Solo apagará el oscilador y el PLL. El control de interruptor BJT es la mejor manera para su sistema que funciona con batería. Incluso puede cortar la alimentación del sensor ultrasónico y el transmisor inalámbrico cuando se va a dormir y solo reanudar la alimentación cuando se despierta. Esto aumentará la duración de la batería.
Russel McMahon
bdutta74