SLUUCP8 June 2024 BQ41Z50
The BQ41Z50 device includes an accumulated charge function that measures the integrated current passed in or out of the battery. This function can be used to generate an alert to the host when a programmable threshold of accumulated charge is achieved.
The device also integrates the elapsed time since the current integration began, assuming the timer has not been interrupted by a power cycle or put into SHUTDOWN mode. This time is read using the command AccumulatedTimeCharge(). If an event has occurred that interrupted the timer, the value of AccumulatedTimeCharge() will be fixed unchanging at 0 until the integration is reset.
The current and time integration is started at initial power up or upon issue of the AccumulationStart() command. The current and time integration is stopped upon issue of the AccumulationStop() command. The current and time integration is reset at initial power up or upon issue of the AccumulationReset() command.
While the battery is DISCHARGING, then the current integration counter decreases. If the battery starts CHARGING then the current integration counter increases. The integrated charge value in mAh (or cWh if BatteryMode()[CAPM] = 1) and the elapsed time (which does not decrease in value) can be read by the host using the command AccumulatedTimeCharge().
The Accumulated Charge calculation uses the current measured across the sense resistor and, similar to the coulomb counter integration, ignores currents below a programmed level controlled by CC Deadband. In periods when the BQ41Z50 device is in SLEEP mode, the Accumulated Charge integration includes an estimate of the charge integrated based on analysis of the periodic measured current if [SLP_ACCUM] is enabled.
The current integration can also be limited to only include positive (charging) currents, only negative (discharging) currents, or both, through setting the [ACCHG_EN] and [ACDSG_EN] configuration bits. If both [ACCHG_EN] and [ACDSG_EN] are cleared, then the timer is halted. These bits can be set using the AccumulationChargeEnable() and AccumulationDischargeEnable() commands.
The user can set thresholds to alert the host when accumulated charge reaches a particular level in both the charge (positive) and discharge (negative) directions. These thresholds are set by AccumulationChargeThreshold and AccumulationDischargeThreshold, which can be changed in SEALED mode with AccumulationChargeThreshold() and AccumulationDischargeThreshold(). Setting one or both of these to zero will disable the associated threshold.
AccumulatedTimeCharge() does not reset when a threshold is reached, the data is only reset by the host using the AccumulationReset() command. When a threshold is passed, a flag is set in OperationStatus()[ACTHR].
Due to the current integration and timer information being stored in RAM, any power cycle of the device or putting the device into SHUTDOWN will result in the loss of AccumulatedTimeCharge() data.