From bee6c29b896ca2aff90905c7f643855a7a364e54 Mon Sep 17 00:00:00 2001 From: Leonard Hall Date: Wed, 8 Jun 2016 21:00:49 +0900 Subject: [PATCH] AP_MotorsMulticopter: current limit keeps battery from sagging below BAT_VOLT_MIN --- libraries/AP_Motors/AP_MotorsMulticopter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Motors/AP_MotorsMulticopter.cpp b/libraries/AP_Motors/AP_MotorsMulticopter.cpp index 7789a65f68..327137e394 100644 --- a/libraries/AP_Motors/AP_MotorsMulticopter.cpp +++ b/libraries/AP_Motors/AP_MotorsMulticopter.cpp @@ -229,7 +229,10 @@ float AP_MotorsMulticopter::get_current_limit_max_throttle() return 1.0f; } - float batt_current_ratio = _batt_current/_batt_current_max; + // calculate the maximum current to prevent voltage sag below _batt_voltage_min + float batt_current_max = MIN(_batt_current_max, _batt_current + (_batt_voltage-_batt_voltage_min)/_batt_resistance); + + float batt_current_ratio = _batt_current/batt_current_max; float loop_interval = 1.0f/_loop_rate; _throttle_limit += (loop_interval/(loop_interval+_batt_current_time_constant))*(1.0f - batt_current_ratio);