disable closed loop boost below MAP threshold (#3206)

* boost minimum map

* changelog
This commit is contained in:
Matthew Kennedy 2021-08-27 14:54:08 -07:00 committed by GitHub
parent 22158cbc4a
commit 6407e74ae2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 1 deletions

View File

@ -31,6 +31,7 @@ All notable user-facing or behavior-altering changes will be documented in this
- RUSEFI MSD now contains bundle-specific URL #2848
- Nissan 4 cylinder QR trigger wheel #3118
- 1-6-2-4-3-5 firing order for all our 911 fans!
- Add minimum MAP threshold for closed-loop boost control
### Fixed
- Composite Logger uses same engineSnifferRpmThreshold setting as engine sniffer #3161

View File

@ -106,6 +106,12 @@ expected<percent_t> BoostController::getClosedLoop(float target, float manifoldP
return 0;
}
if (manifoldPressure < CONFIG(minimumBoostClosedLoopMap)) {
// We're below the CL threshold, inhibit CL for now
m_pid.reset();
return 0;
}
float closedLoop = m_pid.getOutput(target, manifoldPressure, SLOW_CALLBACK_PERIOD_MS / 1000.0f);
#if EFI_TUNER_STUDIO

View File

@ -901,7 +901,7 @@ pin_output_mode_e hip9011IntHoldPinMode;
uint32_t verboseCanBaseAddress;;"", 1, 0, 0, 536870911, 0
uint8_t mc33_hvolt;;"v", 1, 0, 40, 70, 0
uint8_t unused761;;"", 1, 0, 0, 255, 0
uint8_t minimumBoostClosedLoopMap;+Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost.;"kPa", 1, 0, 0, 255, 0
output_pin_e acFanPin;+Optional Radiator Fan used with A/C
pin_output_mode_e acFanPinMode;

View File

@ -3381,6 +3381,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
;Boost Closed Loop
dialog = boostPidleft, ""
field = "Enable closed loop above", minimumBoostClosedLoopMap, { isBoostControlEnabled && boostType == 1 }
field = "P Gain", boostPid_pFactor, { isBoostControlEnabled && boostType == 1 }
field = "I Gain", boostPid_iFactor, { isBoostControlEnabled && boostType == 1 }
field = "D Gain", boostPid_dFactor, { isBoostControlEnabled && boostType == 1 }

View File

@ -87,11 +87,17 @@ TEST(BoostControl, ClosedLoop) {
// Enable closed loop
CONFIG(boostType) = CLOSED_LOOP;
// Minimum 75kpa
CONFIG(minimumBoostClosedLoopMap) = 75;
// At 0 RPM, closed loop is disabled
ENGINE(rpmCalculator.mockRpm) = 0;
EXPECT_EQ(0, bc.getClosedLoop(150, 100).value_or(-1000));
// too low MAP, disable closed loop
ENGINE(rpmCalculator.mockRpm) = 0;
EXPECT_EQ(0, bc.getClosedLoop(150, 50).value_or(-1000));
// With RPM, we should get an output
ENGINE(rpmCalculator.mockRpm) = 1000;
// Actual is below target -> positive output