Merge pull request #63 from ConnerMcLaughlin/master

Global injector close angle
This commit is contained in:
Josh Stewart 2017-01-30 20:16:35 +11:00 committed by GitHub
commit 3e24f60a95
3 changed files with 1455 additions and 1452 deletions

View File

@ -243,7 +243,8 @@ struct config1 {
byte injTiming : 1;
byte multiplyMAP : 1;
byte includeAFR : 1;
byte unused26 : 5;
byte unused26 : 4;
byte indInjAng : 1;
byte injOpen; //Injector opening time (ms * 10)
unsigned int inj1Ang;
unsigned int inj2Ang;

View File

@ -1,4 +1,4 @@
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
#unset CAN_COMMANDS
[MegaTune]
@ -168,7 +168,7 @@ page = 2
unused2-26e= bits, U08, 26, [4:4], "No", "Yes"
unused2-26f= bits, U08, 26, [5:5], "No", "Yes"
unused2-26g= bits, U08, 26, [6:6], "No", "Yes"
unused2-26h= bits, U08, 26, [7:7], "No", "Yes"
indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled"
injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1
inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0
inj2Ang = scalar, U16, 30, "deg", 1.0, 0.0, 0.0, 360, 0
@ -544,6 +544,7 @@ page = 9
defaultValue = pinLayout, 1
defaultValue = TrigPattern, 0
defaultValue = sparkMode, 0
defaultValue = indInjAng, 0
defaultValue = inj1Ang, 355
defaultValue = inj2Ang, 355
defaultValue = inj3Ang, 355
@ -892,10 +893,12 @@ menuDialog = main
dialog = injChars, "Injector Characteristics"
field = "Injector Open Time", injOpen
field = "Injector close angle"
field = "Channel 1", inj1Ang
field = "Channel 2", inj2Ang, { nCylinders > 1 }
field = "Channel 3", inj3Ang, { nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3)) }
field = "Channel 4", inj4Ang, { nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3)) }
field = "", inj1Ang, { indInjAng == 0 }
field = "Individual channel setting", indInjAng
field = "Channel 1", inj1Ang, { indInjAng }
field = "Channel 2", inj2Ang, { nCylinders > 1 && indInjAng }
field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3))) }
field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3))) }
field = "Injector Duty Limit", dutyLim
panel = injector_voltage_curve

View File

@ -1033,6 +1033,7 @@ void loop()
//BEGIN INJECTION TIMING
//Determine next firing angles
currentStatus.PW2 = currentStatus.PW3 = currentStatus.PW4 = currentStatus.PW1; // Initial state is for all pulsewidths to be the same (This gets changed below)
if(!configPage1.indInjAng) {configPage1.inj4Ang = configPage1.inj3Ang = configPage1.inj2Ang = configPage1.inj1Ang;} //Forcing all injector close angles to be the same.
int PWdivTimerPerDegree = div(currentStatus.PW1, timePerDegree).quot; //How many crank degrees the calculated PW will take at the current speed
injector1StartAngle = configPage1.inj1Ang - ( PWdivTimerPerDegree ); //This is a little primitive, but is based on the idea that all fuel needs to be delivered before the inlet valve opens. See http://www.extraefi.co.uk/sequential_fuel.html for more detail
if(injector1StartAngle < 0) {injector1StartAngle += CRANK_ANGLE_MAX_INJ;}
@ -1438,8 +1439,6 @@ void loop()
);
}
}
}
}
}
}