Commander: Fix dynamic battery scaling, proposed by @orangelynx. Fixes #2523.

This commit is contained in:
Lorenz Meier 2015-07-03 23:17:07 +02:00
parent ecaa25ba1a
commit e23459e850

View File

@ -382,8 +382,12 @@ float battery_remaining_estimate_voltage(float voltage, float discharged, float
counter++;
/* remaining charge estimate based on voltage and internal resistance (drop under load) */
float bat_v_full_dynamic = bat_v_full - (bat_v_load_drop * throttle_normalized);
float remaining_voltage = (voltage - (bat_n_cells * bat_v_empty)) / (bat_n_cells * (bat_v_full_dynamic - bat_v_empty));
float bat_v_empty_dynamic = bat_v_empty - (bat_v_load_drop * throttle_normalized);
/* the range from full to empty is the same for batteries under load and without load,
* since the voltage drop applies to both the full and empty state
*/
float voltage_range = (bat_v_full - bat_v_empty)
float remaining_voltage = (voltage - (bat_n_cells * bat_v_empty_dynamic)) / (bat_n_cells * voltage_range);
if (bat_capacity > 0.0f) {
/* if battery capacity is known, use discharged current for estimate, but don't show more than voltage estimate */