diff --git a/src/main/flight/pid.c b/src/main/flight/pid.c index 90ddf5e0d6..5cb8d43998 100644 --- a/src/main/flight/pid.c +++ b/src/main/flight/pid.c @@ -203,6 +203,8 @@ static void pidLuxFloat(pidProfile_t *pidProfile, controlRateConfig_t *controlRa // multiplication of rcCommand corresponds to changing the sticks scaling here RateError = AngleRate - gyroRate; + if (lowThrottlePidReduction) RateError /= 4; + // -----calculate P component PTerm = RateError * pidProfile->P_f[axis] * PIDweight[axis] / 100; @@ -286,6 +288,8 @@ static void pidMultiWii23(pidProfile_t *pidProfile, controlRateConfig_t *control rc = rcCommand[axis] << 1; + if (lowThrottlePidReduction) rc /= 4; + gyroError = gyroADC[axis] / 4; error = rc - gyroError; @@ -466,6 +470,8 @@ static void pidMultiWiiRewrite(pidProfile_t *pidProfile, controlRateConfig_t *co gyroRate = gyroADC[axis] / 4; RateError = AngleRateTmp - gyroRate; + if (lowThrottlePidReduction) RateError /= 4; + // -----calculate P component PTerm = (RateError * pidProfile->P8[axis] * PIDweight[axis] / 100) >> 7;