flex cranking math (#3791)
* flex cranking math * simplify * s * simplify
This commit is contained in:
parent
751355a04b
commit
c2eab94534
|
@ -61,21 +61,23 @@ float getCrankingFuel3(
|
||||||
* Cranking fuel is different depending on engine coolant temperature
|
* Cranking fuel is different depending on engine coolant temperature
|
||||||
* If the sensor is failed, use 20 deg C
|
* If the sensor is failed, use 20 deg C
|
||||||
*/
|
*/
|
||||||
auto clt = Sensor::get(SensorType::Clt);
|
auto clt = Sensor::get(SensorType::Clt).value_or(20);
|
||||||
engine->engineState.cranking.coolantTemperatureCoefficient =
|
auto e0Mult = interpolate2d(clt, config->crankingFuelBins, config->crankingFuelCoef);
|
||||||
interpolate2d(clt.value_or(20), config->crankingFuelBins, config->crankingFuelCoef);
|
|
||||||
|
if (Sensor::hasSensor(SensorType::FuelEthanolPercent)) {
|
||||||
|
auto e100 = interpolate2d(clt, config->crankingFuelBins, config->crankingFuelCoefE100);
|
||||||
|
|
||||||
|
auto flex = Sensor::get(SensorType::FuelEthanolPercent);
|
||||||
|
engine->engineState.cranking.coolantTemperatureCoefficient = priv::linterp(e0Mult, e100, flex.value_or(50));
|
||||||
|
} else {
|
||||||
|
engine->engineState.cranking.coolantTemperatureCoefficient = e0Mult;
|
||||||
|
}
|
||||||
|
|
||||||
auto tps = Sensor::get(SensorType::DriverThrottleIntent);
|
auto tps = Sensor::get(SensorType::DriverThrottleIntent);
|
||||||
|
|
||||||
engine->engineState.cranking.tpsCoefficient = tps.Valid ? 1 : interpolate2d(tps.Value, engineConfiguration->crankingTpsBins,
|
|
||||||
engineConfiguration->crankingTpsCoef);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
engine->engineState.cranking.tpsCoefficient =
|
engine->engineState.cranking.tpsCoefficient =
|
||||||
tps.Valid
|
tps.Valid
|
||||||
? interpolate2d(tps.Value, engineConfiguration->crankingTpsBins, engineConfiguration->crankingTpsCoef)
|
? interpolate2d(tps.Value, engineConfiguration->crankingTpsBins, engineConfiguration->crankingTpsCoef)
|
||||||
: 1; // in case of failed TPS, don't correct.*/
|
: 1; // in case of failed TPS, don't correct.
|
||||||
|
|
||||||
floatms_t crankingFuel = baseCrankingFuel
|
floatms_t crankingFuel = baseCrankingFuel
|
||||||
* engine->engineState.cranking.durationCoefficient
|
* engine->engineState.cranking.durationCoefficient
|
||||||
|
|
|
@ -1558,7 +1558,7 @@ float[CLT_CURVE_SIZE] cltFuelCorr;;"ratio", 1, 0, 0, 5, 2
|
||||||
float[IAT_CURVE_SIZE] iatFuelCorrBins;;"C", 1, 0, -100, 250, 2
|
float[IAT_CURVE_SIZE] iatFuelCorrBins;;"C", 1, 0, -100, 250, 2
|
||||||
float[IAT_CURVE_SIZE] iatFuelCorr;;"ratio", 1, 0, 0, 5, 2
|
float[IAT_CURVE_SIZE] iatFuelCorr;;"ratio", 1, 0, 0, 5, 2
|
||||||
|
|
||||||
float[CRANKING_CURVE_SIZE] crankingFuelCoef;;"ratio", 1, 0, 0.1, 50, 2
|
float[CRANKING_CURVE_SIZE] crankingFuelCoef;;"ratio", 1, 0, 0, 50, 2
|
||||||
float[CRANKING_CURVE_SIZE] crankingFuelBins;;"C", 1, 0, -80, 170, 2
|
float[CRANKING_CURVE_SIZE] crankingFuelBins;;"C", 1, 0, -80, 170, 2
|
||||||
|
|
||||||
float[CRANKING_CURVE_SIZE] crankingCycleCoef;;"ratio", 1, 0, 0, 5, 2
|
float[CRANKING_CURVE_SIZE] crankingCycleCoef;;"ratio", 1, 0, 0, 5, 2
|
||||||
|
@ -1651,6 +1651,8 @@ cyl_trim_s[12 iterate] ignTrims
|
||||||
uint16_t[TRIM_SIZE] fuelTrimLoadBins;;"", 1, 0, 0, 400, 0
|
uint16_t[TRIM_SIZE] fuelTrimLoadBins;;"", 1, 0, 0, 400, 0
|
||||||
uint16_t[TRIM_SIZE] fuelTrimRpmBins;;"rpm", 1, 0, 0, 20000, 0
|
uint16_t[TRIM_SIZE] fuelTrimRpmBins;;"rpm", 1, 0, 0, 20000, 0
|
||||||
cyl_trim_s[12 iterate] fuelTrims
|
cyl_trim_s[12 iterate] fuelTrims
|
||||||
|
|
||||||
|
uint16_t[CRANKING_CURVE_SIZE] crankingFuelCoefE100;;"ratio", 0.01, 0, 0, 50, 2
|
||||||
end_struct
|
end_struct
|
||||||
|
|
||||||
#define MOCK_MAP_COMMAND "mock_map_voltage"
|
#define MOCK_MAP_COMMAND "mock_map_voltage"
|
||||||
|
|
|
@ -496,6 +496,14 @@ enable2ndByteCanID = false
|
||||||
yAxis = 0, 3, 10
|
yAxis = 0, 3, 10
|
||||||
xBins = crankingFuelBins, coolant
|
xBins = crankingFuelBins, coolant
|
||||||
yBins = crankingFuelCoef
|
yBins = crankingFuelCoef
|
||||||
|
gauge = CLTGauge
|
||||||
|
|
||||||
|
curve = crankingCltCurveE100, "Cranking Coolant Temperature Multiplier (Flex Fuel E100)"
|
||||||
|
columnLabel = "Coolant", "Multiplier"
|
||||||
|
xAxis = -40, 120, 9
|
||||||
|
yAxis = 0, 3, 10
|
||||||
|
xBins = crankingFuelBins, coolant
|
||||||
|
yBins = crankingFuelCoefE100
|
||||||
gauge = CLTGauge
|
gauge = CLTGauge
|
||||||
|
|
||||||
curve = etbTpsBiasCurve, "Electronic TB Bias Curve"
|
curve = etbTpsBiasCurve, "Electronic TB Bias Curve"
|
||||||
|
@ -1427,6 +1435,7 @@ menuDialog = main
|
||||||
subMenu = std_separator
|
subMenu = std_separator
|
||||||
|
|
||||||
subMenu = crankingCltCurve, "Fuel CLT multiplier"
|
subMenu = crankingCltCurve, "Fuel CLT multiplier"
|
||||||
|
subMenu = crankingCltCurveE100, "Fuel CLT multiplier (Flex Fuel E100)", 0, { flexSensorPin != @@ADC_CHANNEL_NONE@@ }
|
||||||
subMenu = crankingDurationCurve, "Fuel duration multiplier"
|
subMenu = crankingDurationCurve, "Fuel duration multiplier"
|
||||||
subMenu = crankingTpsCurve, "Fuel TPS multiplier"
|
subMenu = crankingTpsCurve, "Fuel TPS multiplier"
|
||||||
subMenu = std_separator
|
subMenu = std_separator
|
||||||
|
|
Loading…
Reference in New Issue