Alternator Duty Cycle Adder for AC Fan fix #4973

This commit is contained in:
rusefillc 2023-01-24 10:29:08 -05:00
parent 2256223c55
commit 728db11c56
5 changed files with 7 additions and 2 deletions

View File

@ -68,6 +68,7 @@ Release template (copy/paste this for new release):
- 3-cylinder Benelli trigger
- ETB intermittent sensors protection #4832
- ETB output average and rate of change gauges #4833
- Alternator Duty Cycle Adder for AC Fan #4973
### Fixed
- Fuel Priming reset fix #4627

View File

@ -69,6 +69,9 @@ void AlternatorController::onFastCallback() {
alternatorControl.setSimplePwmDutyCycle(0);
} else {
currentAltDuty = alternatorPid.getOutput(targetVoltage, vBatt.Value, FAST_CALLBACK_PERIOD_MS / 1000.0f);
// huh, why do we bump based on button not based on actual A/C relay state?
int acDutyBump = engine->module<AcController>().unmock().acButtonState ? engineConfiguration->acRelayAlternatorDutyAdder : 0;
currentAltDuty += acDutyBump;
if (engineConfiguration->isVerboseAlternator) {
efiPrintf("alt duty: %.2f/vbatt=%.2f/p=%.2f/i=%.2f/d=%.2f int=%.2f", currentAltDuty, vBatt.Value,
alternatorPid.getP(), alternatorPid.getI(), alternatorPid.getD(), alternatorPid.getIntegration());

View File

@ -27,6 +27,7 @@ int IdleController::getTargetRpm(float clt) {
targetRpmByClt = interpolate2d(clt, config->cltIdleRpmBins, config->cltIdleRpm);
// Bump for AC
// huh, why do we bump based on button not based on actual A/C relay state?
targetRpmAcBump = engine->module<AcController>().unmock().acButtonState ? engineConfiguration->acIdleRpmBump : 0;
return targetRpmByClt + targetRpmAcBump;

View File

@ -1550,7 +1550,7 @@ float alsMaxDuration;;"sec", 1, 0, 0.01, 100, 2
int8_t ALSMaxCLT;;"C", 1, 0, 0, 105, 0
uint8_t alsMinTimeBetween;;"", 1, 0, 0, 20000, 0
uint8_t alsEtbPosition;;"", 1, 0, 0, 20000, 0
uint8_t acFanAlternatorDutyAdder
uint8_t acRelayAlternatorDutyAdder
uint8_t[3] unusedAlignmentFill_at_33
int ALSIdleAdd;;"%", 1, 0, 0, 100, 2
int ALSEtbAdd;;"%", 1, 0, 0, 100, 2

View File

@ -3483,7 +3483,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
field = "Control outpur mode", alternatorControlPinMode, {isAlternatorControlEnabled == 1}
field = "PWM frequency", alternatorPwmFrequency, {isAlternatorControlEnabled == 1}
field = "Off Above TPS", alternatorOffAboveTps, {isAlternatorControlEnabled == 1}
field = "A/C duty adder", acFanAlternatorDutyAdder, {isAlternatorControlEnabled == 1}
field = "A/C duty adder", acRelayAlternatorDutyAdder, {isAlternatorControlEnabled == 1}
field = "Detailed status in console", isVerboseAlternator, {isAlternatorControlEnabled == 1}
field = "#PID control"
field = "offset", alternatorControl_offset, {isAlternatorControlEnabled == 1}