¿Qué sucede con el consumo de energía de otros componentes cuando uC se cambia al modo de bajo consumo?

4

Actualmente, estoy usando un uC (Atmel ATtiny85-PU20 ), que finalmente funcionará con la batería, y estoy tratando de reducir el consumo de energía de todo el circuito para maximizar el tiempo entre los cambios de batería. Aparte de la uC este circuito tiene:

  1. SR HC-04 módulo sensor de rango ultrasónico
  2. Esta banda ISM ( 433MHz) Módulo transmisor ASK / OOK

Si bien entiendo cómo poner el uC en modo de reposo, solo para despertarme cada 8 segundos usando la interrupción del temporizador de vigilancia, me pregunté, ¿qué pasa con los componentes / módulos periféricos durante este tiempo?

Mi idea inicial fue poner un BJT NPN como un interruptor, controlado por un pin GPIO, para cambiar el Vcc alimentado a los 2 módulos, pero ¿está definido el comportamiento de dicho interruptor cuando uC pasa al estado de suspensión?

    
pregunta icarus74

4 respuestas

3

Básicamente, los periféricos (internos) se apagan cuando el AVR se pone en suspensión. Los módulos que se apagan dependen del modo de suspensión en el que ingreses. 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 del reloj de la CPU. Si los relojes de cualquier módulo están apagados, ese módulo dejará de funcionar hasta que el reloj vuelva a encenderse. Teóricamente, estos módulos consumirán una corriente cero cuando se cierren, aunque siempre hay algún nivel de fuga.

Además de los modos de suspensión, hay muchos pasos que puede tomar para asegurarse de que su circuito no consuma mucha energía durante la operación, al menos en lo que respecta al AVR. Aqui hay algunas ideas. Todos estos pasos se describen en la hoja de datos :

  1. Deshabilite los relojes de módulo no utilizados utilizando el registro PRR
  2. Apague el comparador analógico: ACSR | = _BV (ACD);
  3. Nunca deje los pasadores flotantes: use siempre una resistencia desplegable o desplegable.
  4. Utilice una fuente de alimentación de menor voltaje (Vcc > = 2.7V para tinyx5, 1.8V para tinyx5V)
  5. Baje el reloj de la CPU cambiando los valores de preescala del reloj en CLKPR
  6. Desactive el ADC cuando no lo esté usando: ADCSRA & = ~ _BV (ADEN);
  7. Deshabilite los buffers de entrada digital que no está utilizando con DIDR0

En cuanto a apagar los periféricos externos, puede hacer eso fácilmente con un transistor como usted sugirió. Los pines de E / S son pestillos estáticos que retienen su estado cuando el AVR se pone en suspensión, por lo que podría (en el software) apagarlos antes de irse a dormir y encenderlos cuando se despierte. Le sugiero que utilice un MOSFET de canal N de nivel lógico para conectar / desconectar los dispositivos de su conexión a tierra (conmutación del lado bajo), siempre que el voltaje de umbral de la puerta FET sea un poco más bajo que el voltaje de suministro del AVR para que gire completamente. ON desde un alto rendimiento. El MOSFET no está extrayendo ninguna corriente a través de la compuerta cuando está encendido (una vez que el capacitor de la compuerta se ha cargado) a diferencia de un NPN BJT que continuará consumiendo corriente mientras está encendido. De cualquier manera, debe usar una resistencia de bajada externa (10k o menos) para asegurarse de que el transistor permanezca apagado cuando se supone que está apagado. Esto consumirá un poco de corriente, por lo que se recomienda un debilitamiento débil (5V a 10k es solo 0.5mA, 50uA a 100k).

También puedes usar este truco para apagar los dispositivos externos en cualquier otro momento que no los estés usando; aunque es posible que necesiten un poco de tiempo para volver a activarlo cuando necesites usarlos o, de lo contrario, te darán resultados extraños:

  1. encender el dispositivo
  2. Retardo de unos pocos milisegundos (cualquiera que sea el tiempo de inicio recomendado)
  3. Lee el sensor / transmite datos
  4. Retardo de unos pocos milisegundos
  5. apagar dispositivo
respondido por el Kurt E. Clothier
3

Muchos microcontroladores conservan su estado de salida de pines cuando entran en modo de suspensión. El ATtiny85 ciertamente lo hace (al igual que todos los AVR que he escuchado). Por lo general, la hoja de datos dirá en su descripción de los modos de bajo consumo.

    
respondido por el vicatcu
3

Para cambiar algo con un microcontrolador de modo que permanezca apagado cuando el microcontrolador está apagado, se puede usar un " resistencia desplegable ", por ejemplo 100 kOhms, en la línea de salida de la MCU. Esta línea luego controla la parte de conmutación, ya sea un BJT, MOSFET o algo más.

Si el microcontrolador establece un valor en el pin de salida (GPIO), supera la fuerza de la resistencia hacia el suelo y el resultado es un estado activado o desactivado, según se desee. Si el microcontrolador está apagado por completo o en algún estado donde la salida está "flotando", el interruptor ve una entrada de baja (0 voltios) cortesía del menú desplegable, y permanece apagado.

NB En su lugar, también se pueden usar resistencias pull-up, con algunos cambios en el circuito y la lógica. Mi respuesta simplemente ofrece una visión general simplificada en lugar de una lista completa. de posibles enfoques.

    
respondido por el Anindo Ghosh
1

Esto es lo que encontré en la hoja de datos de Atmel ATtiny85-PU20

Por lo tanto, esto no afectará tu E / S. Solo apagará el oscilador y el PLL. BJT swich control es la mejor manera para su sistema a batería. Incluso puede cortar la energía del sensor ultrasónico y el transmisor inalámbrico cuando entra en modo de suspensión y solo reanudar la energía al despertar. Esto aumentará la duración de la batería.

    
respondido por el Jimit

Lea otras preguntas en las etiquetas