From 890d01467904b7de7efd27beaf14004cc0984670 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Wed, 30 Dec 2020 05:36:07 -0800 Subject: [PATCH] update idle UI (#2157) * redo idle UI * tooltip update Co-authored-by: Matthew Kennedy --- firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/rusefi.input | 87 ++++++++++++++------------ 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index fcdaa08555..b0b0ac74de 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -855,7 +855,7 @@ custom uart_device_e 1 bits,U32, @OFFSET@, [0:1], "Off", "UART1", "UART2", "UA switch_input_pin_e startStopButtonPin;See also starterControlPin int mapMinBufferLength;;"count", 1, 0, 0, 24, 0 - int16_t idlePidDeactivationTpsThreshold;;"%", 1, 0, 0, 100.0, 0 + int16_t idlePidDeactivationTpsThreshold;+Below this throttle position, the engine is considered idling.;"%", 1, 0, 0, 100.0, 0 int16_t stepperParkingExtraSteps;;"%", 1, 0, 0, 3000.0, 0 uint16_t tps1SecondaryMin;;"ADC", 1, 0, 0, 1000, 0 uint16_t tps1SecondaryMax;;"ADC", 1, 0, 0, 1000, 0 diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 850ec541f3..9b77986394 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1411,16 +1411,16 @@ menuDialog = main menu = "&Idle" subMenu = idleSettings, "Idle settings" subMenu = idlehw, "Idle hardware" - subMenu = std_separator - subMenu = cltIdleRPMCurve, "Target RPM", 0, {idleMode == 0} + subMenu = std_separator + subMenu = cltIdleRPMCurve, "Target RPM" + subMenu = cltIdleCurve, "CLT multiplier" + subMenu = std_separator + subMenu = idleTimingPidCorrDialog, "Closed-loop idle timing" subMenu = iacPidMultTbl, "IAC PID Multiplier", 0, {idleMode == 0 && useIacPidMultTable == 1} + subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1} subMenu = std_separator subMenu = idleVeCurve, "VE", 0, {useSeparateVeForIdle == 1} subMenu = idleAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForIdle == 1} - subMenu = std_separator - subMenu = idleTimingPidCorrDialog, "Closed-loop idle timing" - subMenu = cltIdleCurve, "CLT multiplier" - subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1} menu = "&Advanced" subMenu = boostDialog, "Boost Control" @@ -2485,11 +2485,11 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "!ECU reboot needed to apply these settings" field = "Use Stepper", useStepperIdle field = "Double Solenoid Mode", isDoubleSolenoidIdle + field = "Use electronic throttle for idle", useETBforIdleControl, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ } + field = "Electronic throttle idle range", etbIdleThrottleRange, { useETBforIdleControl == 1 } panel = idleHwType - dialog = idlePidSettings, "PID IAC Control" - field = "#See Idle Target RPM Curve" - field = "use Cic Pid", useCicPidForIdle + dialog = idlePidSettings, "Closed Loop Idle" field = "P-factor", idleRpmPid_pFactor field = "I-factor", idleRpmPid_iFactor field = "derivativeFilterLoss", idle_derivativeFilterLoss @@ -2502,43 +2502,48 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax - field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone - field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit field = "PID Extra for low RPM", pidExtraForLowRpm - field = "Use IAC PID Multiplier Table", useIacPidMultTable - - - dialog = idleSettings, "", yAxis - field = "Idle IAC control mode", idleMode - field = useInstantRpmForIdle, useInstantRpmForIdle - field = "use ETB for idle", useETBforIdleControl, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ } - field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} - field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle - field = "Use separate VE Table for idle", useSeparateVeForIdle - field = "Use separate IAC Table For Coasting", useIacTableForCoasting, {idleMode == 0} field = idleIncrementalPidCic, idleIncrementalPidCic - field = "TPS deactivation threshold", idlePidDeactivationTpsThreshold + field = "use Cic Pid", useCicPidForIdle + field = "Use IAC PID Multiplier Table", useIacPidMultTable + + dialog = idleGating, "Idle Detection Thresholds" + field = "TPS threshold", idlePidDeactivationTpsThreshold + field = "RPM upper limit", idlePidRpmUpperLimit + field = "RPM dead zone", idlePidRpmDeadZone + + dialog = idleExtra, "Extra Idle Features" + field = "Extra idle air if throttle pressed", iacByTpsTaper + field = "Use idle ignition table", useSeparateAdvanceForIdle + field = "Use idle VE table", useSeparateVeForIdle + field = "Use coasting idle table", useIacTableForCoasting, {idleMode == 0} + field = useInstantRpmForIdle, useInstantRpmForIdle + field = "Detailed status in console", isVerboseIAC + + dialog = idleSettings, "", yAxis + field = "Idle control mode", idleMode + + field = "! Solenoid idle control requires above zero RPM" + slider = "Open loop idle position", manIdlePosition, horizontal + field = "" + + panel = idleGating, "" panel = idlePidSettings, { idleMode == 0} - field = "Extra IAC if Throttle Pressed", iacByTpsTaper; - field = "Detailed status in console", isVerboseIAC - field = "#See Warmup idle multiplier" - field = "! Solenoid Idle control requires above zero RPM" - slider = "Manual IAC Position", manIdlePosition, horizontal + panel = idleExtra dialog = idleTimingPidCorrDialog, "", yAxis - field = "!This timing correction mode is Alpha Version" - field = "Use Auto-PID ignition advance control", useIdleTimingPidControl - field = "#See Idle Target RPM Curve" - field = "P-factor", idleTimingPid_pFactor, {useIdleTimingPidControl == 1} - field = "I-factor", idleTimingPid_iFactor, {useIdleTimingPidControl == 1} - field = "D-factor", idleTimingPid_dFactor, {useIdleTimingPidControl == 1} - field = "Offset", idleTimingPid_offset, {useIdleTimingPidControl == 1} - field = "Min Delta", idleTimingPid_minValue, {useIdleTimingPidControl == 1} - field = "Max Delta", idleTimingPid_maxValue, {useIdleTimingPidControl == 1} - field = "#See RPM dead zone to deactivate IAC pid" - field = "RPM working zone for timing pid", idleTimingPidWorkZone, {useIdleTimingPidControl == 1} - field = "RPM working zone falloff", idlePidFalloffDeltaRpm, {useIdleTimingPidControl == 1} - field = "RPM dead zone to deactivate timing pid", idleTimingPidDeadZone, {useIdleTimingPidControl == 1} + field = "" + field = "Enable closed loop idle ignition timing", useIdleTimingPidControl + field = "" + field = "#Gain is in degrees advance per rpm away from target" + field = "#A good starting point is 0.1 = 10 deg per 100 rpm" + field = "Proportional gain", idleTimingPid_pFactor, {useIdleTimingPidControl == 1} + field = "Derivative gain", idleTimingPid_dFactor, {useIdleTimingPidControl == 1} + field = "" + field = "Min adjustment (retard)", idleTimingPid_minValue, {useIdleTimingPidControl == 1} + field = "Max adjustment (advance)", idleTimingPid_maxValue, {useIdleTimingPidControl == 1} + field = "" + field = "#Use debug mode 'Timing' to view idle timing adjustment" ; Engine->Fan Settings dialog = fanSetting, "Fan Settings"