MicroPython driver for the Texas Instruments BQ27441-G1A LiPo fuel gauge.
This library is a port of the SparkFun BQ27441 Arduino Library.
| Parameter | Value |
|---|---|
| Device | BQ27441-G1A |
| Interface | I²C |
| Default I²C address | 0x55 |
| Operating voltage | 2.5–4.5 V |
| Default capacity | 650 mAh |
Note: The BQ27441 only responds on I²C when a battery is connected.
- Battery voltage measurement (mV)
- State of charge (%)
- Remaining and full capacity (mAh)
- Average, standby, and max current
- Average power
- State of health (%)
- Battery and internal temperature
- Configurable design capacity
- Power management (shutdown / wake-up)
- GPOUT interrupt configuration (SOC_INT / BAT_LOW)
- Seal / unseal device control
from machine import I2C
from bq27441 import BQ27441
i2c = I2C(1)
bq = BQ27441(i2c)
print("Voltage:", bq.voltage_mv(), "mV")
print("Charge:", bq.state_of_charge(), "%")
print("Current:", bq.current_average(), "mA")bq = BQ27441(i2c, address=0x55)bq.voltage_mv()— battery voltage in mVbq.state_of_charge()— battery level in % (filtered)bq.capacity_remaining()— remaining capacity in mAhbq.capacity_full()— full charge capacity in mAhbq.current_average()— average current in mAbq.state_of_health()— battery health in %bq.power()— average power in mW
Several methods accept a type parameter for different measurement modes. The type constants are defined in bq27441.device:
from bq27441.device import CurrentMeasureType, CapacityMeasureType
from bq27441.device import SocMeasureType, SohMeasureType, TempMeasureTypebq.current(CurrentMeasureType.AVG) # Average current (default)
bq.current(CurrentMeasureType.STBY) # Standby current
bq.current(CurrentMeasureType.MAX) # Max currentbq.capacity(CapacityMeasureType.REMAIN) # Remaining (default)
bq.capacity(CapacityMeasureType.FULL) # Full charge
bq.capacity(CapacityMeasureType.AVAIL) # Available
bq.capacity(CapacityMeasureType.AVAIL_FULL) # Full available
bq.capacity(CapacityMeasureType.REMAIN_F) # Remaining filtered
bq.capacity(CapacityMeasureType.REMAIN_UF) # Remaining unfiltered
bq.capacity(CapacityMeasureType.FULL_F) # Full filtered
bq.capacity(CapacityMeasureType.FULL_UF) # Full unfiltered
bq.capacity(CapacityMeasureType.DESIGN) # Design capacitybq.soc(SocMeasureType.FILTERED) # Filtered SoC (default)
bq.soc(SocMeasureType.UNFILTERED) # Unfiltered SoCbq.soh(SohMeasureType.PERCENT) # Health percentage (default)
bq.soh(SohMeasureType.SOH_STAT) # Health status bitsbq.temperature() # Battery temperature in °C (default)
bq.temperature(TempMeasureType.INTERNAL_TEMP) # Internal IC temperature in °C
bq.temperature_k() # Battery temperature in Kelvin
bq.temperature_dk() # Battery temperature in decikelvin (raw)# Set battery design capacity
bq.set_capacity(650)
# Configuration mode (required for some settings)
bq.enter_config(user_control=True)
# ... modify settings ...
bq.exit_config(resim=True)from bq27441.device import GpoutFunctionType
# Configure GPOUT function
bq.set_gpout_function(GpoutFunctionType.SOC_INT) # SoC change interrupt
bq.set_gpout_function(GpoutFunctionType.BAT_LOW) # Battery low alert
# GPOUT polarity
bq.gpout_polarity() # Read current polarity
bq.set_gpout_polarity(active_high=True)
# GPOUT pin direction
bq.configure_gpout_input()
bq.configure_gpout_output()
# SoC thresholds
bq.set_soc1_thresholds(set_soc=15, clear_soc=20)
bq.set_socf_thresholds(set_socf=5, clear_socf=10)
# Read thresholds
bq.soc1_set_threshold()
bq.soc1_clear_threshold()
bq.socf_set_threshold()
bq.socf_clear_threshold()
# SoC flags and delta
bq.soc_flag() # SoC1 threshold crossed
bq.socf_flag() # SoCF threshold crossed
bq.soci_delta() # SoC interrupt delta
bq.set_soci_delta(delta=1)
# Pulse GPOUT
bq.pulse_gpout()bq.power_on()— wake device from shutdownbq.power_off()— enter shutdown modebq.enable_shutdown_mode()— enable shutdown via GPOUTbq.enter_shutdown_mode()— enter shutdownbq.disable_shutdown_mode()— disable shutdown mode
bq.device_id()— read device type IDbq.is_valid_device()— check if device is BQ27441bq.flags()— read status flags registerbq.reset()— full device resetbq.soft_reset()— soft reset
bq.sealed()— check if device is sealedbq.seal()— seal the device (restrict configuration access)bq.unseal()— unseal for configuration
bq.op_config()— read OpConfig registerbq.write_op_config(value)— write OpConfig register
| File | Description |
|---|---|
fuel_gauge.py |
Battery monitoring (voltage, SoC, current, health) |
mpremote mount lib/bq27441 run lib/bq27441/examples/fuel_gauge.py- The BQ27441 requires a connected LiPo battery to respond on I²C.
- Default design capacity is 650 mAh (configurable via
set_capacity()). - Some configuration operations require entering config mode with
enter_config(). - The device may be sealed; use
unseal()before advanced configuration. temperature()returns °C by default. Usetemperature_k()for Kelvin ortemperature_dk()for raw decikelvin.