diff --git a/firmware/controllers/actuators/electronic_throttle.txt b/firmware/controllers/actuators/electronic_throttle.txt index 8743a47821..ce73c21699 100644 --- a/firmware/controllers/actuators/electronic_throttle.txt +++ b/firmware/controllers/actuators/electronic_throttle.txt @@ -24,6 +24,7 @@ struct_no_prefix electronic_throttle_s uint16_t etbPpsErrorCounter;"ETB pedal error counter";"count", 1,0, 0,3, 0,@@GAUGE_CATEGORY_ETB@@ int8_t etbErrorCode + int8_t tcEtbDrop uint16_t autoscale jamTimer;ETB jam timer;"sec", 0.01, 0, 0, 100, 2 diff --git a/firmware/controllers/algo/defaults/default_base_engine.cpp b/firmware/controllers/algo/defaults/default_base_engine.cpp index 57c7fd2b13..23e1a44a64 100644 --- a/firmware/controllers/algo/defaults/default_base_engine.cpp +++ b/firmware/controllers/algo/defaults/default_base_engine.cpp @@ -75,6 +75,9 @@ void setDefaultBaseEngine() { engineConfiguration->watchOutForLinearTime = true; + setLinearCurve(engineConfiguration->tractionControlSlipBins, /*from*/0.8, /*to*/1.2, 0.1); + setLinearCurve(engineConfiguration->tractionControlSpeedBins, /*from*/10, /*to*/120, 5); + engineConfiguration->turbochargerFilter = 0.01f; engineConfiguration->fuelAlgorithm = LM_SPEED_DENSITY; diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index a24f19e6ef..e8fd336c99 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -546,6 +546,9 @@ bool validateConfig() { ensureArrayIsAscendingOrDefault("Fuel Trim Rpm", config->fuelTrimRpmBins); ensureArrayIsAscendingOrDefault("Fuel Trim Load", config->fuelTrimLoadBins); +//todo ensureArrayIsAscendingOrDefault("TC slip", engineConfiguration->tractionControlSlipBins); + ensureArrayIsAscendingOrDefault("TC speed", engineConfiguration->tractionControlSpeedBins); + ensureArrayIsAscending("TPS/TPS AE from", config->tpsTpsAccelFromRpmBins); ensureArrayIsAscending("TPS/TPS AE to", config->tpsTpsAccelToRpmBins); diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 6daeab48f3..10c2157c22 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -118,6 +118,8 @@ struct_no_prefix engine_configuration_s #define SENT_INPUT_COUNT 1 +#define TRACTION_CONTROL_ETB_DROP_SIZE 6 + #define LUA_PWM_COUNT 8 #define LUA_DIGITAL_INPUT_COUNT 8 @@ -1401,7 +1403,9 @@ tChargeMode_e tChargeMode; uint8_t autoscale triggerCompHystMax;Trigger comparator hysteresis voltage (Max);"V", @@VOLTAGE_1_BYTE_PACKING_DIV@@, 0, 0, 5.1, 2 uint8_t autoscale triggerCompSensorSatRpm;VR-sensor saturation RPM;"RPM", 50, 0, 0, 12000, 0 - int8_t[20] unusedHere +uint16_t[TRACTION_CONTROL_ETB_DROP_SIZE] autoscale tractionControlSlipBins;;"ratio", 0.1, 0, 0, 999, 1 +uint8_t[TRACTION_CONTROL_ETB_DROP_SIZE] tractionControlSpeedBins;;"RPM", 1, 0, 0, 250, 0 + int8_t[2] unusedHere custom can_vss_nbc_e 2 bits, U08, @OFFSET@, [0:2], "BMW_e46", "W202", "BMW E8x/E9x MK60e5", "Nissan 350", "Hyundai PB", "Honda Civic9" @@ -1603,7 +1607,9 @@ uint8_t unusedExplicitFilling2 float[VVT_TRACKING_LENGTH iterate] triggerVVTGapOverrideFrom;;"ratio", 1, 0, 0, 20, 3 float[VVT_TRACKING_LENGTH iterate] triggerVVTGapOverrideTo;;"ratio", 1, 0, 0, 20, 3 -uint8_t[208] mainUnusedEnd;;"units", 1, 0, 0, 1, 0 +int8_t[TRACTION_CONTROL_ETB_DROP_SIZE x TRACTION_CONTROL_ETB_DROP_SIZE] tractionControlEtbDrop;;"%", 1, 0, -100, 0, 0 + +uint8_t[172] mainUnusedEnd;;"units", 1, 0, 0, 1, 0 ! end of engine_configuration_s end_struct diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index a755e5b706..8adc0b48a4 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -876,6 +876,11 @@ curve = rangeMatrix, "Range Switch Input Matrix" yBins = tpsTpsAccelToRpmBins, TPSValue zBins = tpsTpsAccelTable + table = tractionEtbTableTbl, tractionEtb, "Traction Control ETB drop", 1 + xBins = tractionControlSpeedBins, vehicleSpeedKph + yBins = tractionControlSlipBins, wheelSlipRatio + zBins = tractionControlEtbDrop + table = boostTableTbl, boostMapOpen, "Boost control duty cycle (open loop)", 1 xBins = boostRpmBins, RPMValue yBins = boostTpsBins, TPSValue @@ -2023,6 +2028,7 @@ menuDialog = main subMenu = hpfpCompensationTable, "HPFP Pump Compensation", {hpfpCamLobes != 0} subMenu = std_separator subMenu = fancyHardwareDialog, "Fancy Hardware" + subMenu = tractionEtbTableTbl subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@if_ts_show_hip9011