selectable idle Y axis override (#94)

* selectable idle Y axis override

* changelog

(cherry picked from commit f30e2ce0f2d5b0df90fd97b454c81423c397b268)
This commit is contained in:
Matthew Kennedy 2023-05-02 18:04:15 -04:00 committed by rusefillc
parent 61b9e6b035
commit 8549349995
5 changed files with 15 additions and 9 deletions

View File

@ -40,6 +40,7 @@ Release template (copy/paste this for new release):
- Support gauge fuel pressure sensors
- Better idle VE table transition
- Detected gear available as gppwm channel
- Y axis override for Idle VE table. Helps with idle quality on ITB setups. #94
## April 2023 Release - "Day 419"

View File

@ -5,8 +5,8 @@
AirmassVeModelBase::AirmassVeModelBase(const ValueProvider3D& veTable) : m_veTable(&veTable) {}
float AirmassVeModelBase::getVeLoadAxis(float passedLoad) const {
switch(engineConfiguration->veOverrideMode) {
static float getVeLoadAxis(ve_override_e mode, float passedLoad) {
switch(mode) {
case VE_None: return passedLoad;
case VE_MAP: return Sensor::getOrZero(SensorType::Map);
case VE_TPS: return Sensor::getOrZero(SensorType::Tps1);
@ -18,7 +18,7 @@ float AirmassVeModelBase::getVe(int rpm, float load) const {
efiAssert(ObdCode::OBD_PCM_Processor_Fault, m_veTable != nullptr, "VE table null", 0);
// Override the load value if necessary
load = getVeLoadAxis(load);
load = getVeLoadAxis(engineConfiguration->veOverrideMode, load);
percent_t ve = m_veTable->getValue(rpm, load);
@ -27,9 +27,11 @@ float AirmassVeModelBase::getVe(int rpm, float load) const {
// get VE from the separate table for Idle if idling
if (engine->module<IdleController>()->isIdlingOrTaper() &&
tps && engineConfiguration->useSeparateVeForIdle) {
float idleVeLoad = getVeLoadAxis(engineConfiguration->idleVeOverrideMode, load);
percent_t idleVe = interpolate3d(
config->idleVeTable,
config->idleVeLoadBins, load,
config->idleVeLoadBins, idleVeLoad,
config->idleVeRpmBins, rpm
);

View File

@ -21,6 +21,4 @@ public:
private:
const ValueProvider3D* const m_veTable;
float getVeLoadAxis(float passedLoad) const;
};

View File

@ -592,7 +592,7 @@ adc_channel_e throttlePedalPositionAdcChannel;Electronic throttle pedal position
switch_input_pin_e throttlePedalUpPin;Throttle Pedal not pressed switch - used on some older vehicles like early Mazda Miata
air_pressure_sensor_config_s baroSensor;@see hasBaroSensor
air_pressure_sensor_config_s baroSensor;@see hasBaroSensor
struct idle_hardware_s
int solenoidFrequency;;"Hz", 1, 0, 0, 3000, 0
@ -625,6 +625,12 @@ engineSyncCam_e engineSyncCam;Select which cam is used for engine sync. Other ca
uint16_t autoscale vssGearRatio;Number of turns of your vehicle speed sensor per turn of the wheels. For example if your sensor is on the transmission output, enter your axle/differential ratio. If you are using a hub-mounted sensor, enter a value of 1.0.;"ratio", 0.001, 0, 0, 60, 3
uint8_t vssToothCount;Number of pulses output per revolution of the shaft where your VSS is mounted. For example, GM applications of the T56 output 17 pulses per revolution of the transmission output shaft.;"count", 1, 0, 1, 100, 0
#define ve_override_e_enum "None", "MAP", "TPS"
custom ve_override_e 1 bits, U08, @OFFSET@, [0:1], @@ve_override_e_enum@@
ve_override_e idleVeOverrideMode;Override the Y axis (load) value used for only the Idle VE table.\nAdvanced users only: If you aren't sure you need this, you probably don't need this.
Gpio l9779_cs;
@ -1142,8 +1148,6 @@ int16_t tps2Max;Full throttle#2. tpsMax value as 10 bit ADC value. Not Voltage!\
custom can_baudrate_e 1 bits, U08, @OFFSET@, [0:2], @@can_baudrate_e_enum@@
can_baudrate_e canBaudRate; set can_baudrate
#define ve_override_e_enum "None", "MAP", "TPS"
custom ve_override_e 1 bits, U08, @OFFSET@, [0:1], @@ve_override_e_enum@@
ve_override_e veOverrideMode;Override the Y axis (load) value used for the VE table.\nAdvanced users only: If you aren't sure you need this, you probably don't need this.
can_baudrate_e can2BaudRate;

View File

@ -3180,6 +3180,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
dialog = idleExtra, "Extra Idle Features"
field = "Use idle ignition table", useSeparateAdvanceForIdle
field = "Use idle VE table", useSeparateVeForIdle
field = "Override Idle VE table load axis", idleVeOverrideMode, { useSeparateVeForIdle == 1 }
field = "Use idle tables for cranking taper", useSeparateIdleTablesForCrankingTaper
field = "Use coasting idle table", useIacTableForCoasting
field = "Detailed status in console", isVerboseIAC