PJSC(Pump Jet Solenoid Controller)はArduinoを使用したバイク用燃料噴射コントローラです。このプロジェクトは、オープンソースECUプロジェクト『Speeduino』をベースにしています。
[PJSC v1.01c] Add switch to disable fuel correction for Pump Jet mode.
| @@ -31,9 +31,9 @@ | ||
| 31 | 31 | settingOption = resetcontrol_standard, "Basic Options Only" |
| 32 | 32 | settingOption = resetcontrol_adv, "Advanced Features (16u2 Firmware Update Required)" |
| 33 | 33 | |
| 34 | - settingGroup = table4_usage_group, "Selection of table4 usage" ;[PJSC v1.10] For switching 3rd table | |
| 35 | - settingOption = table4_spark, "Spark advance table" ;[PJSC v1.10] For switching 3rd table | |
| 36 | - settingOption = table4_fuel, "VE table4" ;[PJSC v1.10] For switching 3rd table | |
| 34 | + settingGroup = table4_usage_group, "Selection of table4 usage" ;[PJSC v1.10] For switching 4th table | |
| 35 | + settingOption = table4_spark, "Spark advance table" ;[PJSC v1.10] For switching 4th table | |
| 36 | + settingOption = table4_fuel, "VE table4" ;[PJSC v1.10] For switching 4th table | |
| 37 | 37 | |
| 38 | 38 | [PcVariables] |
| 39 | 39 | ; valid types: boolean, double, int, list |
| @@ -216,7 +216,6 @@ | ||
| 216 | 216 | #define CAN_ADDRESS_HEX = $CAN_ADDRESS_HEX_01XX, $CAN_ADDRESS_HEX_02XX, $CAN_ADDRESS_HEX_03XX, $CAN_ADDRESS_HEX_04XX, $CAN_ADDRESS_HEX_05XX, $CAN_ADDRESS_HEX_06XX, $CAN_ADDRESS_HEX_07XX, $CAN_ADDRESS_HEX_inv255 |
| 217 | 217 | |
| 218 | 218 | |
| 219 | - | |
| 220 | 219 | ;-------------------------------------------------- |
| 221 | 220 | ;Start Page 1 |
| 222 | 221 | ;Page 1 is all general settings. Note that some of these (algorithm and ignAlgorithm) MUST come before their use in the bitStringValue() calls in the fuel and ignition tables |
| @@ -324,7 +323,7 @@ | ||
| 324 | 323 | exValvePosMin = scalar, U08, 72, "ADC", 1.0, 0.0, 0.0, 255.0, 0 ; | |
| 325 | 324 | exValvePosMax = scalar, U08, 73, "ADC", 1.0, 0.0, 0.0, 255.0, 0 ; | |
| 326 | 325 | exTrigHysteresis = scalar, U08, 74, "deg", 1.0, 0.0, 0.0, 255.0, 0 ; V |
| 327 | - squirtDeviceType = bits, U08, 75, [0:0], "Injector", "Solenoid valve" ;[PJSC] | |
| 326 | + squirtDeviceType = bits, U08, 75, [0:0], "Injector", "Pump Jet" ;[PJSC] | |
| 328 | 327 | multiVEmapEnabled = bits, U08, 75, [1:1], "Disable", "Enable" ;[PJSC v1.10] For Dual Fuel Load |
| 329 | 328 | mapSeparationEnabled = bits, U08, 75, [2:2], "Disable", "Enable" ;[PJSC v1.10] For Dual Fuel Load |
| 330 | 329 | mapSwitchingEnabled = bits, U08, 75, [3:3], "Disable", "Enable" ;[PJSC v1.10] For Dual Fuel Load |
| @@ -405,7 +404,13 @@ | ||
| 405 | 404 | unused2_120 = bits, U08, 120, [6:7] ;[PJSC v1.10] |
| 406 | 405 | table4Usage = bits, U08, 121, [0:0], "Fuel", "Spark" ;[PJSC v1.10] |
| 407 | 406 | unused2_121 = bits, U08, 121, [1:7] ;[PJSC v1.10] |
| 408 | - unused2_122 = array, U08, 122, [6], "%", 1.0, 0.0, 0.0, 255, 0 ;[PJSC v1.10] | |
| 407 | + inj1SquirtStartEnd = bits, U08, 122, [0:0], "End angle", "Start angle" ;[PJSC v1.01c] | |
| 408 | + inj2SquirtStartEnd = bits, U08, 122, [1:1], "End angle", "Start angle" ;[PJSC v1.01c] | |
| 409 | + inj3SquirtStartEnd = bits, U08, 122, [2:2], "End angle", "Start angle" ;[PJSC v1.01c] | |
| 410 | + inj4SquirtStartEnd = bits, U08, 122, [3:3], "End angle", "Start angle" ;[PJSC v1.01c] | |
| 411 | + unused2_122 = bits, U08, 122, [4:7] ;[PJSC v1.01c] | |
| 412 | +;[PJSC v1.01c] unused2_122 = array, U08, 122, [6], "%", 1.0, 0.0, 0.0, 255, 0 ;[PJSC v1.10] | |
| 413 | + unused2_123 = array, U08, 123, [5], "%", 1.0, 0.0, 0.0, 255, 0 ;[PJSC v1.01c] | |
| 409 | 414 | |
| 410 | 415 | |
| 411 | 416 | ;Page 2 is the fuel map and axis bins only |
| @@ -1326,8 +1331,11 @@ | ||
| 1326 | 1331 | #if table4_spark ;[PJSC v1.10] For switching table4 |
| 1327 | 1332 | defaultValue = table4Usage, 1 ;[PJSC v1.10] |
| 1328 | 1333 | #endif ;[PJSC v1.10] For switching table4 |
| 1334 | + defaultValue = inj1SquirtStartEnd, 0 ;[PJSC v1.01c] | |
| 1335 | + defaultValue = inj2SquirtStartEnd, 0 ;[PJSC v1.01c] | |
| 1336 | + defaultValue = inj3SquirtStartEnd, 0 ;[PJSC v1.01c] | |
| 1337 | + defaultValue = inj4SquirtStartEnd, 0 ;[PJSC v1.01c] | |
| 1329 | 1338 | |
| 1330 | - | |
| 1331 | 1339 | ;Default pins |
| 1332 | 1340 | defaultValue = fanPin, 0 |
| 1333 | 1341 | defaultValue = vvtPin, 0 |
| @@ -1444,7 +1452,7 @@ | ||
| 1444 | 1452 | ;[PJSC] subMenu = veTableDialog, "VE Table", 0 |
| 1445 | 1453 | ;[PJSC] subMenu = sparkTbl, "Spark Table", 2 |
| 1446 | 1454 | subMenu = std_separator ;[PJSC v1.01c] |
| 1447 | - subMenu = veMapSelectDialog, "VE Table select" ;[PJSC] | |
| 1455 | + subMenu = veMapSelectDialog, "VE Table configuration" ;[PJSC] | |
| 1448 | 1456 | subMenu = veTable1Dialog, "&VE Table 1", 0 ; V |
| 1449 | 1457 | subMenu = veTable2Dialog, "&VE Table 2", 0, { multiVEmapEnabled } ;[PJSC] |
| 1450 | 1458 | subMenu = veTable3Dialog, "&VE Table 3", 0, { multiVEmapEnabled } ;[PJSC v1.10] |
| @@ -1826,6 +1834,7 @@ | ||
| 1826 | 1834 | dialog = engine_constants_east, "" |
| 1827 | 1835 | panel = engine_constants_northeast, North |
| 1828 | 1836 | field = "" |
| 1837 | + field = "Table 4 used for", table4Usage ;[PJSC v1.01c]For debug | |
| 1829 | 1838 | |
| 1830 | 1839 | dialog = engine_constants, "", border |
| 1831 | 1840 | panel = engine_constants_west, West |
| @@ -1992,7 +2001,12 @@ | ||
| 1992 | 2001 | panel = accelEnrichments_center, Center |
| 1993 | 2002 | panel = accelEnrichments_south, South |
| 1994 | 2003 | |
| 1995 | - dialog = veMapSelectionSet1Pri, "Primary Table" ;[PJSC v1.10] | |
| 2004 | + dialog = veCorrectionSetting, "VE correction setting" ;[PJSC v1.01c] | |
| 2005 | + field = "Multiply VE value by MAP:Baro ratio", multiplyMAP ; | | |
| 2006 | + field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } ; V | |
| 2007 | + field = "Barometric correction", baroCorr, { useExtBaro } ;[PJSC v1.01c] | |
| 2008 | + | |
| 2009 | + dialog = veMapSelectionSet1Pri, "Primary Table" ;[PJSC v1.10] | |
| 1996 | 2010 | field = "Injector 1", veMapSelection1Pri ; | |
| 1997 | 2011 | field = "Injector 2", veMapSelection2Pri, { multiVEmapEnabled && mapSeparationEnabled } ; | |
| 1998 | 2012 | field = "Injector 3", veMapSelection3Pri, { multiVEmapEnabled && mapSeparationEnabled } ; | |
| @@ -2024,7 +2038,7 @@ | ||
| 2024 | 2038 | panel = veMapSelectionSet2Pri ; | |
| 2025 | 2039 | panel = veMapSelectionSet2Sec, { multiVEmapEnabled && dualFuelEnabled } ; | |
| 2026 | 2040 | ; | |
| 2027 | - dialog = veMapSelectionDialog, "", xAxis ; | | |
| 2041 | + dialog = veMapSelectionDialog, "" ; | | |
| 2028 | 2042 | panel = veMapSelectionSet1 ; | |
| 2029 | 2043 | panel = veMapSelectionSet2, { mapSwitchingEnabled } ; | |
| 2030 | 2044 | ; | |
| @@ -2047,79 +2061,68 @@ | ||
| 2047 | 2061 | panel = veMapSelectOption ; | |
| 2048 | 2062 | panel = veFuelLoadSelection ; | |
| 2049 | 2063 | ; | |
| 2050 | - dialog = veMapSelectDialog, "VE Table select" ; | | |
| 2064 | + dialog = veMapSelectDialog, "VE Table configration" ; | | |
| 2065 | + panel = veCorrectionSetting ; |[PJSC v1.01c] | |
| 2051 | 2066 | panel = veMapSelectConfig ; V |
| 2052 | 2067 | panel = veMapSelectionDialog ;[PJSC v1.10] |
| 2053 | 2068 | |
| 2054 | 2069 | ;[PJSC] dialog = veTableDialog_north, "" |
| 2055 | 2070 | ;[PJSC] panel = veTable1Tbl |
| 2056 | - dialog = veTable1Dialog_north, "" ;[PJSC] | |
| 2057 | - panel = veTable1Tbl ;[PJSC] | |
| 2058 | 2071 | |
| 2059 | -;[PJSC] dialog = veTableDialog_south, "" | |
| 2060 | - dialog = veTable1Dialog_south, "" ;[PJSC] | |
| 2061 | - field = "Multiply VE value by MAP:Baro ratio", multiplyMAP | |
| 2062 | - field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } | |
| 2063 | - field = "Barometric correction", baroCorr, { useExtBaro } ;[PJSC v1.10] For Barometric correnction | |
| 2064 | - | |
| 2065 | 2072 | ;[PJSC] dialog = veTableDialog, "VE Table" |
| 2066 | 2073 | ;[PJSC] panel = veTableDialog_north, North |
| 2067 | 2074 | ;[PJSC] panel = veTableDialog_south, South |
| 2068 | - dialog = veTable1Dialog, "VE Table 1" ;[PJSC] | |
| 2069 | - panel = veTable1Dialog_north, North ;[PJSC] | |
| 2070 | - panel = veTable1Dialog_south, South ;[PJSC] | |
| 2071 | - | |
| 2072 | - dialog = veTable2Dialog_north, "" ;[PJSC] | |
| 2073 | - panel = veTable2Tbl ; | | |
| 2075 | + dialog = veTable1Dialog, "VE Table 1" ;[PJSC v1.01c] | |
| 2076 | + panel = veTable1Tbl ; | | |
| 2074 | 2077 | ; | |
| 2075 | - dialog = veTable2Dialog_south, "" ; | | |
| 2076 | - field = "Multiply VE value by MAP:Baro ratio", multiplyMAP ; | | |
| 2077 | - field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } ; | | |
| 2078 | - field = "Barometric correction", baroCorr, { useExtBaro } ; |[PJSC v1.10] For Barometric correnction | |
| 2079 | - ; | | |
| 2080 | 2078 | dialog = veTable2Dialog, "VE Table 2" ; | |
| 2081 | - panel = veTable2Dialog_north, North ; V | |
| 2082 | - panel = veTable2Dialog_south, South ;[PJSC] | |
| 2083 | - | |
| 2084 | - dialog = veTable3Dialog_north, "" ;[PJSC v1.10] | |
| 2085 | - panel = veTable3Tbl ; | | |
| 2079 | + panel = veTable2Tbl ; | | |
| 2086 | 2080 | ; | |
| 2087 | - dialog = veTable3Dialog_south, "" ; | | |
| 2088 | - field = "Multiply VE value by MAP:Baro ratio", multiplyMAP ; | | |
| 2089 | - field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } ; | | |
| 2090 | - field = "Barometric correction", baroCorr, { useExtBaro } ; |For Barometric correnction | |
| 2091 | - ; | | |
| 2092 | 2081 | dialog = veTable3Dialog, "VE Table 3" ; | |
| 2093 | - panel = veTable3Dialog_north, North ; | | |
| 2094 | - panel = veTable3Dialog_south, South ; | | |
| 2082 | + panel = veTable3Tbl ; | | |
| 2095 | 2083 | ; | |
| 2096 | - dialog = veTable4Dialog_north, "" ; | | |
| 2097 | - panel = sparkTbl ; | | |
| 2098 | - ; | | |
| 2099 | - dialog = veTable4Dialog_south, "" ; | | |
| 2100 | - field = "Multiply VE value by MAP:Baro ratio", multiplyMAP ; | | |
| 2101 | - field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } ; | | |
| 2102 | - field = "Barometric correction", baroCorr, { useExtBaro } ; | | |
| 2103 | - ; | | |
| 2104 | - dialog = veTable4Dialog, "VE Table 4" ; | | |
| 2105 | - panel = veTable4Dialog_north, North ; V | |
| 2106 | - panel = veTable4Dialog_south, South ;[PJSC v1.10] | |
| 2084 | + dialog = veTable4Dialog, "VE Table 4" ; V | |
| 2085 | + panel = sparkTbl ;[PJSC v1.01c] | |
| 2107 | 2086 | |
| 2108 | - dialog = injChars, "Injector Characteristics" ;[PJSC] | |
| 2109 | - field = "Squirt Device", squirtDeviceType ; | | |
| 2110 | - field = "Pump Jet solenoid freq.", pjscFreq, { squirtDeviceType == 1 } ; | | |
| 2111 | - field = "Fuel correction for Pump Jet", fuelCorrectionEnabled, { squirtDeviceType == 1 } ; |[PJSC v1.01c] | |
| 2112 | - field = "Injector Open Time", injOpen, { squirtDeviceType == 0 } ; | | |
| 2113 | - field = "Injector close angle", { squirtDeviceType == 0 } ; | | |
| 2114 | - field = "", inj1Ang, { indInjAng == 0 && squirtDeviceType == 0 } ; | | |
| 2115 | - field = "Individual channel setting", indInjAng, { squirtDeviceType == 0 } ; | | |
| 2116 | - field = "Channel 1", inj1Ang, { indInjAng && squirtDeviceType == 0 } ; | | |
| 2117 | - field = "Channel 2", inj2Ang, { (nCylinders > 1 || nInjectors > 1) && indInjAng && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2118 | - field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || nInjectors > 2 || ((nCylinders == 4) && (injLayout == 3))) && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2119 | - field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4 || nInjectors > 3) && (injLayout == 3))) && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2120 | - field = "Injector Duty Limit", dutyLim, { squirtDeviceType == 0 } ; V | |
| 2121 | - panel = injector_voltage_curve ;[PJSC] | |
| 2087 | + dialog = injCloseAngles_west, "" ;[PJSC v1.01c] | |
| 2088 | + field = "Channel 1", inj1SquirtStartEnd, { squirtDeviceType == 0 } ; | | |
| 2089 | + field = "Channel 2", inj2SquirtStartEnd, { (nCylinders > 1 || nInjectors > 1) && indInjAng && squirtDeviceType == 0 } ; | | |
| 2090 | + field = "Channel 3", inj3SquirtStartEnd, { indInjAng && (nCylinders > 4 || nCylinders == 3 || nInjectors > 2 || ((nCylinders == 4) && (injLayout == 3))) && squirtDeviceType == 0 } ; V | |
| 2091 | + field = "Channel 4", inj4SquirtStartEnd, { indInjAng && (nCylinders > 6 || ((nCylinders == 4 || nInjectors > 3) && (injLayout == 3))) && squirtDeviceType == 0 } ;[PJSC v1.01c] | |
| 2122 | 2092 | |
| 2093 | + dialog = injCloseAngles_east, "" ;[PJSC v1.01c] | |
| 2094 | + field = "", inj1Ang, { squirtDeviceType == 0 } ; | | |
| 2095 | + field = "", inj2Ang, { (nCylinders > 1 || nInjectors > 1) && indInjAng && squirtDeviceType == 0 } ; | | |
| 2096 | + field = "", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || nInjectors > 2 || ((nCylinders == 4) && (injLayout == 3))) && squirtDeviceType == 0 } ; V | |
| 2097 | + field = "", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4 || nInjectors > 3) && (injLayout == 3))) && squirtDeviceType == 0 } ;[PJSC v1.01c] | |
| 2098 | + | |
| 2099 | + dialog = injCloseAngles, "Injector squirt angle", xAxis ;[PJSC v1.01c] | |
| 2100 | + panel = injCloseAngles_west ; V | |
| 2101 | + panel = injCloseAngles_east ;[PJSC v1.01c] | |
| 2102 | + | |
| 2103 | + dialog = injChars, "Injector Characteristics" ;[PJSC v1.01c] | |
| 2104 | + field = "Squirt Device", squirtDeviceType ; | | |
| 2105 | + field = "PJSC solenoid freq.", pjscFreq, { squirtDeviceType == 1 } ; | | |
| 2106 | + field = "Injector Open Time", injOpen, { squirtDeviceType == 0 } ; | | |
| 2107 | + field = "Injector Duty Limit", dutyLim, { squirtDeviceType == 0 } ; | | |
| 2108 | + field = "Individual channel setting", indInjAng, { squirtDeviceType == 0 } ; | | |
| 2109 | + panel = injCloseAngles ; V | |
| 2110 | + panel = injector_voltage_curve ;[PJSC v1.01c] | |
| 2111 | + | |
| 2112 | +;[PJSC v1.01c] dialog = injChars, "Injector Characteristics" ;[PJSC] | |
| 2113 | +;[PJSC v1.01c] field = "Squirt Device", squirtDeviceType ; | | |
| 2114 | +;[PJSC v1.01c] field = "PJSC solenoid freq.", pjscFreq, { squirtDeviceType == 1 } ; | | |
| 2115 | +;[PJSC v1.01c] field = "Injector Open Time", injOpen, { squirtDeviceType == 0 } ; | | |
| 2116 | +;[PJSC v1.01c] field = "Injector close angle", { squirtDeviceType == 0 } ; | | |
| 2117 | +;[PJSC v1.01c] field = "", inj1Ang, { indInjAng == 0 && squirtDeviceType == 0 } ; | | |
| 2118 | +;[PJSC v1.01c] field = "Individual channel setting", indInjAng, { squirtDeviceType == 0 } ; | | |
| 2119 | +;[PJSC v1.01c] field = "Channel 1", inj1Ang, { indInjAng && squirtDeviceType == 0 } ; | | |
| 2120 | +;[PJSC v1.01c] field = "Channel 2", inj2Ang, { (nCylinders > 1 || nInjectors > 1) && indInjAng && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2121 | +;[PJSC v1.01c] field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || nInjectors > 2 || ((nCylinders == 4) && (injLayout == 3))) && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2122 | +;[PJSC v1.01c] field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4 || nInjectors > 3) && (injLayout == 3))) && squirtDeviceType == 0 } ; |[PJSC v1.01c] | |
| 2123 | +;[PJSC v1.01c] field = "Injector Duty Limit", dutyLim, { squirtDeviceType == 0 } ; V | |
| 2124 | +;[PJSC v1.01c] panel = injector_voltage_curve ;[PJSC] | |
| 2125 | + | |
| 2123 | 2126 | ;[PJSC] dialog = injChars, "Injector Characteristics" |
| 2124 | 2127 | ;[PJSC] field = "Injector Open Time", injOpen |
| 2125 | 2128 | ;[PJSC] field = "Injector close angle" |