diff --git a/src/main/cli/settings.c b/src/main/cli/settings.c index aa80f77fb4..d9b61c23a6 100644 --- a/src/main/cli/settings.c +++ b/src/main/cli/settings.c @@ -1109,7 +1109,7 @@ const clivalue_t valueTable[] = { { "yaw_control_reversed", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RC_CONTROLS_CONFIG, offsetof(rcControlsConfig_t, yaw_control_reversed) }, #ifdef USE_ALT_HOLD_MODE - { PARAM_NAME_ALT_HOLD_ADJUST_RATE, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 200 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_adjust_rate) }, + { PARAM_NAME_ALT_HOLD_ADJUST_RATE, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 250 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_adjust_rate) }, { PARAM_NAME_ALT_HOLD_DEADBAND, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 5, 50 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_deadband) }, #endif diff --git a/src/main/flight/alt_hold.c b/src/main/flight/alt_hold.c index fde9a4771e..9b7e7a46b5 100644 --- a/src/main/flight/alt_hold.c +++ b/src/main/flight/alt_hold.c @@ -40,6 +40,7 @@ static const float taskIntervalSeconds = HZ_TO_INTERVAL(ALTHOLD_TASK_RATE_HZ); / typedef struct { bool isAltHoldActive; float targetAltitudeCm; + float adjustRateMultiplier; float targetAltitudeAdjustRate; float deadband; } altHoldState_t; @@ -74,6 +75,7 @@ void altHoldInit(void) { altHoldState.isAltHoldActive = false; altHoldState.deadband = altHoldConfig()->alt_hold_deadband / 100.0f; + altHoldState.adjustRateMultiplier = 5.0f * altHoldConfig()->alt_hold_adjust_rate; altHoldReset(); } @@ -136,7 +138,7 @@ void altHoldUpdateTargetAltitude(void) // constant (set) deceleration target in the last 2m throttleAdjustmentFactor = -(0.9f + constrainf(getAltitudeCm() / 2000.0f, 0.1f, 9.0f)); } - altHoldState.targetAltitudeAdjustRate = throttleAdjustmentFactor * altHoldConfig()->alt_hold_adjust_rate; + altHoldState.targetAltitudeAdjustRate = throttleAdjustmentFactor * altHoldState.adjustRateMultiplier; // if taskRate is 100Hz, default adjustRate of 100 adds/subtracts 1m every second, or 1cm per task run, at full stick position altHoldState.targetAltitudeCm += altHoldState.targetAltitudeAdjustRate * taskIntervalSeconds; diff --git a/src/main/pg/alt_hold.c b/src/main/pg/alt_hold.c index 79d0fa9dd1..499f5b0342 100644 --- a/src/main/pg/alt_hold.c +++ b/src/main/pg/alt_hold.c @@ -34,6 +34,6 @@ PG_REGISTER_WITH_RESET_TEMPLATE(altHoldConfig_t, altHoldConfig, PG_ALTHOLD_CONFI PG_RESET_TEMPLATE(altHoldConfig_t, altHoldConfig, .alt_hold_adjust_rate = 100, // max rate of change of altitude target using sticks in cm/s - .alt_hold_deadband = 40, // throttle deadband in percent of stick travel + .alt_hold_deadband = 20, // throttle deadband in percent of stick travel ); #endif