Miata presets (#236)

* rename existing

* rename existing

* 1.6 progress

* nb2 progress

* format

* stub nb1

* nb1 progress

* msm

* msm

* brake switch, MSM IAT

* gppwm, clutch pin

* cleanup

* allow setting lua heap size

* Revert "allow setting lua heap size"

This reverts commit 82533b5c7b.

* guard 1.6

* everyone wins a more sensible tps/tps AE table

* guard for tests

* nb2 vvt angle tweak

* tweak tests for changed defaults
This commit is contained in:
Matthew Kennedy 2023-09-25 11:12:34 -07:00 committed by GitHub
parent 4e2dbe0c15
commit 3c001f759f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 292 additions and 151 deletions

View File

@ -86,7 +86,7 @@ void miataNAcommonEngineSettings() {
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_MAZDA);
strcpy(engineConfiguration->engineCode, "NA6");
engineConfiguration->vehicleWeight = 950;
engineConfiguration->compressionRatio = 9.1;
engineConfiguration->compressionRatio = 9.0;
engineConfiguration->injectionMode = IM_BATCH;
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
@ -95,21 +95,23 @@ void miataNAcommonEngineSettings() {
engineConfiguration->trigger.type = trigger_type_e::TT_MAZDA_MIATA_NA;
// Cranking
engineConfiguration->primingDelay = 1.0;
engineConfiguration->cranking.rpm = 400;
engineConfiguration->crankingTimingAngle = 10;
engineConfiguration->cranking.baseFuel = 27.5;
config->crankingFuelCoef[0] = 2.8; // base cranking fuel adjustment coefficient
config->crankingFuelCoef[0] = 3.36; // base cranking fuel adjustment coefficient
config->crankingFuelBins[0] = -20; // temperature in C
config->crankingFuelCoef[1] = 2.2;
config->crankingFuelCoef[1] = 2.97;
config->crankingFuelBins[1] = -10;
config->crankingFuelCoef[2] = 1.8;
config->crankingFuelCoef[2] = 2.69;
config->crankingFuelBins[2] = 5;
config->crankingFuelCoef[3] = 1.5;
config->crankingFuelCoef[3] = 2.15;
config->crankingFuelBins[3] = 30;
config->crankingFuelCoef[4] = 1.0;
config->crankingFuelBins[4] = 35;
config->crankingFuelCoef[5] = 1.0;
config->crankingFuelCoef[4] = 1.78;
config->crankingFuelBins[4] = 40;
config->crankingFuelCoef[5] = 1.47;
config->crankingFuelBins[5] = 50;
config->crankingFuelCoef[6] = 1.0;
config->crankingFuelBins[6] = 65;
@ -135,6 +137,11 @@ void miataNAcommonEngineSettings() {
engineConfiguration->idleTimingPid.minValue = -15;
engineConfiguration->idleTimingPid.maxValue = 15;
// Idle timing
static const uint16_t idleAdvanceBins[] = { 500, 650, 800, 950, 1050, 1200, 1350, 1500 };
copyArray(config->idleAdvanceBins, idleAdvanceBins);
setArrayValues(config->idleAdvance, 15);
// Fan
engineConfiguration->enableFan1WithAc = true;
engineConfiguration->enableFan2WithAc = true;
@ -154,17 +161,25 @@ void miataNAcommonEngineSettings() {
setMapVeTable();
setTable(config->injectionPhase, 400);
static const float cltFuelMultValues[] = { 1.25, 1.23, 1.2, 1.18, 1.16, 1.14, 1.11, 1.09, 1.07, 1.05, 1.02, 1, 1, 1, 1, 1 };
copyArray(config->cltFuelCorr, cltFuelMultValues);
/**
* http://miataturbo.wikidot.com/fuel-injectors
* 90-93 (Blue) - #195500-1970
*/
engineConfiguration->injector.flow = 212;
static const float deadtimeBins[] = { 8, 9.6, 11.2, 12.8, 13.2, 14.4, 15.3, 16 };
static const float deadtimeValues[] = { 1.97, 1.52, 1.23, 1.04, 0.99, 0.9, 0.85, 0.73 };
copyArray(engineConfiguration->injector.battLagCorrBins, deadtimeBins);
copyArray(engineConfiguration->injector.battLagCorr, deadtimeValues);
// Sensors
// TPS
// my car was originally a manual so proper TPS
engineConfiguration->tpsMin = 100; // convert 12to10 bit (ADC/4)
engineConfiguration->tpsMax = 650; // convert 12to10 bit (ADC/4)
engineConfiguration->tpsMin = 92;
engineConfiguration->tpsMax = 872;
// CLT/IAT
engineConfiguration->clt.config = { -20, 40, 80, 16150, 1150, 330, 2700 };
@ -193,6 +208,14 @@ void miataNAcommonEngineSettings() {
// 4.3 * 6 / 23 ~= 1.12
engineConfiguration->vssGearRatio = 4.3 * 6 / 23;
engineConfiguration->vssToothCount = 4;
// Set up closed loop fuel
engineConfiguration->fuelClosedLoopCorrectionEnabled = true;
engineConfiguration->stft.minAfr = 10;
engineConfiguration->stft.cellCfgs[0] = { 5, -5, 5 };
engineConfiguration->stft.cellCfgs[1] = { 15, -15, 10 };
engineConfiguration->stft.cellCfgs[2] = { 15, -15, 1 };
engineConfiguration->stft.cellCfgs[3] = { 5, -5, 30 };
}
static void miataNAcommon() {
@ -360,9 +383,10 @@ void setHellenNA6() {
engineConfiguration->map.sensor.type = MT_MPX4250;
}
#if HW_PROTEUS
#include "proteus_meta.h"
void setMiataNa6_Proteus() {
void setMiataNa6_Polygonus() {
miataNAcommonEngineSettings();
// Triggers
@ -379,11 +403,22 @@ void setMiataNa6_Proteus() {
engineConfiguration->tps1_1AdcChannel = PROTEUS_IN_ANALOG_VOLT_2;
engineConfiguration->acSwitch = PROTEUS_DIGITAL_4;
#if EFI_PROD_CODE
engineConfiguration->clutchDownPin = getAdcChannelBrainPin("", PROTEUS_IN_ANALOG_VOLT_5);
#endif // EFI_PROD_CODE
engineConfiguration->clutchDownPinInverted = true;
// Fuel pressure
engineConfiguration->lowPressureFuel.hwChannel = PROTEUS_IN_ANALOG_VOLT_6;
engineConfiguration->lowPressureFuel.v1 = 0.5;
engineConfiguration->lowPressureFuel.value1 = 0;
engineConfiguration->lowPressureFuel.v2 = 4.5;
engineConfiguration->lowPressureFuel.value2 = 689.5;
// Built in wideband controller on bus 2
engineConfiguration->enableAemXSeries = true;
engineConfiguration->widebandOnSecondBus = true;
engineConfiguration->enableVerboseCanTx = true;
// Outputs
engineConfiguration->fuelPumpPin = PROTEUS_LS_9;
@ -391,11 +426,17 @@ void setMiataNa6_Proteus() {
engineConfiguration->idle.solenoidPin = PROTEUS_LS_7;
// TODO: which is fan 1 or 2?
engineConfiguration->fanPin = PROTEUS_LS_5;
// engineConfiguration->fan2Pin = PROTEUS_LS_5;
engineConfiguration->fanPin = PROTEUS_LS_8;
engineConfiguration->fanOnTemperature = 90;
engineConfiguration->fanOffTemperature = 84;
engineConfiguration->acSwitch = PROTEUS_DIGITAL_4;
engineConfiguration->acRelayPin = PROTEUS_LS_10;
engineConfiguration->tachOutputPin = PROTEUS_LS_12;
engineConfiguration->malfunctionIndicatorPin = PROTEUS_LS_11;
// Disable ETBs
engineConfiguration->etbFunctions[0] = dc_function_e::DC_None;
engineConfiguration->etbFunctions[1] = dc_function_e::DC_None;
}
#endif

View File

@ -29,4 +29,4 @@ void setHellenNA6();
void setHellenNA94();
void setMiataNa6_Proteus();
void setMiataNa6_Polygonus();

View File

@ -59,34 +59,18 @@
#include "mre_meta.h"
static const float injectorLagBins[VBAT_INJECTOR_CURVE_SIZE] = {
6.0, 8.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0
};
static const uint16_t vvt18fsioRpmBins[] = { 950, 1800, 2500, 3300, 4200, 5000, 6000, 7200 };
static const uint8_t vvt18fsioLoadBins[] = { 30, 40, 50, 60, 70, 75, 82, 100 };
static const float injectorLagCorrection[VBAT_INJECTOR_CURVE_SIZE] = {
4.0 , 3.0 , 2.0 , 1.7,
1.5 , 1.35, 1.25 , 1.20
};
static const float vvt18fsioRpmBins[SCRIPT_TABLE_8] =
{700.0, 1000.0, 2000.0, 3000.0, 3500.0, 4500.0, 5500.0, 6500.0}
;
static const float vvt18fsioLoadBins[SCRIPT_TABLE_8] =
{30.0, 40.0, 50.0, 60.0, 70.0, 75.0, 82.0, 85.0}
;
static const uint8_t SCRIPT_TABLE_vvt_target[SCRIPT_TABLE_8][SCRIPT_TABLE_8] = {
/* Generated by TS2C on Mon Feb 13 19:11:32 EST 2017*/
{/* 0 30 *//* 0 700.0*/1, /* 1 1000.0*/3, /* 2 2000.0*/10, /* 3 3000.0*/20, /* 4 3500.0*/27, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 1 40 *//* 0 700.0*/3, /* 1 1000.0*/10, /* 2 2000.0*/19, /* 3 3000.0*/26, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 2 50 *//* 0 700.0*/7, /* 1 1000.0*/16, /* 2 2000.0*/24, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 3 60 *//* 0 700.0*/11, /* 1 1000.0*/20, /* 2 2000.0*/27, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 4 70 *//* 0 700.0*/13, /* 1 1000.0*/24, /* 2 2000.0*/31, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 5 75 *//* 0 700.0*/15, /* 1 1000.0*/27, /* 2 2000.0*/33, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 6 82 *//* 0 700.0*/17, /* 1 1000.0*/28, /* 2 2000.0*/33, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
{/* 7 85 *//* 0 700.0*/17, /* 1 1000.0*/28, /* 2 2000.0*/33, /* 3 3000.0*/28, /* 4 3500.0*/30, /* 5 4500.0*/28, /* 6 5500.0*/11, /* 7 6500.0*/5, },
static const uint8_t SCRIPT_TABLE_vvt_target[8][8] = {
{ 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 15, 15, 15, 15, 0, 0 },
{ 0, 0, 15, 20, 20, 15, 0, 0 },
{ 8, 15, 18, 20, 20, 18, 15, 8 },
{ 8, 15, 20, 20, 20, 18, 15, 8 },
{ 8, 15, 25, 25, 23, 20, 12, 8 },
{ 12, 19, 29, 29, 27, 20, 4, 0 },
{ 12, 19, 29, 29, 27, 20, 5, 1 },
};
const float mazda_miata_nb2_RpmBins[FUEL_RPM_COUNT] = {700.0, 820.0, 950.0, 1100.0,
@ -228,8 +212,10 @@ static void setMAFTransferFunction() {
}
static void setMazdaMiataNbInjectorLag() {
copyArray(engineConfiguration->injector.battLagCorr, injectorLagCorrection);
copyArray(engineConfiguration->injector.battLagCorrBins, injectorLagBins);
static const float deadtimeBins[] = { 8, 9.6, 11.2, 12.8, 13.2, 14.4, 15.3, 16 };
static const float deadtimeValues[] = { 1.97, 1.52, 1.23, 1.04, 0.99, 0.9, 0.85, 0.73 };
copyArray(engineConfiguration->injector.battLagCorrBins, deadtimeBins);
copyArray(engineConfiguration->injector.battLagCorr, deadtimeValues);
}
/**
@ -245,15 +231,27 @@ static void setCommonMazdaNB() {
engineConfiguration->cylinderBore = 83;
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_MAZDA);
engineConfiguration->vehicleWeight = 1070;
engineConfiguration->vehicleWeight = 950;
/**
* http://miataturbo.wikidot.com/fuel-injectors
* 01-05 (purple) - #195500-4060
*/
engineConfiguration->injector.flow = 265;
engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
engineConfiguration->injectionMode = IM_SEQUENTIAL;
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
static const float cltFuelMultValues[] = { 1.25, 1.23, 1.2, 1.18, 1.16, 1.14, 1.11, 1.09, 1.07, 1.05, 1.02, 1, 1, 1, 1, 1 };
copyArray(config->cltFuelCorr, cltFuelMultValues);
// Trigger
engineConfiguration->trigger.type = trigger_type_e::TT_MIATA_VVT;
engineConfiguration->globalTriggerAngleOffset = 10;
engineConfiguration->vvtMode[0] = VVT_MIATA_NB;
engineConfiguration->vvtOffsets[0] = 98;
// Cranking
engineConfiguration->ignitionDwellForCrankingMs = 4;
@ -262,6 +260,25 @@ static void setCommonMazdaNB() {
engineConfiguration->crankingIACposition = 60;
engineConfiguration->afterCrankingIACtaperDuration = 250;
engineConfiguration->primingDelay = 1;
config->crankingFuelCoef[0] = 3.36;
config->crankingFuelBins[0] = -20;
config->crankingFuelCoef[1] = 2.97;
config->crankingFuelBins[1] = -10;
config->crankingFuelCoef[2] = 2.69;
config->crankingFuelBins[2] = 5;
config->crankingFuelCoef[3] = 2.15;
config->crankingFuelBins[3] = 30;
config->crankingFuelCoef[4] = 1.78;
config->crankingFuelBins[4] = 40;
config->crankingFuelCoef[5] = 1.47;
config->crankingFuelBins[5] = 50;
config->crankingFuelCoef[6] = 1.0;
config->crankingFuelBins[6] = 65;
config->crankingFuelCoef[7] = 1.0;
config->crankingFuelBins[7] = 90;
// Idle
engineConfiguration->idle.solenoidFrequency = 500;
engineConfiguration->idleMode = IM_AUTO;
@ -283,6 +300,11 @@ static void setCommonMazdaNB() {
engineConfiguration->idlerpmpid_iTermMin = -15;
engineConfiguration->idlerpmpid_iTermMax = 30;
// Idle timing
static const uint16_t idleAdvanceBins[] = { 500, 650, 800, 950, 1050, 1200, 1350, 1500 };
copyArray(config->idleAdvanceBins, idleAdvanceBins);
setArrayValues(config->idleAdvance, 15);
// Fan
engineConfiguration->enableFan1WithAc = true;
@ -290,11 +312,17 @@ static void setCommonMazdaNB() {
engineConfiguration->isAlternatorControlEnabled = true;
engineConfiguration->targetVBatt = 14.0f;
engineConfiguration->alternatorControl.offset = 20;
engineConfiguration->alternatorControl.pFactor = 16;
engineConfiguration->alternatorControl.pFactor = 20;
engineConfiguration->alternatorControl.iFactor = 8;
engineConfiguration->alternatorControl.dFactor = 0.1;
engineConfiguration->alternatorControl.periodMs = 10;
// AC
engineConfiguration->acDelay = 0.5;
engineConfiguration->maxAcClt = 105;
engineConfiguration->acIdleExtraOffset = 8;
engineConfiguration->acIdleRpmBump = 150;
// Tach
engineConfiguration->tachPulsePerRev = 2;
@ -320,8 +348,8 @@ static void setCommonMazdaNB() {
engineConfiguration->tpsMax = 650; // convert 12to10 bit (ADC/4)
// CLT/IAT
setCommonNTCSensor(&engineConfiguration->clt, 2700);
setCommonNTCSensor(&engineConfiguration->iat, 2700);
engineConfiguration->clt.config = { -10, 20, 80, 9000, 2500, 320, 0 };
engineConfiguration->iat.config = { -20, 40, 80, 16150, 1150, 330, 0 };
// MAF (todo: do we use this?)
setMAFTransferFunction();
@ -349,7 +377,9 @@ static void setCommonMazdaNB() {
static void setMazdaMiataEngineNB1Defaults() {
setCommonMazdaNB();
strcpy(engineConfiguration->engineCode, "NB1");
engineConfiguration->compressionRatio = 9.5;
// Vehicle speed/gears
engineConfiguration->totalGearsCount = 5;
@ -365,29 +395,25 @@ static void setMazdaMiataEngineNB1Defaults() {
}
static void setMazdaMiataEngineNB2Defaults() {
strcpy(engineConfiguration->engineCode, "NB2");
/**
* http://miataturbo.wikidot.com/fuel-injectors
* 01-05 (purple) - #195500-4060
*/
engineConfiguration->injector.flow = 265;
engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
setCommonMazdaNB();
strcpy(engineConfiguration->engineCode, "NB2");
engineConfiguration->compressionRatio = 10;
copyArray(config->vvtTable1RpmBins, vvt18fsioRpmBins);
copyArray(config->vvtTable1LoadBins, vvt18fsioLoadBins);
copyTable(config->vvtTable1, SCRIPT_TABLE_vvt_target);
engineConfiguration->vvtOffsets[0] = 95;
// VVT closed loop
engineConfiguration->auxPid[0].pFactor = 2;
engineConfiguration->auxPid[0].iFactor = 0.005;
engineConfiguration->auxPid[0].dFactor = 0.002;
engineConfiguration->auxPid[0].offset = 33;
engineConfiguration->auxPid[0].minValue = 20;
engineConfiguration->auxPid[0].minValue = 10;
engineConfiguration->auxPid[0].maxValue = 90;
engineConfiguration->vvtControlMinRpm = 400;
// Vehicle speed/gears
engineConfiguration->totalGearsCount = 6;
@ -426,9 +452,6 @@ void setMazdaMiata2003EngineConfiguration() {
// high-side driver with +12v VP jumper
engineConfiguration->tachOutputPin = Gpio::E8; // tachometer
// set global_trigger_offset_angle 0
engineConfiguration->globalTriggerAngleOffset = 0;
// enable trigger_details
engineConfiguration->verboseTriggerSynchDetails = false;
@ -527,24 +550,6 @@ void setMazdaMiata2003EngineConfiguration() {
engineConfiguration->etb.offset = 40;
engineConfiguration->etb.minValue = -60;
engineConfiguration->etb.maxValue = 50;
config->crankingFuelCoef[0] = 2.8; // base cranking fuel adjustment coefficient
config->crankingFuelBins[0] = -20; // temperature in C
config->crankingFuelCoef[1] = 2.2;
config->crankingFuelBins[1] = -10;
config->crankingFuelCoef[2] = 1.8;
config->crankingFuelBins[2] = 5;
config->crankingFuelCoef[3] = 1.5;
config->crankingFuelBins[3] = 30;
config->crankingFuelCoef[4] = 1.0;
config->crankingFuelBins[4] = 35;
config->crankingFuelCoef[5] = 1.0;
config->crankingFuelBins[5] = 50;
config->crankingFuelCoef[6] = 1.0;
config->crankingFuelBins[6] = 65;
config->crankingFuelCoef[7] = 1.0;
config->crankingFuelBins[7] = 90;
}
/**
@ -687,68 +692,149 @@ void setMiataNB2_Proteus_TCU() {
}
/**
* https://github.com/rusefi/rusefi/wiki/HOWTO-Miata-NB2-on-Proteus
*/
void setMiataNB2_Proteus() {
setMazdaMiataEngineNB2Defaults();
void setMiataNbPolygonusCommon() {
engineConfiguration->triggerInputPins[0] = PROTEUS_VR_1;
engineConfiguration->vehicleSpeedSensorInputPin = PROTEUS_DIGITAL_3;
engineConfiguration->triggerInputPins[0] = Gpio::C6; // pin 10/black23
engineConfiguration->triggerInputPins[1] = Gpio::Unassigned;
engineConfiguration->camInputs[0] = Gpio::E11; // pin 1/black23
engineConfiguration->alternatorControlPin = PROTEUS_HS_1;
engineConfiguration->alternatorControlPin = Gpio::A8; // "Highside 2" # pin 1/black35
// high-side driver with +12v VP jumper
engineConfiguration->tachOutputPin = PROTEUS_LS_14; // tachometer
engineConfiguration->tachPulsePerRev = 2;
engineConfiguration->vvtPins[0] = Gpio::B5; // VVT solenoid control # pin 8/black35
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
// high-side driver with +12v VP jumper
engineConfiguration->tachOutputPin = Gpio::A9; // tachometer
engineConfiguration->tachPulsePerRev = 2;
engineConfiguration->ignitionPins[0] = PROTEUS_IGN_1;
engineConfiguration->ignitionPins[1] = PROTEUS_IGN_2;
engineConfiguration->ignitionPins[2] = PROTEUS_IGN_3;
engineConfiguration->ignitionPins[3] = PROTEUS_IGN_4;
engineConfiguration->ignitionMode = IM_WASTED_SPARK;
#if EFI_PROD_CODE
engineConfiguration->ignitionPins[0] = PROTEUS_IGN_1;
engineConfiguration->ignitionPins[1] = Gpio::Unassigned;
engineConfiguration->ignitionPins[2] = PROTEUS_IGN_3;
engineConfiguration->ignitionPins[3] = Gpio::Unassigned;
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
engineConfiguration->injectionMode = IM_SEQUENTIAL;
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
engineConfiguration->injectionMode = IM_SEQUENTIAL;
engineConfiguration->injectionPins[0] = PROTEUS_LS_1; // BLU # pin 3/black35
engineConfiguration->injectionPins[1] = PROTEUS_LS_2; // BLK
engineConfiguration->injectionPins[2] = PROTEUS_LS_3; // GRN
engineConfiguration->injectionPins[3] = PROTEUS_LS_4; // WHT
engineConfiguration->injectionPins[0] = PROTEUS_LS_1; // BLU # pin 3/black35
engineConfiguration->injectionPins[1] = PROTEUS_LS_2; // BLK
engineConfiguration->injectionPins[2] = PROTEUS_LS_3; // GRN
engineConfiguration->injectionPins[3] = PROTEUS_LS_4; // WHT
engineConfiguration->enableSoftwareKnock = true;
engineConfiguration->enableSoftwareKnock = true;
engineConfiguration->cylinderBore = 78;
engineConfiguration->knockBandCustom = 6.8;
engineConfiguration->malfunctionIndicatorPin = PROTEUS_LS_10;
engineConfiguration->malfunctionIndicatorPin = PROTEUS_LS_11;
engineConfiguration->map.sensor.hwChannel = PROTEUS_IN_MAP;
engineConfiguration->map.sensor.hwChannel = PROTEUS_IN_ANALOG_VOLT_1;
engineConfiguration->map.sensor.type = MT_MPXH6400;
engineConfiguration->afr.hwChannel = EFI_ADC_11;
engineConfiguration->tps1_1AdcChannel = PROTEUS_IN_ANALOG_VOLT_3;
engineConfiguration->mafAdcChannel = EFI_ADC_13; // PA6 W46 <> W46
engineConfiguration->clt.adcChannel = PROTEUS_IN_ANALOG_TEMP_3;
engineConfiguration->iat.adcChannel = PROTEUS_IN_ANALOG_TEMP_2;
engineConfiguration->tps1_1AdcChannel = EFI_ADC_12;
engineConfiguration->fuelPumpPin = PROTEUS_LS_7;
engineConfiguration->clt.adcChannel = PROTEUS_IN_ANALOG_TEMP_1;
engineConfiguration->iat.adcChannel = PROTEUS_IN_ANALOG_TEMP_3;
engineConfiguration->idle.solenoidPin = PROTEUS_LS_10;
engineConfiguration->fuelPumpPin = PROTEUS_LS_6;
// Built in wideband controller on bus 2
engineConfiguration->enableAemXSeries = true;
engineConfiguration->widebandOnSecondBus = true;
engineConfiguration->enableVerboseCanTx = true;
engineConfiguration->idle.solenoidPin = PROTEUS_LS_7;
engineConfiguration->fanPin = PROTEUS_LS_6;
engineConfiguration->fanOnTemperature = 90;
engineConfiguration->fanOffTemperature = 84;
engineConfiguration->fan2Pin = PROTEUS_LS_5;
engineConfiguration->enableFan2WithAc = true;
engineConfiguration->fanPin = Gpio::B7;
engineConfiguration->clutchDownPin = PROTEUS_DIGITAL_4;
engineConfiguration->clutchDownPinInverted = true;
engineConfiguration->mainRelayPin = Gpio::G12;
#if EFI_PROD_CODE
engineConfiguration->brakePedalPin = getAdcChannelBrainPin("", PROTEUS_IN_ANALOG_VOLT_5);
#endif // EFI_PROD_CODE
engineConfiguration->acRelayPin = PROTEUS_LS_8;
// Disable ETBs
engineConfiguration->etbFunctions[0] = dc_function_e::DC_None;
engineConfiguration->etbFunctions[1] = dc_function_e::DC_None;
}
void setMiataNB1_Polygonus() {
setMazdaMiataEngineNB1Defaults();
setMiataNbPolygonusCommon();
engineConfiguration->camInputs[0] = PROTEUS_VR_2;
engineConfiguration->tpsMin = 102;
engineConfiguration->tpsMax = 727;
engineConfiguration->acSwitch = PROTEUS_DIGITAL_6;
// Fuel pressure
engineConfiguration->lowPressureFuel.hwChannel = PROTEUS_IN_ANALOG_VOLT_6;
engineConfiguration->lowPressureFuel.v1 = 0.5;
engineConfiguration->lowPressureFuel.value1 = 0;
engineConfiguration->lowPressureFuel.v2 = 4.5;
engineConfiguration->lowPressureFuel.value2 = 689.5;
// GPPWM1: VICS variable intake flap
engineConfiguration->gppwm[0].pin = PROTEUS_LS_16;
engineConfiguration->gppwm[0].pwmFrequency = 0;
engineConfiguration->gppwm[0].loadAxis = GPPWM_Tps;
engineConfiguration->gppwm[0].onAboveDuty = 60;
engineConfiguration->gppwm[0].offBelowDuty = 40;
strcpy(engineConfiguration->gpPwmNote[0], "VICS");
copyArray(engineConfiguration->gppwm[0].rpmBins, { 0, 1000, 2000, 2500, 3500, 5500, 6500, 7000 });
for (size_t i = 0; i < efi::size(engineConfiguration->gppwm[0].table); i++)
{
// Set the 3500 and 5500 rpm columns to 100
engineConfiguration->gppwm[0].table[i][4] = 100;
engineConfiguration->gppwm[0].table[i][5] = 100;
}
}
// Both NB2 and MSM
void setMiataPolygonusNB2Common() {
engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_1;
engineConfiguration->tpsMin = 92;
engineConfiguration->tpsMax = 872;
// NB2 has a main relay output, unlike NB1
engineConfiguration->mainRelayPin = PROTEUS_LS_16;
#if EFI_PROD_CODE
engineConfiguration->acSwitch = getAdcChannelBrainPin("", PROTEUS_IN_ANALOG_VOLT_6);
#endif // EFI_PROD_CODE
}
void setMiataNB2_Polygonus() {
setMazdaMiataEngineNB2Defaults();
setMiataNbPolygonusCommon();
setMiataPolygonusNB2Common();
// NB2 has VVT!
engineConfiguration->vvtPins[0] = PROTEUS_LS_13;
}
void setMiataNB_MSM_Polygonus() {
setMazdaMiataEngineNB1Defaults();
setMiataNbPolygonusCommon();
setMiataPolygonusNB2Common();
strcpy(engineConfiguration->engineCode, "NB1");
engineConfiguration->compressionRatio = 9.5;
engineConfiguration->isForcedInduction = true;
// MSM has boost control!
engineConfiguration->boostControlPin = PROTEUS_HS_3;
// MSM gets a different IAT from the other NBs
engineConfiguration->iat.config = { 0, 40, 60, 112000, 17000, 8000, 0 };
}
#endif // HW_PROTEUS

View File

@ -29,10 +29,9 @@ void setMazdaMiata2003EngineConfigurationBoardTest();
*/
void setMiataNB2_Proteus_TCU();
/**
* set engine_type 67
*/
void setMiataNB2_Proteus();
void setMiataNB1_Polygonus();
void setMiataNB2_Polygonus();
void setMiataNB_MSM_Polygonus();
/**
* set engine_type 69

View File

@ -136,15 +136,14 @@ static void setDefaultStftSettings() {
}
static const uint8_t tpsTpsTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE] = {
/* Generated by TS2C on Tue Apr 18 21:29:16 EDT 2017*/
{/* 0 0 *//* 0 0.0*/0, /* 1 10.0*/0, /* 2 20.0*/0, /* 3 35.0*/0, /* 4 50.0*/0, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 1 10 *//* 0 0.0*/10, /* 1 10.0*/0, /* 2 20.0*/0, /* 3 35.0*/0, /* 4 50.0*/0, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 2 20 *//* 0 0.0*/17, /* 1 10.0*/10, /* 2 20.0*/0, /* 3 35.0*/0, /* 4 50.0*/0, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 3 35 *//* 0 0.0*/23, /* 1 10.0*/17, /* 2 20.0*/10, /* 3 35.0*/0, /* 4 50.0*/0, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 4 50 *//* 0 0.0*/28, /* 1 10.0*/23, /* 2 20.0*/17, /* 3 35.0*/10, /* 4 50.0*/0, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 5 65 *//* 0 0.0*/32, /* 1 10.0*/28, /* 2 20.0*/23, /* 3 35.0*/17, /* 4 50.0*/10, /* 5 65.0*/0, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 6 80 *//* 0 0.0*/35, /* 1 10.0*/32, /* 2 20.0*/28, /* 3 35.0*/23, /* 4 50.0*/17, /* 5 65.0*/10, /* 6 80.0*/0, /* 7 100.0*/0, },
{/* 7 100 *//* 0 0.0*/37, /* 1 10.0*/35, /* 2 20.0*/32, /* 3 35.0*/28, /* 4 50.0*/23, /* 5 65.0*/17, /* 6 80.0*/10, /* 7 100.0*/0, },
{ 0, 0, 0, 0, 0, 0, 0, 0 },
{ 2, 0, 0, 0, 0, 0, 0, 0 },
{ 3, 2, 0, 0, 0, 0, 0, 0 },
{ 4, 3, 2, 0, 0, 0, 0, 0 },
{ 5, 4, 3, 2, 0, 0, 0, 0 },
{ 5, 5, 4, 3, 2, 0, 0, 0 },
{ 6, 5, 5, 4, 3, 2, 0, 0 },
{ 7, 6, 5, 5, 4, 3, 2, 0 },
};
static void setMazdaMiataNbTpsTps() {

View File

@ -731,11 +731,17 @@ void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e
case engine_type_e::PROTEUS_E65_6H_MAN_IN_THE_MIDDLE:
setEngineProteusGearboxManInTheMiddle();
break;
case engine_type_e::PROTEUS_MIATA_NA6:
setMiataNa6_Proteus();
case engine_type_e::POLYGONUS_MIATA_NA6:
setMiataNa6_Polygonus();
break;
case engine_type_e::PROTEUS_MIATA_NB2:
setMiataNB2_Proteus();
case engine_type_e::POLYGONUS_MIATA_NB1:
setMiataNB1_Polygonus();
break;
case engine_type_e::POLYGONUS_MIATA_NB2:
setMiataNB2_Polygonus();
break;
case engine_type_e::POLYGONUS_MIATA_MSM:
setMiataNB_MSM_Polygonus();
break;
#ifdef HARDWARE_CI
case engine_type_e::PROTEUS_ANALOG_PWM_TEST:

View File

@ -146,7 +146,6 @@ enum class engine_type_e : uint32_t {
DODGE_RAM = 64,
CITROEN_TU3JP = 65,
PROTEUS_MIATA_NB2 = 67,
MRE_M111 = 68,
HELLEN_NB2 = 69,
@ -196,12 +195,16 @@ enum class engine_type_e : uint32_t {
HELLEN_154_HYUNDAI_COUPE_BK2 = 95,
WASTEGATE_PROTEUS_TEST = 96,
PROTEUS_MIATA_NA6 = 4,
// Polygonus PnP presets
POLYGONUS_MIATA_NA6 = 4,
POLYGONUS_MIATA_NB1 = 11,
POLYGONUS_MIATA_NB2 = 67,
POLYGONUS_MIATA_MSM = 12,
ET_UNUSED_97 = 97,
ET_UNUSED_98 = 98,
ET_UNUSED_17 = 17,
ET_UNUSED_11 = 11,
ET_UNUSED_12 = 12,
ET_UNUSED_13 = 13,
ET_UNUSED_15 = 15,
ET_UNUSED_33 = 33,

View File

@ -2099,11 +2099,13 @@ cmd_set_engine_type_PROTEUS_VW_B6 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command
cmd_set_engine_type_PROTEUS_GM_LS_4 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_GM_LS_4_16_hex@@"
cmd_set_engine_type_PROTEUS_HONDA_K = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_HONDA_K_16_hex@@"
cmd_set_engine_type_PROTEUS_HONDA_OBD2A = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_HONDA_OBD2A_16_hex@@"
cmd_set_engine_type_PROTEUS_MIATA_NB2 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_MIATA_NB2_16_hex@@"
cmd_set_engine_type_Proteus_Miata_TCU = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_MIATA_PROTEUS_TCU_16_hex@@"
cmd_set_engine_type_PROTEUS_LUA_DEMO = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_LUA_DEMO_16_hex@@"
cmd_set_engine_type_PROTEUS_HARLEY = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_HARLEY_16_hex@@"
cmd_set_engine_type_PROTEUS_MIATA_NA6 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_PROTEUS_MIATA_NA6_16_hex@@"
cmd_set_engine_type_POLYGONUS_MIATA_NA6 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_POLYGONUS_MIATA_NA6_16_hex@@"
cmd_set_engine_type_POLYGONUS_MIATA_NB1 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_POLYGONUS_MIATA_NB1_16_hex@@"
cmd_set_engine_type_POLYGONUS_MIATA_NB2 = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_POLYGONUS_MIATA_NB2_16_hex@@"
cmd_set_engine_type_POLYGONUS_MIATA_MSM = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_SET_ENGINE_TYPE_16_hex@@@@engine_type_e_POLYGONUS_MIATA_MSM_16_hex@@"
; ETB_BENCH_ENGINE = 58
@ -4203,14 +4205,19 @@ dialog = tcuControls, "Transmission Settings"
commandButton = "microRusEFI BCM", cmd_set_engine_type_microRusEFI_MRE_BODY_CONTROL@@if_show_microRusEFI_presets
commandButton = "microRusEFI Subaru EJ18", cmd_set_engine_type_MRE_SUBARU_EJ18@@if_show_microRusEFI_presets
commandButton = "FOME PnP Miata NA6", cmd_set_engine_type_PROTEUS_MIATA_NA6@@if_show_Proteus_presets
commandButton = "FOME PnP Miata NA6", cmd_set_engine_type_POLYGONUS_MIATA_NA6@@if_show_Proteus_presets
; commandButton = "FOME PnP Miata NA6 VVT Swap", cmd_set_engine_type_POLYGONUS_MIATA_NA6@@if_show_Proteus_presets
; commandButton = "FOME PnP Miata 94 ???", cmd_set_engine_type_POLYGONUS_MIATA_NA6@@if_show_Proteus_presets
; commandButton = "FOME PnP Miata NA8 96", cmd_set_engine_type_POLYGONUS_MIATA_NA6@@if_show_Proteus_presets
commandButton = "FOME PnP Miata NB1", cmd_set_engine_type_POLYGONUS_MIATA_NB1@@if_show_Proteus_presets
commandButton = "FOME PnP Miata NB2 VVT", cmd_set_engine_type_POLYGONUS_MIATA_NB2@@if_show_Proteus_presets
commandButton = "FOME PnP Miata MSM", cmd_set_engine_type_POLYGONUS_MIATA_MSM@@if_show_Proteus_presets
commandButton = "Proteus M73 v12", cmd_set_engine_type_Proteus_M73@@if_show_Proteus_presets
commandButton = "Proteus GDI VAG B6 test", cmd_set_engine_type_PROTEUS_VW_B6@@if_show_Proteus_presets
commandButton = "Proteus GM Gen4", cmd_set_engine_type_PROTEUS_GM_LS_4@@if_show_Proteus_presets
commandButton = "Proteus Miata TCU", cmd_set_engine_type_Proteus_Miata_TCU@@if_show_Proteus_presets
commandButton = "Proteus Lua Demo", cmd_set_engine_type_PROTEUS_LUA_DEMO@@if_show_Proteus_presets
commandButton = "Proteus Miata NB2", cmd_set_engine_type_PROTEUS_MIATA_NB2@@if_show_Proteus_presets
commandButton = "Proteus Honda K", cmd_set_engine_type_PROTEUS_HONDA_K@@if_show_Proteus_presets
commandButton = "Proteus Honda OBD2A", cmd_set_engine_type_PROTEUS_HONDA_OBD2A@@if_show_Proteus_presets
commandButton = "Proteus Harley", cmd_set_engine_type_PROTEUS_HARLEY@@if_show_Proteus_presets

View File

@ -63,7 +63,7 @@ TEST(fuel, testTpsAccelEnrichmentScheduling) {
Sensor::setMockValue(SensorType::Tps1, 70);
eth.fireTriggerEvents2(/* count */ 1, 25 /* ms */);
float expectedAEValue = 7;
float expectedAEValue = 1.4;
// it does not matter how many times we invoke 'getTpsEnrichment' - state does not change
for (int i = 0; i <20;i++) {
ASSERT_NEAR(expectedAEValue, engine->tpsAccelEnrichment.getTpsEnrichment(), EPS4D);

View File

@ -182,7 +182,7 @@ TEST(trigger, testNB2CamInput) {
eth.moveTimeForwardUs(MS2US( 30));
hwHandleVvtCamSignal(true, getTimeNowNt(), 0);
EXPECT_NEAR(290.5f, engine->triggerCentral.getVVTPosition(0, 0), EPS2D);
EXPECT_NEAR(297.5f, engine->triggerCentral.getVVTPosition(0, 0), EPS2D);
// actually position based on VVT!
ASSERT_EQ(totalRevolutionCountBeforeVvtSync + 3, engine->triggerCentral.triggerState.getCrankSynchronizationCounter());

View File

@ -20,7 +20,7 @@ TEST(realCrankingNB2, normalCranking) {
}
// VVT position nearly zero!
EXPECT_NEAR(engine->triggerCentral.getVVTPosition(0, 0), 4.2627f, 1e-4);
EXPECT_NEAR(engine->triggerCentral.getVVTPosition(0, 0), 11.2627f, 1e-4);
// Check the number of times VVT information was used to adjust crank phase
// This should happen exactly once: once we sync, we shouldn't lose it.
@ -45,7 +45,7 @@ TEST(realCrankingNB2, crankingMissingInjector) {
}
// VVT position nearly zero!
EXPECT_NEAR(engine->triggerCentral.getVVTPosition(0, 0), -2.5231f, 1e-4);
EXPECT_NEAR(engine->triggerCentral.getVVTPosition(0, 0), 4.476928f, 1e-4);
ASSERT_EQ(316, round(Sensor::getOrZero(SensorType::Rpm)));