Esta música durará para siempre si cambio las pilas (C)

Esta obra está dedicada a mi investigación sobre el poder de los dispositivos inalámbricos autónomos que forman parte del sistema de hogar inteligente MySensors.
Primero hubo litio ...
Más bien, baterías de iones de litio y polímeros de litio.
Durante mucho tiempo, estas baterías de aparatos viejos se acumularon en una caja. Pensé: aquí está, potencia universal para todos los microcontroladores de pequeño tamaño. Además, el voltaje de 3.3-4.2V es excelente para AVR, así como para todo tipo de ESP y STM. Para mayor confiabilidad, puede colocar un estabilizador LDO de la potencia requerida y obtener un 3.3 estable para MK y toda la periferia.

Pero resultó que no todo es tan bueno.
- Las baterías necesitaban ser cargadas. Para hacer esto, era necesario hacerlos extraíbles o agregar un módulo de carga a su dispositivo, lo que, a su vez, le dio un costo adicional, dimensiones y agujeros de carga en el estuche. Y no siempre es conveniente cargar dispositivos, por ejemplo, un sensor meteorológico fuera de la ventana.
- Las baterías de litio (como la mayoría de las fuentes de alimentación en general) no son adecuadas para su uso a bajas temperaturas. En un sensor meteorológico conectado a la ventana, en invierno, la batería se hundió inmediatamente en las heladas.
- Durante la operación a largo plazo, si el voltaje de la batería no se monitorea a tiempo, puede descargarlo "a cero", es decir, por debajo del valor permitido, que garantiza matarlo. Por lo tanto, necesita protección contra el exceso de descarga.
- Una variedad de tamaños y capacidades de batería limita significativamente la repetibilidad de dispositivos en gabinetes idénticos. Y las reservas de baterías viejas llegaron rápidamente a su fin; como resultado, era necesario comprar un lugar nuevo. Y, como resultó, el costo de tales fuentes de energía resultó ser bastante centavo y agregó al menos $ 2 al costo de cada dispositivo (y teniendo en cuenta la placa de carga y más). Además, no había economía por la recarga, ya que la mayoría de los controladores autónomos consumían muy poca energía y podían funcionar durante muchos meses sin recargar.
NiMH y otras baterías AA / AAA fueron aún peores. Necesitaban cargarse en un cargador especial, tenían un "efecto memoria" y un voltaje inicialmente bajo (1.2-1.3V), y cuando se conectaban en serie debido a la diferencia en la resistencia interna, una de las baterías podía descargarse más que otras, lo que nuevamente conducía a su deterioro
Y de nuevo, litio ...
Ahora hay baterías redondas de litio de 3.0V de tamaño pequeño, a favor de las cuales decidí abandonar las baterías caprichosas y caras.
Las baterías CR2032 se utilizan en una gran cantidad de computadoras BIOS, medidores eléctricos y otros dispositivos con RTC, relojes, calculadoras y varios juguetes. Con pequeñas dimensiones y bajo precio, tienen un voltaje de 3.0V, que es bastante suficiente para MK y una capacidad decente de 200-250mA / h para sus dimensiones.

Pero de nuevo, problemas. El hecho del asunto. que la corriente continua de tal batería es solo 0.4mA. Si lo carga con una corriente más alta, el voltaje de la batería caerá, aunque luego puede recuperarse parcial o completamente. Un modo de suspensión Mysensor típico consume varios microamperios. Pero en el modo de transferencia, ya alrededor de 15-20 mA. Al mismo tiempo, las nuevas versiones de la biblioteca MySensors obligan a los dispositivos a enviar muchos paquetes: ping, saludo, presentaciones, búsqueda de una puerta de enlace o enrutador, lo que resulta en una operación larga, a veces de varios segundos, del módulo de radio. Con un voltaje de aproximadamente 2V, los NRF24L01 chinos baratos comienzan a fallar, y a veces ni siquiera es posible ponerlos en modo de suspensión () desde MySensors.
Como resultado, todo funciona de alguna manera con una batería nueva, pero a medida que la batería se descarga, aumentan los problemas de comunicación, el módulo de radio comienza a inundar más en el aire, aumentando la descarga de la batería. Al final, el voltaje cae hasta el punto de que todo el dispositivo deja de dormir, y luego se produce un reinicio cíclico hasta que la batería se agota por completo.
Dependiendo del fabricante y la "frescura" de la batería, el dispositivo puede funcionar desde un par de días hasta un mes. Si compra baterías baratas en AliExpress, entonces hay una lotería. La transición a los CR2450 y CR2477 más potentes ahorra un poco, pero no saben cómo dar una corriente de más de 0,5 mA durante mucho tiempo.
Durante un tiempo experimenté con convertidores de impulso que permitieron que la batería mantuviera un voltaje de funcionamiento normal para el MK hasta las últimas migajas de energía, pero tenían una corriente de reposo pequeña, pero no nula, que redujo la vida útil general.
Pequeños dedos - pequeños dedos

Es hora de calmarse y adoptar la experiencia china "avanzada", para alimentar todos sus dispositivos desde tres AAA (las baterías no están incluidas). Pero decidió buscar una solución con al menos dos baterías de 1.5 voltios.
Me detuve en ese esquema con un estabilizador creciente NCP1400 :

Dos baterías AAA alcalinas conectadas en serie dan inicialmente 2.7-3.1V al final del período de producción, reduciendo el voltaje a 1-2V
Cuando el NCP1400 está apagado (nivel bajo en la entrada de control), la energía de la batería pasa inmediatamente al MC a través de la bobina L1 y el diodo Schottky d1 con una caída de voltaje mínima de aproximadamente 0.1V. Si se aplica un nivel alto a la entrada de control, entonces el estabilizador NCP1400 se inicia y proporciona un voltaje de 3.3V al MK con un voltaje de batería total de 0.8V a 3.1V.
El algoritmo de operación es el siguiente:
- La hora principal en que el controlador está en modo PowerDown, todos los periféricos, incluido el NRF24, están desactivados o también en modo de bajo consumo.
- El MC sale del modo de suspensión por interrupción del temporizador o por una interrupción externa (por ejemplo, en interruptores por interrupción del botón), se mide el voltaje de alimentación VCC (función incorporada de los controladores AVR).
- Si el voltaje de suministro es superior a 3 V (u otro voltaje suficiente para un funcionamiento periférico estable), entonces el NCP1400 no se inicia y todo el procesamiento se lleva a cabo con este voltaje de suministro hasta el siguiente ciclo de reposo.
- Si el voltaje es inferior a 3 V, el estabilizador NCP1400 se inicia, el voltaje de suministro se establece en 3,3 V, se realiza todo el procesamiento regular del dispositivo, incluido el envío de datos a través de NRF24
- Además, si el voltaje es superior a 1,7 V (voltaje suficiente para salir del MC del modo de suspensión), el NCP1400 se apaga hasta el próximo ciclo de activación.
- Si el voltaje es menor a 1.7 (el voltaje mínimo del MK), entonces el NCP1400 no se apaga hasta que el controlador se reinicia o hasta que el voltaje de suministro cae por debajo de 0.8V (voltaje del NCP1400)
Bosquejo de este algoritmo#define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_POWER_PIN 8 #define MY_RADIO_NRF24 #include <MySensors.h> #define PIN_NCP1400 2 #define CHILD_ID_VCC 0 MyMessage msgVcc(CHILD_ID_VCC, V_VOLTAGE); bool low_power = false; int readVcc(); // void before(){ pinMode(PIN_NCP1400,OUTPUT); digitalWrite(PIN_NCP1400,HIGH); } void presentation(){ sendSketchInfo("NCP1400 test", "1.0"); present(CHILD_ID_VCC, S_MULTIMETER,"mV"); } // void loop(){ int vcc = 1000; if( low_power == false ){ vcc = readVcc(); digitalWrite(PIN_NCP1400,HIGH); // NRF1400 } if( vcc < 1700 )low_power = true; // NRF1400 send(msgVcc.set(vcc)); // VCC if( low_power == false )digitalWrite(PIN_NCP1400,LOW); // NRF1400 sleep( 300000 ); // 5 } /** * VCC */ int readVcc() { long result; // Read 1.1V reference against AVcc ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Convert while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = (1100L * 1023)/result; return((int)result); }
Prueba
¿Y cómo lidiamos con el consumo actual en la práctica? Conecto mi circuito al LBP y tomo medidas del consumo de corriente y el voltaje de salida.

La corriente de ralentí con el NCP1400 apagado y un voltaje de entrada de 1-3 V fue de 0.3 μA. Incluso más bajo que el declarado por la hoja de datos 0.5mkA (o tal vez en este rango mis dispositivos dan un gran error). Pero con el estabilizador encendido sin carga, la corriente resultó ser inesperadamente grande: más de 0.3 mA. Resultó que la resistencia pull-up R1 causó un gran consumo. Reemplazando la clasificación R1 de 10K a 150K, obtuve 30 μA a un voltaje de entrada de 3.0 V y 44 μA a 1.0 V.
Si elimina completamente la resistencia R1, el estabilizador, en ausencia de conectar esta entrada al MC, se consumirá constantemente con un 2V entrante de aproximadamente 11 μA.
Ahora conecto el microcontrolador con NRF24L01 y el sensor HUD21, trabajando de acuerdo con el algoritmo descrito anteriormente:
- Voltaje de entrada 3.0V - modo activo (NCP1400 está encendido) 32mA, modo inactivo (NCP1400 está apagado) 9mkA
- Voltaje de entrada 2.0V - modo activo (NCP1400 está encendido) 51mA, modo inactivo (NCP1400 está apagado) 6mA
- Voltaje de entrada 1.7V - modo activo (NCP1400 encendido) 63mA, modo inactivo (NCP1400 apagado) 5.6mA
- Voltaje de entrada 1.0V - NCP1400 está constantemente encendido - modo de suspensión 197mkA
- Voltaje de entrada 0.5V - NCP1400 está constantemente encendido - 397μA modo de reposo
El consumo activo de la batería aumenta cuando se reduce la potencia. El voltaje de 1.7V fue seleccionado experimentalmente. Por debajo de este valor, es posible que el microcontrolador ya no funcione de manera estable. Cuando el voltaje de la batería cae por debajo de este umbral, el estabilizador NCP1400 ya no se apaga y el consumo en modo de suspensión es bastante alto. En este modo, las baterías no durarán mucho, pero habrá tiempo suficiente para reemplazarlas.
Encarnación en la glándula
Diseñé tableros de alimentación universales para mis dispositivos domésticos inteligentes


Y aunque los dispositivos terminados no eran tan compactos como con las baterías de litio, el resultado fue bastante bueno para mí. especialmente teniendo en cuenta el costo de las pilas alcalinas en las tiendas de Galomart, Kastorama, Leroyle, etc.

Actualmente, opero en casa más de una docena de dispositivos diferentes para controlar la temperatura, la humedad del suelo, etc. en el sistema MuSensors / MajorDoMo.
Leer más en mi blog