AP_Motors: add and use AP_BATTERY_ENABLED

This commit is contained in:
Peter Barker 2024-01-31 22:07:24 +11:00 committed by Andrew Tridgell
parent b48b26ddb8
commit eda6d0b6a0
3 changed files with 8 additions and 0 deletions

View File

@ -359,6 +359,7 @@ void AP_Motors6DOF::output_armed_stabilizing()
} }
} }
#if AP_BATTERY_ENABLED
const AP_BattMonitor &battery = AP::battery(); const AP_BattMonitor &battery = AP::battery();
// Current limiting // Current limiting
@ -384,6 +385,7 @@ void AP_Motors6DOF::output_armed_stabilizing()
batt_current_ratio = predicted_current_ratio; batt_current_ratio = predicted_current_ratio;
} }
_output_limited += (_dt / (_dt + _batt_current_time_constant)) * (1 - batt_current_ratio); _output_limited += (_dt / (_dt + _batt_current_time_constant)) * (1 - batt_current_ratio);
#endif
_output_limited = constrain_float(_output_limited, 0.0f, 1.0f); _output_limited = constrain_float(_output_limited, 0.0f, 1.0f);

View File

@ -345,6 +345,7 @@ void AP_MotorsMulticopter::update_throttle_filter()
// 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 AP_MotorsMulticopter::get_current_limit_max_throttle() float AP_MotorsMulticopter::get_current_limit_max_throttle()
{ {
#if AP_BATTERY_ENABLED
AP_BattMonitor &battery = AP::battery(); AP_BattMonitor &battery = AP::battery();
const uint8_t batt_idx = thr_lin.get_battery_index(); const uint8_t batt_idx = thr_lin.get_battery_index();
@ -376,6 +377,9 @@ float AP_MotorsMulticopter::get_current_limit_max_throttle()
// limit max throttle // limit max throttle
return get_throttle_hover() + ((1.0 - get_throttle_hover()) * _throttle_limit); return get_throttle_hover() + ((1.0 - get_throttle_hover()) * _throttle_limit);
#else
return 1.0;
#endif
} }
#if HAL_LOGGING_ENABLED #if HAL_LOGGING_ENABLED

View File

@ -151,6 +151,7 @@ float Thrust_Linearization::remove_thrust_curve_and_volt_scaling(float throttle)
// update_lift_max from battery voltage - used for voltage compensation // update_lift_max from battery voltage - used for voltage compensation
void Thrust_Linearization::update_lift_max_from_batt_voltage() void Thrust_Linearization::update_lift_max_from_batt_voltage()
{ {
#if AP_BATTERY_ENABLED
// sanity check battery_voltage_min is not too small // sanity check battery_voltage_min is not too small
// if disabled or misconfigured exit immediately // if disabled or misconfigured exit immediately
float _batt_voltage = motors.has_option(AP_Motors::MotorOptions::BATT_RAW_VOLTAGE) ? AP::battery().voltage(batt_idx) : AP::battery().voltage_resting_estimate(batt_idx); float _batt_voltage = motors.has_option(AP_Motors::MotorOptions::BATT_RAW_VOLTAGE) ? AP::battery().voltage(batt_idx) : AP::battery().voltage_resting_estimate(batt_idx);
@ -177,6 +178,7 @@ void Thrust_Linearization::update_lift_max_from_batt_voltage()
// calculate lift max // calculate lift max
float thrust_curve_expo = constrain_float(curve_expo, -1.0, 1.0); float thrust_curve_expo = constrain_float(curve_expo, -1.0, 1.0);
lift_max = batt_voltage_filt.get() * (1 - thrust_curve_expo) + thrust_curve_expo * batt_voltage_filt.get() * batt_voltage_filt.get(); lift_max = batt_voltage_filt.get() * (1 - thrust_curve_expo) + thrust_curve_expo * batt_voltage_filt.get() * batt_voltage_filt.get();
#endif
} }
// return gain scheduling gain based on voltage and air density // return gain scheduling gain based on voltage and air density