From 8c4620b77ecf38eac9c52e29694162502432ae57 Mon Sep 17 00:00:00 2001 From: chfriedrich98 <125505139+chfriedrich98@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:22:52 +0200 Subject: [PATCH] battery: simplify battery scale calculation (#23417) --- src/lib/battery/battery.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/lib/battery/battery.cpp b/src/lib/battery/battery.cpp index 213d8fc017..302cbca056 100644 --- a/src/lib/battery/battery.cpp +++ b/src/lib/battery/battery.cpp @@ -339,17 +339,12 @@ uint16_t Battery::determineFaults() void Battery::computeScale() { - const float voltage_range = (_params.v_charged - _params.v_empty); + _scale = _params.v_charged / _cell_voltage_filter_v.getState(); - // reusing capacity calculation to get single cell voltage before drop - const float bat_v = _params.v_empty + (voltage_range * _state_of_charge_volt_based); + if (PX4_ISFINITE(_scale)) { + _scale = math::constrain(_scale, 1.f, 1.3f); // Allow at most 30% compensation - _scale = _params.v_charged / bat_v; - - if (_scale > 1.3f) { // Allow at most 30% compensation - _scale = 1.3f; - - } else if (!PX4_ISFINITE(_scale) || _scale < 1.f) { // Shouldn't ever be more than the power at full battery + } else { _scale = 1.f; } }