Hacer que una batería dure mucho tiempo en un circuito de microcontrolador


26

Espero alimentar un ATtiny85V durante un buen tiempo con una batería pequeña, probablemente una celda de moneda.

He examinado el lado del software, y mi código es controlado por temporizador de vigilancia, tiene convertidores analógicos y digitales no utilizados apagados, el chip funciona a 1MHz, etc. Por supuesto, estoy ocupado y nuevo en esto, no estoy seguro exactamente cuánta corriente está dibujando, pero espero haberlo minimizado básicamente.

Cada pocos segundos se despierta, verifica su nivel de voltaje en los ADC, lo registra en la memoria RAM y vuelve a dormir. Si detecta que hay una línea en serie conectada, arroja los datos.

Sin embargo, ahora estoy mirando el circuito en su conjunto y me pregunto si hay cosas que debería hacer para que el circuito en general sea más amigable con la batería.

¿Cuáles son los aspectos básicos que se deben y no se deben hacer cuando se trata de diseñar un circuito duradero (simple) donde un componente (el microcontrolador) tenga un consumo de corriente repetitivo pero variable?

Por ejemplo:

  • ¿Es un LED indicador un gran problema? ¿Está usando la batería cuando está brillante? ¿Debería ponerle una resistencia gigante para atenuarla, o eso hace que la resistencia use la batería?
  • ¿Debo usar condensadores de desvío / desacoplamiento para igualar el consumo de corriente de la batería, o el condensador simplemente desperdiciará la energía de la batería?
  • El microcontrolador solo necesita 1.8V, pero no tengo baterías de 1.8V. ¿Debo usar dos baterías 1.x y enviarle demasiado voltaje? ¿Puedo prolongar la vida útil de la batería al "no usar tantos voltios"? ¿Cómo puedo hacer eso?
  • ¿Se necesita potencia adicional para verificar si un pin es ALTO o BAJO? Al igual que en una aritmética no operativa o algo así, ¿hay mucho uso de energía adicional al verificar uno de los pines de E / S GP para su estado?

Sé vagamente cómo calcular (y más vagamente cómo medir) corriente, voltaje, potencia, pero no estoy seguro de cuál de esas cosas equivale a la vida útil de la batería. ¿Es la medida importante de la duración de la batería en Coulombs?

Tengo esta vaga idea de que las baterías están llenas de cosas como:

  • carga, como en amperios-hora
  • energía, como en vatios-hora
  • potencia, como en vatios

pero no tengo muy claro qué "come" mi circuito cuando se ejecuta. He leído una buena cantidad de EE101 y libros de texto de física, pero realmente no tengo ninguna experiencia de laboratorio. En otras palabras, he leído un montón sobre baterías, pero no estoy realmente seguro de lo que la mayoría significa en la práctica.

¿Las resistencias agotan la duración de la batería? ¿Los condensadores? ¿Los diodos? Sospecho que todos lo hacen, pero ¿cuáles de los números son los que importan? ¿Impedancia? ¿Disipación de potencia? ¿Corriente? ¿Voltaje?

¿Hay alguna manera de bajar el voltaje sin desperdiciar la batería? ¿Hay alguna manera de reducir el voltaje al tiempo que aumenta la vida útil de la batería?


66
Esta es una pregunta muy muy amplia. Casi necesita hacer múltiples preguntas. Podría dar una pregunta completa para la pregunta de encendido del LED.
Kortuk

1
Genial, lo dividiré después del horario de oficina. Tal vez este es solo lo que se debe y no se debe hacer. Creo que tales respuestas serían útiles para las personas que simplemente intentan sacar más provecho de una batería, pero supongo que dar cualquier tipo de respuesta autorizada o educativa requiere una pregunta más específica.
Jack Schmidt

Sí, me di cuenta de que iba a tener que dividir mi respuesta por su pregunta y me llevaría una hora.
Kortuk

Por cierto, mi esposa encontró makezine.com/makeitlast que eventualmente podría ser útil, ya que es básicamente un concurso para hacer este tipo de cosas. Creo que comienza hoy, por lo que no tienen ninguna pista publicada sobre cómo hacerlo. En cualquier caso, mi proyecto es independiente, y dudo que tenga tiempo de participar de todos modos :) No dude en esperar hasta que termine el concurso si no le gustan esas cosas.
Jack Schmidt

Respuestas:


20

Solo una lista aleatoria, si publica su esquema, probablemente sería más fácil:

Las celdas de monedas de litio de 1.8V son muy fáciles de encontrar, pero ¿es más probable que su interfaz serial necesite 3.3v? A menos que su extremo receptor se ocupe de 1.8V.

La corriente de fuga generalmente aumenta a medida que aumenta su voltaje, por lo que, por lo general, menor es mejor. Considere también el punto de caída del sistema frente a las características de la batería. Las características de 'muerte' de la batería estarán determinadas por la química de la batería que use. Por ejemplo, si su uC se oscurece a 1.7V, es posible que desee usar una batería de mayor voltaje, ya que con algunas baterías el voltaje de salida disminuirá lentamente a medida que la batería se agote. Tendría más vida útil de una batería de 3.3V ya que cuando comienza a agotarse, su salida disminuirá lentamente y puede operar hasta 1.8V. Si usa una batería de 1.8V, se apagará con bastante rapidez cuando la batería se agote. Todo esto supone que su interfaz serial u otros componentes pueden manejar un amplio rango de voltaje (sé que el AVR puede).

Los LED usan mucha energía, a menos que use un LED de muy baja potencia y controle su consumo de corriente, probablemente consuma mucha más corriente que el AVR. Si solo está allí para la depuración, no lo llene para la producción o solo haga que parpadee de vez en cuando o algo para minimizar su tiempo y definitivamente controle su consumo actual.

Si puede, elija el estado de polaridad / reposo de su interfaz en serie para obtener la menor potencia posible, su estado de reposo no debería ser de potencia. Si se requieren pull ups, use la resistencia más grande posible para mantener la integridad de la señal pero minimizar el uso de corriente. Si el poder es una gran preocupación, utilice un esquema significativo que favorezca los bits que no consumen poder. Por ejemplo, si tiene pull ups, el uso de un protocolo que genera muchos 1 en la señal dejará la interfaz en serie en un estado que no consume tanta energía la mayor parte del tiempo. Tales optimizaciones solo valen la pena si está haciendo un uso intensivo del bus serie. Si se usa muy poco, solo asegúrese de que su estado de reposo no consuma energía.

En términos generales, puede asumir que todas las instrucciones (lectura de GPIO, etc.) requieren la misma cantidad de energía. No es realmente cierto, pero la diferencia de potencia es mínima.

El uso de energía depende mucho más del número / tipo de periféricos que haya encendido y la cantidad de tiempo que el micro pasa activo frente a dormir. Entonces, el ADC usa más energía, las escrituras EEPROM usan una buena cantidad de energía. Específicamente, algo como las escrituras de EEPROM generalmente se realizan en 'fragmentos' bastante grandes, por lo que debe acumular tanta información como sea posible antes de escribir en la EEPROM (si incluso la está usando, por supuesto). Para el ADC que micro admite hacer la lectura de ADC durante 2 de sus estados de suspensión, ya que la conversión de ADC lleva un tiempo relativamente largo, este es un buen momento para dormir.

Probablemente debería leer las secciones sobre administración de energía, estados de suspensión y minimizar el uso de energía en la hoja de datos del microcontrolador: linky página 35 en adelante. Mantenga el AVR en el estado de sueño más profundo posible el mayor tiempo posible. La única excepción a esto es que debe considerar el tiempo de inicio y apagado. No vale la pena dormir durante 10 ciclos si despertarse de nuevo toma 25, etc.

¿Las resistencias agotan la duración de la batería? ¿Los condensadores? ¿Los diodos?

Todos lo hacen hasta cierto punto. Las resistencias se disipan más en la mayoría de las aplicaciones:

P = V * I

P = V ^ 2 / R o P = I ^ 2 * R (donde V es la caída de voltaje a través de la resistencia)

Los diodos tienen una caída de voltaje (relativamente) fija, por lo que la disipación de energía está casi exclusivamente vinculada a la corriente que pasa a través del diodo. Por ejemplo, un diodo con una caída de tensión directa de 0.7V, P = 0.7 * I si la corriente se mueve hacia adelante a través del diodo. Esta es una simplificación, por supuesto, y debe verificar el modo de funcionamiento según las características IV del diodo.

Teóricamente, los condensadores no deberían disipar ninguna potencia, pero en realidad tienen una resistencia en serie finita y una corriente de fuga distinta de cero, lo que significa que sí disipan algo de potencia, generalmente no es algo de lo que deba preocuparse con tan bajos voltajes. Dicho esto, elegir condensadores con una corriente de fuga mínima y ESR es una ganancia de potencia.

En cuanto a usarlos para suavizar el consumo de batería, esto realmente no ayuda para el uso de energía, es más para el filtrado. Aquí también entra en juego la química de la batería, algunas químicas estarán más felices con un sorteo constante, algunas lidiarán mejor con los sorteos actuales.


1
La parte importante de P = V ^ 2 / R es que a medida que R sube con un voltaje fijo, el uso de energía disminuye.
Kortuk

Genial, así que para usar más batería, probablemente necesitaré un voltaje más alto (posiblemente usando el regulador sugerido por Andrew). Haré algunos experimentos para ver qué tan bajo voltaje tomará la línea serial. También me aseguraré de configurar los pines no utilizados para la salida. La serie solo se usa ocasionalmente, por lo que solo comprobaré el estado de reposo. Definitivamente he tratado de apagar todos los periféricos que puedo.
Jack Schmidt

Para condensadores: probablemente no necesito ningún condensador para ayudar a la batería. Verifique la química de la batería, pero suponiendo que pueda manejar el patrón de consumo de corriente que tengo, entonces no es necesario intentar ajustarlo, ¿verdad?
Jack Schmidt

Gracias por lo de P. Creo que ahora entiendo. P = I * V donde V es la caída de voltaje, por lo que puedo medir el consumo de batería en P o I (o P-horas o I-horas) siempre que no se pueda cambiar el voltaje. Todavía no estoy seguro si puedo cambiar V "gratis".
Jack Schmidt

1
El regulador Buck-boost que Andrew mencionó es realmente la mejor solución. No lo mencioné porque el diseño de dichos circuitos suele ser crítico. Son difíciles de probar sin un rendimiento funky o irradiando toneladas de EMI. Lea la hoja de datos detenidamente, generalmente se incluyen recomendaciones para el diseño e identificación de rutas críticas. También habrá restricciones más estrictas en algunas de las partes utilizadas. Condensadores de baja ESR y tal.
Mark

12

Mark dio una respuesta excelente y acertó en muchos de los puntos que iba a hacer. Hay algunos que me gustaría contribuir también.

Use un osciloscopio con una resistencia de bajo ohmio en serie con el retorno a la batería común para realizar mediciones de corriente. El consumo actual con un microcontrolador no es sencillo y, como regla general, los medidores son demasiado lentos para darle una buena idea de lo que está sucediendo. Lo que significa "bajo ohmio" depende del consumo de corriente esperado. una resistencia de 1 ohm desarrollará 100 mV por cada 100 mA extraídos, y eso probablemente sea demasiado para usted. Probaría una resistencia de 10 ohmios al 1% o 0.5%; verá 100 mV por cada 10 mA de consumo de corriente. 18 ohmios te darían 100mV por cada 5.5mA. Si REALMENTE va por baja potencia, es posible que pueda escapar con 1k; I = V / R: verá 100mV por cada 100uA de corriente consumida. Cuidado sin embargo; si consigues suficiente corriente terminarás cayendo demasiado en la derivación y tus mediciones se apagarán, sin mencionar que el circuito probablemente no funcionará. :-)

Con el 'alcance conectado, pruebe algunas frecuencias de operación diferentes para el microcontrolador. Es posible que se sorprenda al saber que consume menos energía con una mayor velocidad de reloj porque pasa mucho menos tiempo "despierto".

Elimine los pull-ups / down tanto como sea posible. No debería tener ninguno en ninguna salida, ya que puede conducirlos a un estado inactivo en la mayoría de los casos. Las entradas deben estar vinculadas a lo que tiene sentido, utilizando un valor tan alto como sea posible, como dijo Mark.

Asegúrese de que su microcontrolador se haya apagado tanto como sea posible. Convierta los pines no utilizados en salidas y llévelos a un estado (alto o bajo, no importa). No deje los LED encendidos. Si puede apagar otros componentes o detener sus relojes, hágalo. Las memorias Flash SPI, por ejemplo, a menudo tienen un comando de "apagado" que tomará el consumo de energía ya bajo y lo reducirá aún más.

Otros han tocado el aspecto del voltaje, y me gustaría comentarlo también. Probablemente terminará con MUCHO mejor uso de la batería si usa un regulador de aumento / aumento de alta eficiencia entre la batería y su circuito. El regulador estará en modo buck (reducción de voltaje) cuando el nivel de la batería sea superior a los 1.8V que necesita, y cambiará al modo boost (aumento de voltaje) cuando el nivel de la batería caiga por debajo de 1.8V. Esto le permitirá ejecutar el circuito hasta que la batería esté realmente descargada, lo que bien vale la pérdida porcentual de eficiencia que obtendrá cuando los use. Asegúrese de seleccionar el regulador en función de su eficiencia en todo el rango que desea utilizar, y dimensione el regulador de forma adecuada; Un regulador que puede entregar 1A al 98% de eficiencia es probablemente al 60% de eficiencia al entregar 50mA. Lea las hojas de datos cuidadosamente.


Guay. No he usado un telescopio antes, pero sospecho que nuestro laboratorio local estará encantado de mostrarme esto (en este momento estoy usando el multímetro en serie para medir la corriente; no muy bueno). - Además, ¿recomendaría el regulador incluso si solo estoy usando 1-10mA, suponiendo que pueda encontrar una pieza adecuada? ¿El 90% de eficiencia es lo suficientemente bueno (recuerdo haber encontrado uno barato en ese rango) o está usando más corriente de la que me ahorra?
Jack Schmidt

1
Muy buen punto al jugar con la frecuencia, me recuerda cómo la radio wifi en mi teléfono celular usa más energía que el módem celular, pero wifi es mucho más rápido que puede dormir más y termina siendo mejor en general gracias a eso.
Mark

2
Otro truco para estimar el uso de corriente del microcontrolador promedio en el tiempo en escenarios donde el consumo de corriente será "explosivo" es cargar un condensador realmente grande y hacer que alimente un regulador de corriente de baja inactividad para simular el voltaje de la batería. Un condensador de 100,000uF caerá 0.01 voltios por miliamperio-segundo. Si cae 0.3 voltios en cinco minutos (300 segundos) su consumo de corriente promedio es de 100uA.
supercat

El punto de la eficiencia de los reguladores es muy importante. Por lo tanto, debe estimar su rango de consumo actual para seleccionar un regulador apropiado dentro de ese rango
gustavovelascoh

4

Con su circuito, recomendaría usar un multímetro en el rango de microamperios para medir el consumo de corriente. Luego, dadas las características de la batería, puede calcular la longevidad. No es necesariamente amperios-hora / corriente, ya que la batería tendrá diferentes características de descarga para diferentes cargas. Pero, puede ser útil como una aproximación.

A 1 MHz, creo que estará absorbiendo un poco de potencia, al menos 100 µA, si los micros PIC son comparables. Pero esto se verá abrumado por los 5 mA a 20 mA que pasan a través de su LED, por lo que debe deshacerse de eso primero.


Genial, LED borrado. Tener dificultades para obtener una medición precisa. Parece 0,9 mA en este momento, por lo que tal vez mi software no se está apagando tanto como pensaba. Con Arduino (y LED de latido) involucrado, es más como 8-9mA, por lo que al menos el pequeño está ayudando.
Jack Schmidt

1

En la actualidad, hay kits de desarrollo y placas de arranque disponibles que son extremadamente útiles para realizar mediciones actuales precisas, en algunos casos hasta el rango nA. Si aún no lo has hecho, echa un vistazo al µCurrent Gold . Esto es bueno para mediciones estáticas, pero no tanto para registrar mediciones a lo largo del tiempo.

Una forma en que todavía puede usar el µCurrent es conectar un amplificador diferencial a la salida. Luego puede alimentar eso a un osciloscopio o un analizador lógico con entradas analógicas. Escribí un tutorial completo sobre tuercas y pernos , creo que puede ser útil para personas con un presupuesto limitado que no tienen las herramientas adecuadas.

Es sorprendente lo que puede aprender no solo de lo que está haciendo el voltaje dentro de su circuito, sino también de cómo reacciona a cada pequeño pico de corriente. Me salvó el trasero un par de veces al elegir tecnologías de batería y pruebas de validación. 😎


0

Todas las respuestas ya tienen puntos importantes. Agregaré uno de mi experiencia.

Cuando estaba desarrollando dispositivos con un consumo de menos de 10uA, incluso menos de 1uA en modo de reposo profundo, la limpieza de la placa marcó la diferencia. Una vez tuve 7 de 10 tableros con el consumo actual esperado. Todos eran iguales y todos funcionaban bien. Después de limpiarlos en un limpiador ultrasónico, todas las tablas alcanzaron el resultado esperado.

Y, por último, calcule su consumo esperado / objetivo comprobando las hojas de datos de todos sus elementos. Si los manejas bien, llegarás a tu estimación. Esto incluye todos los pines no utilizados en el microcontrolador. Incluso si apaga su ADC, asegúrese de que la configuración del pin mientras está apagada sea la mejor dependiendo de su conexión externa.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.