AP_MotorsMulticopter: current_limit_max_throttle uses get_throttle accessor

This commit is contained in:
Leonard Hall 2016-01-21 15:17:13 +09:00 committed by Randy Mackay
parent 3cbc15bb5b
commit 8228d9e72c
2 changed files with 2 additions and 41 deletions

View File

@ -163,40 +163,6 @@ void AP_MotorsMulticopter::update_throttle_filter()
} }
} }
// current_limit_max_throttle - limits maximum throttle based on current
void AP_MotorsMulticopter::current_limit_max_throttle()
{
// return maximum if current limiting is disabled
if (_batt_current_max <= 0) {
_throttle_limit = 1.0f;
_max_throttle = AP_MOTORS_DEFAULT_MAX_THROTTLE;
return;
}
// remove throttle limit if throttle is at zero or disarmed
if(_throttle_in <= 0.0f || !_flags.armed) {
_throttle_limit = 1.0f;
}
// limit throttle if over current
if (_batt_current > _batt_current_max*1.25f) {
// Fast drop for extreme over current (1 second)
_throttle_limit -= 1.0f/_loop_rate;
} else if(_batt_current > _batt_current_max) {
// Slow drop for extreme over current (5 second)
_throttle_limit -= 0.2f/_loop_rate;
} else {
// Increase throttle limit (2 second)
_throttle_limit += 0.5f/_loop_rate;
}
// throttle limit drops to 20% between hover and full throttle
_throttle_limit = constrain_float(_throttle_limit, 0.2f, 1.0f);
// limit max throttle
_max_throttle = _hover_out + ((1000-_hover_out)*_throttle_limit);
}
// return current_limit as a number from 0 ~ 1 in the range throttle_min to throttle_max // return current_limit as a number from 0 ~ 1 in the range throttle_min to throttle_max
//todo: replace this with a variable P term //todo: replace this with a variable P term
float AP_MotorsMulticopter::get_current_limit_max_throttle() float AP_MotorsMulticopter::get_current_limit_max_throttle()
@ -204,14 +170,12 @@ float AP_MotorsMulticopter::get_current_limit_max_throttle()
// return maximum if current limiting is disabled // return maximum if current limiting is disabled
if (_batt_current_max <= 0) { if (_batt_current_max <= 0) {
_throttle_limit = 1.0f; _throttle_limit = 1.0f;
_max_throttle = AP_MOTORS_DEFAULT_MAX_THROTTLE;
return 1.0f; return 1.0f;
} }
// remove throttle limit if throttle is at zero or disarmed // remove throttle limit if disarmed
if(_throttle_in <= 0.0f || !_flags.armed) { if (!_flags.armed) {
_throttle_limit = 1.0f; _throttle_limit = 1.0f;
_max_throttle = AP_MOTORS_DEFAULT_MAX_THROTTLE;
return 1.0f; return 1.0f;
} }

View File

@ -133,9 +133,6 @@ protected:
// update the throttle input filter // update the throttle input filter
virtual void update_throttle_filter(); virtual void update_throttle_filter();
// current_limit_max_throttle - current limit maximum throttle (called from update_max_throttle)
void current_limit_max_throttle();
// return current_limit as a number from 0 ~ 1 in the range throttle_min to throttle_max // return current_limit as a number from 0 ~ 1 in the range throttle_min to throttle_max
float get_current_limit_max_throttle(); float get_current_limit_max_throttle();