Skip to content

Commit

Permalink
battery: weigh voltage based estimate more when it's low
Browse files Browse the repository at this point in the history
This is a minimal change to make it harder to crash a
vehicle with an empty battery if the capacity was set wrong.

The disadvantage is that the state of charge estimate will
fluctuate more under load.

We need better documentation and improvements to the estimation.
  • Loading branch information
MaEtUgR committed Apr 2, 2024
1 parent 8579175 commit fb8b612
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/lib/battery/battery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,10 @@ float Battery::calculateStateOfChargeVoltageBased(const float voltage_v, const f
void Battery::estimateStateOfCharge()
{
// choose which quantity we're using for final reporting
if (_params.capacity > 0.f && _battery_initialized) {
if ((_params.capacity > 0.f) && _battery_initialized) {
// if battery capacity is known, fuse voltage measurement with used capacity
// The lower the voltage the more adjust the estimate with it to avoid deep discharge
const float weight_v = 3e-4f * (1 - _state_of_charge_volt_based);
const float weight_v = 3e-2f * (1 - _state_of_charge_volt_based);
_state_of_charge = (1 - weight_v) * _state_of_charge + weight_v * _state_of_charge_volt_based;
// directly apply current capacity slope calculated using current
_state_of_charge -= _discharged_mah_loop / _params.capacity;
Expand Down

0 comments on commit fb8b612

Please sign in to comment.