WLED/usermods/Battery/readme.md
Adam Matthews bc5aadff7d Update Usermod: Battery
Issue:
When taking the initial voltage reading after first powering on, voltage hasn't had chance to stabilize so the reading can be inaccurate, which in turn may incorrectly trigger the low-power preset. (Manifests when the user has selected a low read interval and/or is using a capacitor).

Resolution:
A non-blocking, fixed 10 second delay has been added to the initial voltage reading to give the voltage time to stabilize.

This is a reworked version of the (now closed) PR here:
https://github.com/Aircoookie/WLED/pull/3959

- Rebased the update for 0_15.

- Added a constant so the delay can be modified via my_config.h.

- Small adjustments to make the PR compatible again after the recent restructuring in this PR: (https://github.com/Aircoookie/WLED/pull/3003).

Thankyou!
2024-05-09 23:09:45 +01:00

6.6 KiB

Welcome to the battery usermod! 🔋

Enables battery level monitoring of your project.

For this to work, the positive side of the (18650) battery must be connected to pin A0 of the d1 mini/esp8266 with a 100k Ohm resistor (see Useful Links).

If you have an ESP32 board, connect the positive side of the battery to ADC1 (GPIO32 - GPIO39)

⚙️ Features

  • 💯 Displays current battery voltage
  • 🚥 Displays battery level
  • 🚫 Auto-off with configurable Threshold
  • 🚨 Low power indicator with many configuration possibilities

🎈 Installation

define USERMOD_BATTERY in wled00/my_config.h

Example wiring

Define Your Options

Name Unit Description
USERMOD_BATTERY define this (in my_config.h) to have this usermod included wled00\usermods_list.cpp
USERMOD_BATTERY_MEASUREMENT_PIN defaults to A0 on ESP8266 and GPIO35 on ESP32
USERMOD_BATTERY_INITIAL_DELAY ms delay before initial reading. defaults to 10 seconds to allow voltage stabilization
USERMOD_BATTERY_MEASUREMENT_INTERVAL ms battery check interval. defaults to 30 seconds
USERMOD_BATTERY_{TYPE}_MIN_VOLTAGE v minimum battery voltage. default is 2.6 (18650 battery standard)
USERMOD_BATTERY_{TYPE}_MAX_VOLTAGE v maximum battery voltage. default is 4.2 (18650 battery standard)
USERMOD_BATTERY_{TYPE}_TOTAL_CAPACITY mAh the capacity of all cells in parallel summed up
USERMOD_BATTERY_{TYPE}_CALIBRATION offset / calibration number, fine tune the measured voltage by the microcontroller
Auto-Off --- ---
USERMOD_BATTERY_AUTO_OFF_ENABLED true/false enables auto-off
USERMOD_BATTERY_AUTO_OFF_THRESHOLD % (0-100) when this threshold is reached master power turns off
Low-Power-Indicator --- ---
USERMOD_BATTERY_LOW_POWER_INDICATOR_ENABLED true/false enables low power indication
USERMOD_BATTERY_LOW_POWER_INDICATOR_PRESET preset id when low power is detected then use this preset to indicate low power
USERMOD_BATTERY_LOW_POWER_INDICATOR_THRESHOLD % (0-100) when this threshold is reached low power gets indicated
USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION seconds for this long the configured preset is played

All parameters can be configured at runtime via the Usermods settings page.

NOTICE: Each Battery type can be pre-configured individualy (in my_config.h)

Name Alias my_config.h example
Lithium Polymer lipo (Li-Po) USERMOD_BATTERY_lipo_MIN_VOLTAGE
Lithium Ionen lion (Li-Ion) USERMOD_BATTERY_lion_TOTAL_CAPACITY

⚠️ Important

  • Make sure you know your battery specifications! All batteries are NOT the same!
  • Example:
Your battery specification table Options you can define
Capacity 3500mAh 12,5 Wh
Minimum capacity 3350mAh 11,9 Wh
Rated voltage 3.6V - 3.7V
Charging end voltage 4,2V ± 0,05 USERMOD_BATTERY_MAX_VOLTAGE
Discharge voltage 2,5V USERMOD_BATTERY_MIN_VOLTAGE
Max. discharge current (constant) 10A (10000mA)
max. charging current 1.7A (1700mA)
... ... ...
.. .. ..

Specification from: Molicel INR18650-M35A, 3500mAh 10A Lithium-ion battery, 3.6V - 3.7V

📝 Change Log

2024-04-30

  • improved initial reading accuracy by delaying initial measurement to allow voltage to stabilize at power-on

2024-04-30

  • integrate factory pattern to make it easier to add other / custom battery types
  • update readme

2023-01-04

  • basic support for LiPo rechargeable batteries ( -D USERMOD_BATTERY_USE_LIPO)
  • improved support for esp32 (read calibrated voltage)
  • corrected config saving (measurement pin, and battery min/max were lost)
  • various bugfixes

2022-12-25

  • added "auto-off" feature
  • added "low-power-indication" feature
  • added "calibration/offset" field to configuration page
  • added getter and setter, so that user usermods could interact with this one
  • update readme (added new options, made it markdownlint compliant)

2021-09-02

  • added "Battery voltage" to info
  • added circuit diagram to readme
  • added MQTT support, sending battery voltage
  • minor fixes

2021-08-15

  • changed USERMOD_BATTERY_MIN_VOLTAGE to 2.6 volt as default for 18650 batteries
  • Updated readme, added specification table

2021-08-10

  • Created