Tested and working stepper idle control

This commit is contained in:
Josh Stewart 2015-08-26 13:27:50 +10:00
parent bcbd3eccd9
commit d126abfd5f
5 changed files with 216 additions and 197 deletions

View File

@ -303,6 +303,7 @@ struct config4 {
byte fanInv : 1; // Fan output inversion bit
byte fanEnable : 1; // Fan enable bit
byte unused : 6;
byte fanSP; // Cooling fan start temperature
byte fanHyster; // Fan hysteresis
};

12
idle.h
View File

@ -1,14 +1,13 @@
#define STEPPER_FORWARD 1
#define STEPPER_BACKWARD 0
#define STEPPER_FORWARD 0
#define STEPPER_BACKWARD 1
#define IDLE_TABLE_SIZE 10
#define DRV8825_STEP_TIME 800 //The time in uS between steps for the DRV8825
enum StepperStatus {SOFF, STEPPING}; //The 2 statuses that a stepper can have. STEPPING means that a high pulse is currently being sent and will need to be turned off at some point.
enum StepperStatus {SOFF, STEPPING, COOLING}; //The 2 statuses that a stepper can have. STEPPING means that a high pulse is currently being sent and will need to be turned off at some point.
struct StepperIdle
{
int curIdleStep; //Tracks the current location of the stepper
int targetIdleStep; //What the targetted step is
unsigned int curIdleStep; //Tracks the current location of the stepper
unsigned int targetIdleStep; //What the targetted step is
volatile StepperStatus stepperStatus;
volatile unsigned long stepStartTime; //The time the curren
};
@ -22,5 +21,6 @@ struct table2D iacCrankDutyTable;
struct StepperIdle idleStepper;
bool idleOn; //Simply tracks whether idle was on last time around
unsigned int iacStepTime;
void initialiseIdle();

View File

@ -32,6 +32,7 @@ void initialiseIdle()
case 2:
//Case 2 is PWM open loop
iacPWMTable.xSize = 10;
iacPWMTable.valueSize = SIZE_BYTE;
iacPWMTable.values = configPage4.iacOLPWMVal;
iacPWMTable.axisX = configPage4.iacBins;
@ -54,14 +55,17 @@ void initialiseIdle()
case 4:
//Case 2 is Stepper open loop
iacStepTable.xSize = 10;
iacStepTable.valueSize = SIZE_BYTE;
iacStepTable.values = configPage4.iacOLStepVal;
iacStepTable.axisX = configPage4.iacBins;
iacCrankStepsTable.xSize = 4;
iacCrankStepsTable.values = configPage4.iacCrankSteps;
iacCrankStepsTable.axisX = configPage4.iacCrankBins;
iacStepTime = configPage4.iacStepTime * 1000;
homeStepper(); //Returns the stepper to the 'home' position
idleStepper.stepperStatus = SOFF;
break;
case 5:
@ -73,6 +77,10 @@ void initialiseIdle()
iacCrankStepsTable.xSize = 4;
iacCrankStepsTable.values = configPage4.iacCrankSteps;
iacCrankStepsTable.axisX = configPage4.iacCrankBins;
iacStepTime = configPage4.iacStepTime * 1000;
homeStepper(); //Returns the stepper to the 'home' position
idleStepper.stepperStatus = SOFF;
break;
}
@ -116,13 +124,23 @@ void idleControl()
case 4: //Case 4 is open loop stepper control
//First thing to check is whether there is currently a step going on and if so, whether it needs to be turned off
if(idleStepper.stepperStatus == STEPPING)
if(idleStepper.stepperStatus == STEPPING || idleStepper.stepperStatus == COOLING)
{
if(micros() > (idleStepper.stepStartTime + DRV8825_STEP_TIME) )
if(micros() > (idleStepper.stepStartTime + iacStepTime) )
{
//Means we're currently in a step, but it needs to be turned off
digitalWrite(pinStepperStep, LOW); //Turn off the step
idleStepper.stepperStatus = SOFF;
if(idleStepper.stepperStatus == STEPPING)
{
//Means we're currently in a step, but it needs to be turned off
digitalWrite(pinStepperStep, LOW); //Turn off the step
idleStepper.stepStartTime = micros();
idleStepper.stepperStatus = COOLING; //'Cooling' is the time the stepper needs to sit in LOW state before the next step can be made
return;
}
else
{
//Means we're in COOLING status. We need to remain in this state for the step time before the next step can be taken
idleStepper.stepperStatus = SOFF;
}
}
else
{
@ -135,23 +153,23 @@ void idleControl()
if( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) )
{
//Currently cranking. Use the cranking table
idleStepper.targetIdleStep = table2D_getValue(&iacCrankStepsTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)); //All temps are offset by 40 degrees
if (idleStepper.targetIdleStep == idleStepper.curIdleStep) { return; } //No action required
else if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); }//Sets stepper direction to forwards
idleStepper.targetIdleStep = table2D_getValue(&iacCrankStepsTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
if ( idleStepper.targetIdleStep > (idleStepper.curIdleStep - configPage4.iacStepHyster) && idleStepper.targetIdleStep < (idleStepper.curIdleStep + configPage4.iacStepHyster) ) { return; } //Hysteris check
else if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); idleStepper.curIdleStep--; }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); idleStepper.curIdleStep++; }//Sets stepper direction to forwards
digitalWrite(pinStepperStep, HIGH);
idleStepper.stepStartTime = micros();
idleStepper.stepperStatus = STEPPING;
idleOn = true;
}
else if( (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) < iacStepTable.values[IDLE_TABLE_SIZE-1])
else if( (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) < iacStepTable.axisX[IDLE_TABLE_SIZE-1])
{
//Standard running
idleStepper.targetIdleStep = table2D_getValue(&iacStepTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)); //All temps are offset by 40 degrees
if (idleStepper.targetIdleStep == idleStepper.curIdleStep) { return; } //No action required
else if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); }//Sets stepper direction to forwards
idleStepper.targetIdleStep = table2D_getValue(&iacStepTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
if ( idleStepper.targetIdleStep > (idleStepper.curIdleStep - configPage4.iacStepHyster) && idleStepper.targetIdleStep < (idleStepper.curIdleStep + configPage4.iacStepHyster) ) { return; } //Hysteris check
else if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); idleStepper.curIdleStep--; }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); idleStepper.curIdleStep++; }//Sets stepper direction to forwards
digitalWrite(pinStepperStep, HIGH);
idleStepper.stepStartTime = micros();
@ -170,10 +188,12 @@ void homeStepper()
{
//Need to 'home' the stepper on startup
digitalWrite(pinStepperDir, STEPPER_BACKWARD); //Sets stepper direction to backwards
for(int x=0; x < configPage4.iacStepHome; x++)
for(int x=0; x < (configPage4.iacStepHome * 3); x++) //Step counts are divided by 3 in TS. Multiply back out here
{
digitalWrite(pinStepperStep, HIGH);
delayMicroseconds(DRV8825_STEP_TIME);
delayMicroseconds(iacStepTime);
digitalWrite(pinStepperStep, LOW);
delayMicroseconds(iacStepTime);
}
digitalWrite(pinStepperDir, STEPPER_FORWARD);
idleStepper.curIdleStep = 0;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<msq xmlns="http://www.msefi.com/:msq">
<bibliography author="TunerStudio MS 2.6.14 - EFI Analytics, Inc." tuneComment="" writeDate="Thu Aug 06 16:52:19 EST 2015"/>
<versionInfo fileFormat="4.0" firmwareInfo="" nPages="7" signature="20"/>
<bibliography author="TunerStudio MS 2.6.14 - EFI Analytics, Inc." tuneComment="" writeDate="Wed Aug 26 13:24:38 EST 2015"/>
<versionInfo fileFormat="4.0" firmwareInfo="Bowling &amp; Grippo MS1 Base Code 20" nPages="7" signature="20"/>
<page>
<pcVariable name="tsCanId">"0"</pcVariable>
<pcVariable cols="1" digits="1" name="wueAfrTargetOffset" rows="10" units=":1">
@ -16,18 +16,6 @@
-0.1
0.0
</pcVariable>
<pcVariable cols="1" digits="0" name="wueAnalRecommend" rows="10" units="%">
162.0
152.0
143.0
135.0
126.0
120.0
119.0
116.0
112.0
100.0
</pcVariable>
<pcVariable cols="1" digits="0" name="tempTable" rows="10" units="%">
-40.0
-29.0
@ -43,83 +31,83 @@
</page>
<page number="0" size="288">
<constant cols="16" digits="0" name="veTable" rows="16" units="%">
29.0 29.0 29.0 29.0 28.0 28.0 27.0 27.0 27.0 27.0 27.0 27.0 27.0 27.0 27.0 27.0
33.0 33.0 33.0 34.0 34.0 33.0 33.0 33.0 33.0 33.0 33.0 33.0 31.0 31.0 31.0 31.0
36.0 36.0 37.0 38.0 38.0 38.0 39.0 38.0 38.0 37.0 37.0 37.0 35.0 35.0 35.0 35.0
38.0 39.0 39.0 40.0 41.0 42.0 42.0 42.0 41.0 41.0 41.0 40.0 40.0 40.0 40.0 40.0
42.0 43.0 43.0 44.0 45.0 45.0 45.0 45.0 44.0 44.0 44.0 44.0 45.0 45.0 45.0 45.0
44.0 45.0 46.0 46.0 47.0 47.0 48.0 48.0 46.0 47.0 48.0 49.0 49.0 49.0 49.0 49.0
48.0 49.0 50.0 49.0 50.0 51.0 51.0 52.0 52.0 52.0 53.0 53.0 53.0 53.0 53.0 53.0
52.0 54.0 55.0 56.0 56.0 56.0 57.0 57.0 57.0 57.0 58.0 58.0 58.0 58.0 58.0 58.0
56.0 58.0 59.0 61.0 61.0 62.0 62.0 62.0 62.0 62.0 62.0 63.0 62.0 62.0 62.0 62.0
61.0 64.0 65.0 66.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0 67.0
67.0 69.0 70.0 71.0 72.0 72.0 72.0 72.0 72.0 72.0 72.0 72.0 72.0 72.0 72.0 71.0
74.0 75.0 76.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 77.0 76.0
82.0 83.0 84.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 85.0 84.0
91.0 91.0 92.0 92.0 93.0 93.0 93.0 93.0 93.0 93.0 93.0 93.0 93.0 93.0 92.0 92.0
96.0 97.0 97.0 97.0 98.0 98.0 98.0 98.0 98.0 98.0 98.0 98.0 98.0 98.0 98.0 97.0
102.0 102.0 102.0 102.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0 103.0
23.0 23.0 23.0 24.0 22.0 21.0 19.0 18.0 17.0 15.0 15.0 15.0 15.0 15.0 15.0 15.0
24.0 24.0 24.0 25.0 23.0 22.0 20.0 19.0 18.0 16.0 15.0 15.0 15.0 15.0 15.0 15.0
24.0 25.0 26.0 27.0 26.0 24.0 23.0 21.0 20.0 18.0 17.0 16.0 15.0 15.0 15.0 15.0
26.0 28.0 29.0 30.0 29.0 27.0 26.0 24.0 23.0 21.0 20.0 18.0 17.0 16.0 16.0 16.0
27.0 33.0 35.0 36.0 32.0 30.0 29.0 27.0 26.0 24.0 23.0 21.0 20.0 19.0 19.0 19.0
31.0 38.0 40.0 39.0 36.0 34.0 32.0 30.0 29.0 27.0 26.0 24.0 23.0 21.0 21.0 22.0
35.0 38.0 40.0 39.0 40.0 38.0 36.0 34.0 32.0 31.0 29.0 28.0 26.0 24.0 24.0 24.0
41.0 43.0 44.0 42.0 43.0 41.0 40.0 38.0 36.0 34.0 32.0 31.0 29.0 27.0 26.0 27.0
45.0 46.0 46.0 46.0 45.0 43.0 41.0 40.0 38.0 36.0 34.0 32.0 31.0 29.0 29.0 29.0
45.0 46.0 46.0 46.0 46.0 44.0 42.0 40.0 38.0 36.0 34.0 33.0 31.0 31.0 32.0 32.0
45.0 46.0 46.0 46.0 48.0 45.0 43.0 41.0 40.0 38.0 36.0 34.0 33.0 34.0 34.0 34.0
45.0 46.0 46.0 46.0 48.0 45.0 43.0 41.0 40.0 38.0 36.0 36.0 36.0 37.0 37.0 37.0
45.0 46.0 46.0 46.0 48.0 48.0 45.0 43.0 41.0 40.0 40.0 41.0 41.0 42.0 42.0 42.0
45.0 45.0 45.0 46.0 48.0 48.0 47.0 45.0 43.0 43.0 43.0 43.0 44.0 44.0 44.0 44.0
45.0 45.0 45.0 46.0 48.0 48.0 48.0 46.0 45.0 45.0 45.0 46.0 46.0 47.0 47.0 47.0
45.0 45.0 45.0 46.0 48.0 48.0 48.0 48.0 47.0 48.0 48.0 48.0 48.0 48.0 48.0 48.0
</constant>
<constant cols="1" digits="0" name="rpmBins" rows="16" units="RPM">
500.0
1000.0
700.0
900.0
1500.0
2000.0
2500.0
3000.0
3500.0
4000.0
4500.0
5000.0
2100.0
2900.0
3800.0
4700.0
5500.0
6000.0
5700.0
5900.0
6100.0
6300.0
6500.0
7000.0
8000.0
9000.0
6600.0
6600.0
</constant>
<constant cols="1" digits="0" name="tpsBins" rows="16" units="TPS">
2.0
6.0
10.0
14.0
18.0
22.0
26.0
32.0
38.0
46.0
54.0
64.0
74.0
86.0
96.0
<constant cols="1" digits="0" name="mapBins" rows="16" units="kPa">
15.0
25.0
30.0
35.0
40.0
45.0
50.0
55.0
60.0
65.0
70.0
75.0
85.0
90.0
95.0
100.0
</constant>
</page>
<page number="1" size="64">
<constant digits="1" name="crankCold" units="ms">5.0</constant>
<constant digits="1" name="crankHot" units="ms">2.0</constant>
<constant digits="0" name="asePct" units="%">15.0</constant>
<constant digits="0" name="aseCount" units="s">13.0</constant>
<constant digits="0" name="asePct" units="%">4.0</constant>
<constant digits="0" name="aseCount" units="s">50.0</constant>
<constant cols="1" digits="0" name="wueBins" rows="10" units="%">
162.0
152.0
148.0
148.0
100.0
100.0
100.0
100.0
148.0
145.0
140.0
128.0
126.0
112.0
100.0
</constant>
<constant digits="0" name="crankingPct" units="%">10.0</constant>
<constant name="pinLayout">"Turtana PCB"</constant>
<constant digits="0" name="crankingPct" units="%">1.0</constant>
<constant name="pinLayout">"Speeduino v0.4"</constant>
<constant digits="1" name="unused16" units="ms">0.0</constant>
<constant digits="1" name="tdePct" units="ms">3.2</constant>
<constant digits="1" name="taeColdA" units="ms">0.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">40.0</constant>
<constant digits="0" name="tpsThresh" units="%/s">100.0</constant>
<constant digits="0" name="taeTime" units="ms">200.0</constant>
<constant name="display">"Unused"</constant>
<constant name="display1">"VE"</constant>
@ -129,7 +117,7 @@
<constant name="display5">"RPM"</constant>
<constant name="displayB1">"RPM"</constant>
<constant name="displayB2">"RPM"</constant>
<constant digits="1" name="reqFuel" units="ms">9.0</constant>
<constant digits="1" name="reqFuel" units="ms">13.2</constant>
<constant digits="0" name="divider">2.0</constant>
<constant name="alternate">"Alternating"</constant>
<constant digits="1" name="injOpen" units="ms">1.0</constant>
@ -146,11 +134,11 @@
<constant name="nInjectors">"4"</constant>
<constant name="engineType">"Even fire"</constant>
<constant name="egoType1">"Narrow band"</constant>
<constant name="algorithm">"Alpha-N"</constant>
<constant name="algorithm">"Speed Density"</constant>
<constant name="baroCorr">"Off"</constant>
<constant name="injTiming">"Semi-Sequential"</constant>
<constant digits="1" name="primePulse" units="ms">0.0</constant>
<constant digits="0" name="dutyLim" units="%">35.0</constant>
<constant digits="0" name="dutyLim" units="%">85.0</constant>
<constant digits="0" name="unused41" units="RPM">4200.0</constant>
<constant digits="3" name="egoSwitch" units="v">0.0</constant>
<constant digits="0" name="taeColdM" units="%">0.0</constant>
@ -163,8 +151,8 @@
21.0 22.0 23.0 24.0 25.0 28.0 31.0 33.0 34.0 35.0 36.0 37.0 38.0 38.0 39.0 40.0
21.0 22.0 23.0 24.0 25.0 28.0 31.0 33.0 34.0 35.0 36.0 37.0 38.0 38.0 39.0 40.0
21.0 22.0 23.0 24.0 25.0 28.0 31.0 33.0 34.0 34.0 36.0 37.0 37.0 37.0 38.0 39.0
20.0 21.0 22.0 23.0 24.0 28.0 31.0 32.0 34.0 34.0 36.0 37.0 37.0 37.0 38.0 39.0
20.0 21.0 22.0 23.0 24.0 28.0 31.0 32.0 33.0 34.0 35.0 36.0 36.0 36.0 37.0 38.0
20.0 15.0 15.0 23.0 24.0 28.0 31.0 32.0 34.0 34.0 36.0 37.0 37.0 37.0 38.0 39.0
20.0 15.0 15.0 23.0 24.0 28.0 31.0 32.0 33.0 34.0 35.0 36.0 36.0 36.0 37.0 38.0
19.0 20.0 22.0 23.0 24.0 27.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 36.0 37.0 38.0
19.0 20.0 21.0 23.0 24.0 26.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 35.0 36.0 37.0
19.0 20.0 21.0 23.0 24.0 25.0 28.0 30.0 31.0 32.0 33.0 34.0 34.0 34.0 35.0 35.0
@ -194,48 +182,48 @@
8000.0
9000.0
</constant>
<constant cols="1" digits="0" name="tpsBins2" rows="16" units="TPS">
2.0
6.0
10.0
14.0
18.0
22.0
<constant cols="1" digits="0" name="mapBins2" rows="16" units="kPa">
15.0
25.0
30.0
38.0
46.0
54.0
62.0
35.0
40.0
45.0
50.0
55.0
60.0
65.0
70.0
80.0
75.0
85.0
90.0
95.0
100.0
</constant>
</page>
<page number="3" size="64">
<constant digits="0" name="TrigAng" units="Deg">270.0</constant>
<constant digits="0" name="FixAng" units="Deg">0.0</constant>
<constant digits="0" name="CrankAng" units="Deg">11.6</constant>
<constant digits="0" name="TrigAng" units="Deg">355.0</constant>
<constant digits="0" name="FixAng" units="Deg">10.0</constant>
<constant digits="0" name="CrankAng" units="Deg">5.0</constant>
<constant digits="0" name="IgHold">10.0</constant>
<constant name="TrigEdge">"Leading"</constant>
<constant name="TrigEdge">"Trailing"</constant>
<constant name="TrigSpeed">"Crank Speed"</constant>
<constant name="IgInv">"Going Low"</constant>
<constant name="oddfire">"Yes"</constant>
<constant name="TrigPattern">"Missing Tooth"</constant>
<constant name="TrigPattern">"Basic Distributor"</constant>
<constant digits="0" name="IdleAdv" units="Deg">-1.9008</constant>
<constant digits="0" name="IdleAdvTPS" units="ADC">65.0</constant>
<constant digits="0" name="IdleAdvRPM" units="RPM">3200.0</constant>
<constant digits="1" name="IdleAdvCLT" units="C">-20.535</constant>
<constant digits="0" name="IdleDelayTime" units="sec">38.0</constant>
<constant digits="0" name="StgCycles" units="cycles">3.0</constant>
<constant digits="0" name="StgCycles" units="cycles">1.0</constant>
<constant name="dwellcont">"Dwell control"</constant>
<constant digits="1" name="dwellcrank" units="ms">4.5</constant>
<constant digits="1" name="dwellrun" units="ms">3.8</constant>
<constant digits="1" name="dwellcrank" units="ms">6.0</constant>
<constant digits="1" name="dwellrun" units="ms">3.0</constant>
<constant digits="0" name="numteeth" units="teeth">36.0</constant>
<constant digits="0" name="onetwo" units="teeth">1.0</constant>
<constant digits="0" name="crankRPM" units="rpm">300.0</constant>
<constant digits="0" name="tpsflood" units="%">92.0</constant>
<constant digits="0" name="crankRPM" units="rpm">500.0</constant>
<constant digits="0" name="tpsflood" units="%">90.0</constant>
<constant digits="0" name="SoftRevLim" units="rpm">7500.0</constant>
<constant digits="0" name="SoftLimRetard" units="deg">20.0</constant>
<constant digits="1" name="SoftLimMax" units="s">2.0</constant>
@ -311,23 +299,23 @@
8000.0
9000.0
</constant>
<constant cols="1" digits="0" name="tpsBinsAFR" rows="16" units="TPS">
2.0
4.0
6.0
8.0
10.0
12.0
16.0
20.0
24.0
28.0
34.0
40.0
50.0
60.0
80.0
100.0
<constant cols="1" digits="0" name="mapBinsAFR" rows="16" units="kPa">
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
255.0
</constant>
</page>
<page number="5" size="64">
@ -349,7 +337,7 @@
<constant digits="0" name="unused62" units="RPM">3000.0</constant>
<constant digits="0" name="unused63" units="RPM">6000.0</constant>
<constant name="egoAlgorithm">"No correction"</constant>
<constant name="egoType">"Wide Band"</constant>
<constant name="egoType">"Narrow Band"</constant>
<constant digits="0" name="egoKP" units="%">100.0</constant>
<constant digits="0" name="egoKI" units="%">20.0</constant>
<constant digits="0" name="egoKD" units="%">0.0</constant>
@ -419,77 +407,80 @@
0.0
</constant>
<constant cols="1" digits="0" name="iacOLStepVal" rows="10" units="Steps">
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
369.0
327.0
291.0
246.0
213.0
168.0
123.0
87.0
45.0
0.0
</constant>
<constant cols="1" digits="0" name="iacOLPWMVal" rows="10" units="Duty %">
0.0
7.0
11.0
16.0
19.0
24.0
29.0
34.0
38.0
43.0
39.0
33.0
28.0
17.0
5.0
0.0
0.0
0.0
0.0
</constant>
<constant cols="1" digits="0" name="iacBins" rows="10" units="C">
108.0
81.0
52.0
28.0
14.0
-38.0
-19.0
1.0
-12.0
-21.0
-31.0
-37.0
21.0
35.0
46.0
56.0
64.0
71.0
77.0
</constant>
<constant cols="1" digits="0" name="iacCrankSteps" rows="4" units="Steps">
0.0
0.0
0.0
0.0
123.0
579.0
390.0
300.0
</constant>
<constant cols="1" digits="0" name="iacCrankDuty" rows="4" units="Duty %">
27.0
31.0
42.0
44.0
59.0
</constant>
<constant cols="1" digits="0" name="iacCrankBins" rows="4" units="C">
127.0
85.0
39.0
-13.0
-28.0
6.0
44.0
73.0
</constant>
<constant name="iacAlgorithm">"None"</constant>
<constant name="iacStepTime">"1"</constant>
<constant name="iacAlgorithm">"Stepper"</constant>
<constant name="iacStepTime">"3"</constant>
<constant digits="0" name="iacFastTemp" units="C">-40.0</constant>
<constant digits="0" name="iacStepHome" units="Steps">0.0</constant>
<constant digits="1" name="iacStepHyster" units="C">0.0</constant>
<constant digits="0" name="iacStepHome" units="Steps">240.0</constant>
<constant digits="0" name="iacStepHyster" units="C">4.0</constant>
<constant name="fanInv">"No"</constant>
<constant name="fanEnable">"No"</constant>
<constant name="unused55a">"No"</constant>
<constant name="unused55b">"No"</constant>
<constant name="unused55c">"No"</constant>
<constant name="unused55d">"No"</constant>
<constant name="unused55e">"No"</constant>
<constant name="unused55f">"No"</constant>
<constant digits="0" name="fanSP" units="°C">-40.0</constant>
<constant digits="0" name="fanHyster" units="°C">-40.0</constant>
</page>
<settings Comment="These setting are only used if this msq is opened without a project.">
<setting name="NARROW_BAND_EGO" value="NARROW_BAND_EGO"/>
<setting name="CELSIUS" value="CELSIUS"/>
<setting name="ALPHA_N" value="ALPHA_N"/>
<setting name="SPEED_DENSITY" value="SPEED_DENSITY"/>
<setting name="MPX4250" value="MPX4250"/>
<setting name="INNOVATE_LC1_DEFAULT" value="INNOVATE_LC1_DEFAULT"/>
</settings>
<userComments Comment="These are user comments that can be related to a particular setting or dialog.">
<userComment name="SoftRevLim" value=""/>
<userComment name="aseCount" value=""/>
</userComments>
<userComments Comment="These are user comments that can be related to a particular setting or dialog."/>
</msq>

View File

@ -327,11 +327,11 @@ page = 6
;Start idle and fan controls (Page 7)
;--------------------------------------------------
page = 7
iacCLValues = array, U08, 0, [10], "RPM", 1.0, 0.0, 100.0, 255, 0
iacOLStepVal = array, U08, 10, [10], "Steps", 1.0, 0, 0, 255, 0
iacCLValues = array, U08, 0, [10], "RPM", 1.0, 0.0, 100.0, 255, 0
iacOLStepVal = array, U08, 10, [10], "Steps", 3, 0, 0, 765, 0
iacOLPWMVal = array, U08, 20, [10], "Duty %", 1.0, 0, 0, 100, 0
iacBins = array, U08, 30, [10], "C", 1.0, -40, -40, 215, 0
iacCrankSteps= array, U08, 40, [4], "Steps", 1.0, 0, 0, 255, 0
iacCrankSteps= array, U08, 40, [4], "Steps", 3, 0, 0, 765, 0
iacCrankDuty = array, U08, 44, [4], "Duty %", 1.0, 0, 0, 100, 0
iacCrankBins = array, U08, 48, [4], "C", 1.0, -40, -40, 215, 0
@ -345,18 +345,24 @@ page = 7
iacFastTemp = scalar, U08, 53, "F", 1.0, -40, -40, 215, 0
#endif
iacStepHome = scalar, U08, 54, "Steps", 1.0, 0, 0, 255, 0
iacStepHyster= scalar, U08, 54, "C", 0.1, 0.0, 0.0, 25.5, 1
iacStepHome = scalar, U08, 54, "Steps", 3, 0, 0, 765, 0
iacStepHyster= scalar, U08, 55, "Steps", 1, 0.0, 0.0, 10, 0
; Begin fan control vairables
fanInv = bits, U08, 55, [0:0], "No", "Yes"
fanEnable = bits, U08, 55, [1:1], "No", "Yes"
fanInv = bits, U08, 56, [0:0], "No", "Yes"
fanEnable = bits, U08, 56, [1:1], "No", "Yes"
unused55a = bits, U08, 56, [2:2], "No", "Yes"
unused55b = bits, U08, 56, [3:3], "No", "Yes"
unused55c = bits, U08, 56, [4:4], "No", "Yes"
unused55d = bits, U08, 56, [5:5], "No", "Yes"
unused55e = bits, U08, 56, [6:6], "No", "Yes"
unused55f = bits, U08, 56, [7:7], "No", "Yes"
#if CELSIUS
fanSP = scalar, U08, 56, "°C", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 57, "°C", 1.0, -40, -40, 215.0, 0
fanSP = scalar, U08, 57, "°C", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 58, "°C", 1.0, -40, -40, 215.0, 0
#else
fanSP = scalar, U08, 56, "°F", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 57, "°F", 1.0, -40, -40, 215.0, 0
fanSP = scalar, U08, 57, "°F", 1.0, -40, -40, 215.0, 0
fanHyster = scalar, U08, 58, "°F", 1.0, -40, -40, 215.0, 0
#endif
@ -551,6 +557,7 @@ page = 7
dialog = stepper_idle, "Stepper Idle"
field = "Step time (ms)", iacStepTime, { iacAlgorithm == 4 || iacAlgorithm == 5 }
field = "Home steps", iacStepHome, { iacAlgorithm == 4 || iacAlgorithm == 5 }
field = "Minimum Steps", iacStepHyster, { iacAlgorithm == 4 || iacAlgorithm == 5 }
dialog = idleSettings, "Idle Settings"
field = "Idle control type", iacAlgorithm
@ -784,16 +791,16 @@ help = helpEnrichments, "Enrichments Help"
curve = iacStep_curve, "IAC Stepper Motor"
columnLabel = "Coolant Temperature", "C"
xAxis = -40, 215, 6
yAxis = 0, 100, 4
xAxis = -40, 120, 6
yAxis = 0, 850, 4
xBins = iacBins, coolant
yBins = iacOLStepVal
curve = iacStepCrank_curve, "IAC Stepper Motor Cranking"
columnLabel = "Coolant Temperature", "C"
xAxis = -40, 215, 6
yAxis = 0, 100, 4
xBins = iacBins, coolant
xAxis = -40, 120, 6
yAxis = 0, 850, 4
xBins = iacCrankBins, coolant
yBins = iacCrankSteps