V3 MicroSquirt® - QuickStart Guide

Configuring Your V3 MicroSquirt® Controller

The software application you use to tune and configure your MicroSquirt® controller is called TunerStudioMS by Phil Tobin.

You also need Java-enabled PC and a conventional serial port to communicate with your MicroSquirt® controller. USB will may work, and many people have reported that they have been successful using a USB-serial adapter. Just about any computer that is capable of booting Windows 95 (or better) will be fast enough, but get the fastest laptop computer you think is reasonably priced.

To tune all the parameters of MicroSquirt® controller so that your engine runs the best it can, you will need to do the following:

Some general principles to follow when setting the configuration parameters are:

All parameters with a red label should be set with the engine off, and the power to your MicroSquirt® controller should be cycled (switched off and on) before starting the engine!

Always save a combination after you have changed things, and give it a
descriptive name. that is, don't save every file as microsquirt.msq, you
won't be able to recover if you corrupt a file. Instead, save files with names
like msii_june2605.msq, or some other scheme that makes sense to you
and lets you identify how recent a file is. Note the TunerStudioMS will suggest a
filename of the form 'datalogyyymmddhhmm.msl' (or 'datalogyyymmddhhmm.xls' for older versions of TunerStudioMS). There is more on this in
the 'File/datalogging'
section.

When editing the tables, be sure to 'Burn Table' when you
are happy with it, or the changes you make will disappear when you shut off
the power to your MicroSquirt® controller,

In general, change only those items you need to at first. If you are not
sure what a parameter does, or whether it applies to you, leave it at the
default value.

Note that it is possible to damage your engine and/or MicroSquirt® controller by choosing inappropriate tuning or set-up parameters in TunerStudioMS. Be sure to read this document, and all associated tuning documents that apply to your engine, vehicle, and tuning circumstances. In particular, read the safety
precautions.

Install and launch TunerStudioMS. Double-click the TunerStudioMS icon (created above) on the desktop. In order to communicate with your MicroSquirt® controller, you may need to set the serial port configuration. To do this, got to the Communications/Settings dialog on the TunerStudioMS menu.

Port: The communications port number should correspond to the port to which your MicroSquirt® controller is attached.

Timer Interval (ms): The timer interval dictates how frequently the runtime and tuning displays are updated. An interrupt is generated at the specified interval, and the real time data is pulled down from your MicroSquirt® controller. Use 50-100 ms to start; you can try to smaller values (ex. 20 ms) if your computer is fast enough.

Serial data rate (the variable baud in the code): This should be set at 115200 for your MicroSquirt® controller.

Verify ECU Communications: Click the button to verify communications with
the your MicroSquirt® controller controller. If communications are established between TunerStudioMS and your MicroSquirt® controller, the word 'Success' will appear when the 'Click to test' button is clicked. If 'No response!' is reported, check that you have the correct COM port selected, and that no other software is using that port (a modem or fax, for example).

When TunerStudioMS is loaded and communicating with your MicroSquirt® controller, the first thing you will see is the front page. A number of the sensor readings are displayed, as well as some outputs. For example, the injector pulse width is the measure in milliseconds of how long the injector is opened for each pulse, regardless of how many times it is opened in a cycle. Duty cycle gives the percentage of time the injector is open irrespective of individual pulse duration.

TunerStudioMS+ allows you to save and restore configurations as disk files (they have an .msq extension). Use the 'File→Open, Save and Save As' menu items to do this.

Note that as the code develops, some advanced options may not be documented here. To find information on these advanced options, see the TunerStudioMS help file.

Some general principles to follow when setting the configuration parameters are:

Always save a combination after you have changed things, and give it a descriptive name. that is, don't save every file as microquirt.msq, you won't be able to recover if you corrupt a file. Instead, save files with names like micro_june2605.msq, or some other scheme that makes sense to you and lets you identify how recent a file is.

When editing the tables, be sure to 'Burn Table' when you are happy with it, or the changes you make will disappear when you shut off the power to your MicroSquirt® controller,

In general, change only those items you need to at first. If you are not sure what a parameter does, or whether it applies to you, leave it at the default value.

Dual Table Use choose whether you want to control each bank of injector independently, or to run both injector banks off one set of VE/AFR tables.

Barometric Correction choose whether you want:

'None' - no barometric correction,

baro correction based on the initial start-up MAP reading ('Initial MAP Reading'), or

'Two Independent Sensors' for continuous baro correction (ONLY if you have installed a second MAP sensor.)

X-Tau UsageX-Tau usage can be set to off, or accel/decel using this parameter. The X-Tau tuning values are set in the X-Tau Time Table menu item under Tables. See the X-Tau page for more information.

Prime, ASE, WUE Tables. Chose whether you want two point (a high temperature and a low temperature settings) or 10 entry tables for the prime pulse, afterstart enrichment, and warmup enrichment. The tuning values are listed in under the menu item Tables.

Input Smoothing Lag Factors
Lag factors force the variables to change more slowly than the actual input value. Note that in all cases, 100 is no lag effect at all, and smaller numbers slow the input response speed.

For example, suppose your last MAP value was 70, the lag factor is 40 and the current MAP value read directly from the sensor is 90. Then your MicroSquirt® controller will calculate:

NewValue = 70 + (90 - 70) * (40/100) = 70 + 20*0.4 = 78

If the MAP then remains at 90, then next value would be:

NewValue = 78 + (90 - 78) * (40/100) = 78 + 12*0.4 = 82.8

and so on...

This has the effect of slowing your MicroSquirt® controller's response to fluctuating input values, both smoothing them and reducing the effect of noise in the signals.

The following inputs can have lag factors applied to them:

MAP Averaging Lag Factor,

RPM Averaging Lag Factor,

TPS Averaging Lag Factor,

Lambda Averaging Lag Factor,

CLT/MAT/Batt Averaging Lag Factor,

Knock Averaging Lag Factor.

Start-Up

RPM: This is the rpm at which your MicroSquirt® controller switches from the cranking pulse width injected at every ignition event to the pulse width calculated from the fueling equations (MAP, IAT, RPM, etc.). 300 rpm is good for most automotive engines, but a higher value may be needed for motorcycle engine or other specialized uses.

Maximum Retard is the MOST the spark can be retarded in spark Retard mode,

Lower Rev Limit is the level at which the the fuel is re-enabled in Fuel Cut mode, and the level at which timing is fully restored in Spark retard mode.

Upper Rev Limit is the level at which the rev limiter is initially applied.

For example, if you set the upper limit to 6000 and the lower limit to 5800, then in:

Spark Retard mode:

Spark would be applied normally (from the advance table, etc.) until you reached 5800 rpm.

It would then be cut linearly as the revs increased to 6000 rpm.

Note that the spark is retarded with rising revs between 5800 and 6000, as well as when the revs fall.

Fuel Cut mode:

Fuel would be applied normally (from the advance table, etc.) until you reached 6000 rpm.

Fuel would then be cut completely, and restored ONLY when the revs dropped to 5800 rpm.

Note that the fuel is NOT cut with rising revs between 5800 and 6000, only as the revs fall.

Soft Fuel Cut mode:

Fuel would be applied normally (from the advance table, etc.) until you reached 5800 rpm.

Fuel would then be cut randomly, and with increasing probability until the engine reached 6000 rpm, where it would be cut completely.

If you are using a knock sensor, separate baro sensor, or non-standard MAP sensor, you can configure your MicroSquirt® controller to work with them using the 'Sensor Calibration' dialog under 'Tools'.

The code in your MicroSquirt® controller is set up for the standard General Motors temperature sensors. If you are using other sensors, you can use the 'Calibrate Thermistor Tables' dialog under 'Tools'. You enter the bias resistor value (2490 Ohms for your MicroSquirt® controller) and three temperature/resistance points, and the table is created and downloaded to your MicroSquirt® controller for you.

IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is re-programmed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.

The basic idea of IAC is that the motor or PWM solenoid starts out with a large opening of the air valve at cold startup, then gradually closes as the coolant temperature rises. The basic motor position at any given time is determined from the input table of step position versus coolant temperature. To this basic control algorithm, several features have been added as described below.

Note: If you have an IAC stepper motor, you cannot control this with your MicroSquirt® controller.

Algorithm (IdleCtl): If you have a:

Fast Idle Valve (FIdle):

For an on/off fast idle valve, set the algorithm to 'Solenoid'. You can also set your Fast Idle Threshold if you have installed a fast idle solenoid. Enter a coolant temperature to turn on the fast idle solenoid. A typical value is 145º Fahrenheit. The Fast Idle valve will be activated below this temperature (145ºF) and turned off above 145ºF. The Fast idle Threshold is independent of any warm-up enrichment. Fast idle valves generally have one or two wires.

PWM Warmup: This is for the Ford or Bosch pulse width modulated idle air valves. Ten temperature dependent levels of PWM are user specifiable if this option is selected (see 'Idle PWM Dutycycle' under 'Tables'). Modifications to the board are required, see this link for more details.

Leave the other values (below) alone, you can experiment with them when you get the engine running.

Start Value (IACStart): The PWM percent applied to the PWM IAC at power up.

Cranking Position (IACcrankpos): During cranking, extra air may be useful in the same way as extra fuel in cranking pulses. The table value for the starting temperature may be fine after the engine has started up, but during cranking more power may be needed, especially if the starting temperature is cold. To provide this, you can input a PWM percent that provides a larger than normal air opening during cranking. So, if in cranking mode and 'Cranking Position' < table value, then the IAC motor PWM% is set to 'Cranking Position', and when cranking is done, the motor PWM% starts tapering (over the 'crank to run taper time') up to the table value over a user input period, typically a few seconds. If this feature is not desired, Just set 'Cranking Position' to a value higher than any table value. Then the table value will always be used since it provides more opening.

Crank-to-Run Taper Time (IACcrankpos): This is the time over which the cranking position of the idle (PWM%) is moved to match the table value (see diagram below). Higher values give a higher idle for longer periods, which can improve starting performance.

Hysteresis (°) (IdleHyst): This input can be used to avoid continuous motor motion (and wear) for small coolant temperature changes. Changes to the motor are only made when new coolant temperature > coolant temperature on the last move, or, new coolant temperature < (coolant temperature on the last move - Hysteresis temperature). What this does is allow constant motor motion while the coolant temperature is rising, but when it peaks, there will be no further motion unless things cool back down - which is unlikely.

Time Based After Start (extended warm-up): You should NOT use the Time Based After Start (extended warmup) option unless you find you need it, and very few will. Disable it by setting the 'cold temperature to -40°F. Then this feature will not be used unless the coolant temperature at startup (ECU first powered on) is below -40°F. This feature is used toward the end of the warmup sequence when the coolant temperature is close to its final operating temperature. In this case, fast idle will normally come off, but SOME cars (very few) may need extended fast idle. An example is a car that uses heavy weight oil, which is nowhere near at operating temp when the coolant gets there, plus a hot cam with not enough idle torque to overcome the oil drag.

This feature is implemented by inputting a 'Cold Position' that is the step position at start of extended warmup, typically about 80% of the final, fully closed step position. The IAC behaves normally until the step position commanded from the table just exceeds this Cold position value (either PWM or stepper). From that point on, the steps are tapered in so as to reach the last step value in the table over the 'cold taper time' period. (see the diagram). This slows the reduction in idle air as the engine continues to warm up (increasing the idle speed for longer than the coolant temperature alone would do).

Cold Temperature (°) (IACcoldtmp): This defines the initial coolant temperature below which the afterstart taper will be extended, based on the Cold Position and Cold Taper Time. It should be set fairly cold, generally not more than 20° F.

Cold Position (steps) (IACcoldpos): The Idle PWM values at which time based afterstart tapering is initiated. Note that this value must be higher than the lowest value in your IAC PWM table, or you can get strange operating results.

Cold Taper Time (sec) (IACcoldxt): This is the number of seconds that your MicroSquirt® controller takes to move from the 'cold position' to the position indicated in the IAC step table for the current coolant temperature.

Before attempting to start your MicroSquirt® controller equipped engine, you will need to set a number of parameters that determine how your MicroSquirt® controller injects fuel. These include the injector open time, Req_Fuel, injector control criteria, EGO characteristics, etc. These constants are either calculated, or based on the configuration of your system. For the most part, these are very similar to those from MegaSquirt-II™.

Injector Opening Time (ms) (InjOpen) is the amount of time required for the injector to go from a fully closed state to a fully opened state when a 13.2 volt signal is applied. Since fuel injectors are electro-mechanical devices with mass, they have latency between the time a signal is applied and the time they are in steady-state spraying mode. Typically, this value is close to 1.0 milliseconds. Note that the closing time should be subtracted from this value, but it is generally very small and can be neglected.

Battery Voltage Correction (ms/V) (BatFac) is the number of milliseconds that your MicroSquirt® controller adds to each fuel injection pulse to compensate for the slower opening of the injectors with lower supply voltages. Generally 0.10 ms/V to 0.20 ms/V is about right. So, with a 0.20 Battery voltage correction factor and supply voltage of 14.5 Volts, a 1.0 millisecond 'opening time' is adjusted to 1.0 - (14.5-13.2)*0.20 = 1.0 - 0.26 = 0.7 milliseconds.

Conversely, If you had injector specs that stated the opening time was 0.7 milliseconds at 14.5 Volts, and your battery correction was 0.20, then you should enter 1.0 as the 'Injector Opening Time'.

PWM Time Threshold (ms) (InjPWMTim) does not apply to your MicroSquirt® controller.

Injector PWM Period (µsec) (InjPWMPd) does not apply to your MicroSquirt® controller.

High impedance injectors (> 10 Ohms) can run on 12 Volts without problems. Low-impedance injectors require some form of current limiting. For low-impedance injectors (less than 3 Ohms), must add resistors in series with the injectors. See the Injectors and Fuel Supply section of the your MicroSquirt® controller manual for more details.

Required Fuel – (ReqFuel) this is top field of the Constants window. It has a calculation dialog to help you find an appropriate value. It should contain the injector pulse width, in milliseconds, required to supply the fuel for a single injection event at stoichiometric combustion and 100% volumetric efficiency.

In order to come up with this value, TunerStudioMS provides a calculator that will suffice for 99% of applications (those for which it will not work generally require changes to your MicroSquirt® controller code itself, and that is beyond the scope of this manual). To use the calculator, click on the Required Fuel button, and fill in the fields (Engine Displacement, Number of cylinders, Injector flow, and Air:Fuel ratio, then click 'Okay').

For a 4-stroke, a complete stroke cycle is 720 degrees of crankshaft rotation (i.e. two revolutions); for a 2-stroke, it is 360 degrees (this is also factored in the REQ_FUEL value down loaded to MegaSquirt).

In the tuning software, the upper REQ_FUEL box is the amount per cylinder, as noted above. The lower REQ_FUEL box is the value down loaded to your MicroSquirt® controller. It is the REQ_FUEL number on top, but scaled by your selected injection mode (number of squirts and alternate/simultaneous).

For example, if you inject simultaneous and one injection, and have the same number of injectors as cylinders [i.e. port injection], then REQ_FUEL on the bottom is the same as REQ_FUEL on top. Same with alternate and two squirts. If you put in simultaneous and two squirts, then REQ_FUEL is divided in half - because you squirt twice, you need to inject 1/2 the fuel on each shot.

Note: if you choose alternating for port injection, make sure your number of squirts is an even number (2,4,...) and evenly divisible into the number of cylinders. For example, with an eight cylinder engine, you could use alternating and 2, 4, or 8 squirts/cycle. With a six cylinder, if you choose alternating, you MUST use 2 or 6 squirts/cycle. Also, the only possible combinations for an odd-cylinder count engine are either 1 squirt/simultaneous or N squirt/simultaneous combination, where N is the number of cylinders."

Permissable Combinations:

Number of Cylinders

1

2

3

4

5

6

8

10

12

1

OK

simultaneous only

simultaneous only

simultaneous only

simultaneous only

simultaneous only

simultaneous only

simultaneous only

simultaneous only

2

no

OK

no

OK

no

OK

OK

OK

OK

3

no

no

simultaneous only

no

no

simultaneous only

no

no

simultaneous only

4

no

no

no

OK

no

no

OK

no

OK

5

no

no

no

no

simultaneous only

no

no

simultaneous only

no

Number

6

no

no

no

no

no

OK

no

no

OK

of

7

no

no

no

no

no

no

no

no

no

squirts

8

no

no

no

no

no

no

OK

no

no

9

no

no

no

no

no

no

no

no

no

10

no

no

no

no

no

no

no

OK

no

11

no

no

no

no

no

no

no

no

no

12

no

no

no

no

no

no

no

no

OK

"OK" means the combination will work with either simultaneous or alternating. "no" means it will not work with either, i.e., not at all.

Control Algorithm (FuelAlpha) lets you choose between Speed Density and Alpha-N. In all cases, you should choose speed density unless you have a good reason to do otherwise, and understand how this will change your tuning efforts. All tuning advice in this manual is based on the speed-density algorithm. Alpha-N uses the throttle position (alpha) and RPM (N) to calculate the amount of fuel to inject as opposed to using the manifold absolute pressure (MAP) and RPM to calculate the amount of fuel to inject. Alpha-N is useful for long duration cams where the resolution of manifold air pressure (map) would be small. It is also useful to get smoother idle on engines that have erratic map values. your MicroSquirt® controller be converted from its default speed-density calculations to Alpha-N which uses RPM, temperature and TPS only. You must have version 2.0 (or higher) of the embedded software installed. Start up the tuning software, go to the Constants dialog and change speed density to Alpha-N. Re-map your VE table. You will no longer use the MAP sensor for estimating the load on the engine, the throttle position and rpm are used instead. This can help with cams with long duration and/or a lot of overlap, as they have low and variable vacuum at idle, making tuning very difficult.

Injections per Engine Cycle (aka. "squirts") is set the number of squirts you want per engine cycle. You want this to be set so that your idle pulse width is no less than 2.0 ms, if possible, and your Req_Fuel is less than 15-18 milliseconds, but more than 6 milliseconds. These values allow proper tuning of the idle mixture while maintaining the ability to apply enrichments (acceleration, warm-up, etc.) under full throttle. This is the total injector events that you wish to occur for every engine cycle (360 degrees for two stroke engines and 720° for four strokes).

Note that this works with the 'injector staging' parameter (below) to determine the base fuel pulse width, so be sure to read that section as well.

There is some benefit to choosing 2 squirts/alternating for port injection, since only half of the injectors fire at once, the pressure drop in the fuel rails is reduced and the fuelling is more consistent.

With throttle body injection, the number of injection/cycle you can will depend on your number of cylinders, plenum size, Req_Fuel, etc. You have to experiment to see what works best for your combination. Generally, you will need at least as ½ as many squirts per cycle as you have cylinders, though you can run this alternating.

Injector Staging (Alternate) can be either simultaneous (both injector drivers - i.e., all the injectors - fire at once), or alternating (one injector driver fires on one injection event, the other fires on the next, and so on; 'ping-ponging' back and forth). If you choose alternating for port injection, make sure your number of squirts is an even number (2,4,...) and evenly divisible into the number of cylinders. For example, with an eight cylinder engine, you could use alternating and 2, 4, or 8 squirts/cycle. With a six cylinder, if you choose alternating, you MUST use 2 or 6 squirts/cycle. Also, the only possible combinations for an odd-cylinder count engine are either 1 squirt/simultaneous or N squirt/simultaneous combination, where N is the number of cylinders."

Note that with port injection and alternating injection, you must choose at at least 2 squirts per cycle, otherwise every other cycle for each cylinder will get NO fuel! The engine will run very badly. (One squirt is fine with simultaneous.)

Engine Stroke (EngStroke) values for engine stroke type are two-stroke or four-stroke. your MicroSquirt® controller uses engine stroke to determine how many degrees are in an engine cycle.

Number of Cylinders is the count of the cylinders on your engine. If you are unsure how many cylinders your engine has, you should not be installing your MicroSquirt® controller on it. This value is actually the number if ignition events per cycle sent to the ignition input on the controller.

Injector Port Type (InjType) is used to select the type of injectors that you are using, either throttle body (if the injectors spray above the throttle plates) or multi-port (if the injectors spray into the intake ports).

Number of Injectors (NoInj) is the total number of injectors your MicroSquirt® controller is controlling, whether port or throttle body injection.

You should check that TunerStudioMS reads approximately the correct barometric pressure when no vacuum is applied (i.e. the engine isn't running). Below is a chart of the 'normal' barometric pressures for various geographic elevations. your MicroSquirt® controller should generally be within 2 or 3 kPa of the value below for your elevation. If it is significantly different, check under 'Tools/Sensor Calibration' and verify that you have the correct values for your MAP sensor.

Barometric Pressure vs. Elevation

Elevation Above Sea Level

Atmospheric Pressure

Feet

Meters

kiloPascals(kPa)

example

0

0

101.33

New York, Vancouver, Washington

500

153

99.49

Dallas (435 feet), Detroit (585 feet)

1000

305

97.63

Geneva (1230 feet), Kelowna (1129 feet)

1500

458

95.91

Helena (1404 feet), Wichita (1290 feet),

2000

610

94.19

Canberra (1886 feet), Las Vegas (2030 feet), Regina (1893 feet)

2500

763

92.46

3000

915

90.81

Red Deer (2968 feet)

3500

1068

89.15

Brasilia (3480 feet), Calgary (3750 feet)

4000

1220

87.49

4500

1373

85.91

Banff (4500 feet)

5000

1526

84.33

Albuquerque (4945 feet), Denver (5280 feet)

6000

1831

81.22

Colorado Springs (5890 feet)

7000

2136

78.19

Mexico City (~7200 feet)

8000

2441

75.22

9000

2746

72.40

10,000

3050

69.64

15,000

4577

57.16

La Paz (13,169 feet), Mauna Kea (~14,000 feet)

Note that weather stations usually report the barometric pressure 'corrected' to read as if 101.3 kPa was the 'normal' for your elevation. Do not expect these reports to correspond to what you get on your MicroSquirt® controller unless you are at sea level.

Your MicroSquirt® controller has the provisions for a second independent 'realtime' baro sensor. This will update your fueling continuously, which may be helpful if you are climbing the Rocky mountains or running Pike's Pike.

To add an independent baro sensor to your your MicroSquirt® controller, use an MPX4250AP (the standard MS sensor). Run leads from:

sensor pin #1 (signal) - Ampseal pin #29,

sensor pin #2 to ground - Ampseal pin #20, and

sensor pin #3 to 5 Volts - Ampseal pin #28.

You can use other 0-5 volt pressure sensors, but you will have to calibrate it using the 'Tools/Sensor Calibration' dialog in TunerStudioMS.

Engine Type (OddFire1, OddFire2) has the options of odd fire or even fire. Odd-fire or even fire does not refer to the firing order, but rather the interval between successive firings.

So if you have a 4 cylinder, and a spark every 180 degrees, you have an even fire. Almost all 4 cylinder engines are even fire.

However some 90 degree V6s, some V4s, and most V-Twins (usually motorcycle engines), as well as a few others, have 'odd-fire' arrangements.

For example, from 1978 to 1984, the GM V6 (200 and 229 cid) had a semi-even fire sequence, with firing intervals of 132°/108°. It is "semi" because the rod journals are offset, but not quite enough to make for even firing intervals. In your MicroSquirt® controller terms, this is an 'odd-fire' engine, because the interval between firing can be either 132° OR 108° degrees.

On the 'EGO Control' page:

EGO Sensor Type (EgoOption):

Disabled If you don't have an oxygen sensor installed, choose 'Disabled' under EGO Sensor Type in TunerStudioMS, and your MicroSquirt® controller does not use the numbers in the AFR table to adjust the VE table numbers (as shown above) when calculating the pulse widths. There is no feedback.

Narrow Band O2 Sensor If you have enabled a narrow band oxygen sensor, choose 'Narrow Band' under EGO Sensor Type in TunerStudioMS, and your MicroSquirt® controller will try to adjust the amount if fuel injected, up to the limits you specify, to give the oxygen sensor voltage specified in the tuning software. The AFR table is not used, instead a single oxygen sensor voltage target is used.

IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is re-programmed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.

Dual Narrow Band: The dual lambda sensor feature has been in the MS-II code since V1.0. You connect the second sensor to the ADC6 input (spareADC) on Ampseal pin #29 with appropriate circuitry and it adjusts the PW2 output independently of PW1. There is only one calibration because it is assumed you are going to use the same type of sensor on each side. If there is a small difference, you can compensate for it in the separate AFR target tables.

Wide Band If you have a narrow band O2 sensor OR a wide band oxygen sensor & controller, choose the appropriate setting under Settings/EGO Control in TunerStudioMS, and be SURE to go to Tools/Calibrate AFR Table and select your controller type. Make sure to have the your MicroSquirt® controller connected and powered up while you do this. Then your MicroSquirt® controller will adjust the amount of fuel injected based on the AFR table until the sensor reports a voltage corresponding to the air/fuel ratio in the appropriate cell of the AFR table (for wide band) or switch point (for narrow band).

IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is re-programmed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.

Dual Wide Band:

Ignition Events per Step: (EgoCountCmp) This is the number of 'sparks' the engine sees before adjusting the fuel amount based on the EGO sensor feedback. Large numbers make the EGO feedback respond more slowly, but also tend to make it more stable.

Controller Step Size (%): (EgoStep) This is the amount the narrow band EGO will be adjusted after the number of ignition events specified above. Smaller numbers make the response more stable, but slower.

Controller Authority ± (%): (EgoLimit) This is the maximum the EGO feedback is allowed to adjust the fuel from the VE table, regardless of the state of the O2 sensor feedback. Large numbers (50% to 80%) are better when the set-up is rough, smaller numbers (5% to 15%) are better when the VE table is 'dialled in'.

Active Above Coolant Temp (°): (EgoTemp) This is the lowest coolant temperature at which EGO feedback is allowed to operate. It is necessary to prevent the EGO feedback from working against the warm-up enrichments when the engine needs to be particularly rich while cold.

Active Above RPM: (RPMOXLimit) This is the lowest engine speed at which EGO feedback is allowed to operate. It is necessary for those engines that need to be rich while idling.

Active Below TPS (V): (TPSOXLimit) This prevents EGO feedback with either a narrow-band or wide band sensor from operating at wide-open throttle (WOT), because narrow band sensors are not effective at measuring the rich mixtures required.

Active Below MAP (kPa): (MAPOXLimit) This prevents EGO feedback with either a narrow-band or wide band sensor from operating at high loads, because narrow band sensors are not effective at measuring the rich mixtures required.

Note that after you select your EGO sensor type, you should go to the 'Tools/Calibrate AFR Table' dialog and select the sensor output curve.

For example, if you have a narrow band sensor, select that; or if you have a DIY-WB controller select that, etc. Then click on the 'OK' button and a file will be create and downloaded to your MicroSquirt® controller that indicates the corresponding air/fuel ratio for various sensor/controller output voltages.

You can also create your own custom table by entering two point on the output curve.

There is more information on how to use these settings while tuning in the Tuning section.

IMPORTANT NOTE: Do NOT burn tables ('Calibrate AFR Table' or 'Calibrate Thermistor Tables') on a running engine. Even idle is NOT allowed, because these tables ONLY exist in flash, so once a table is erased, there is nothing but garbage in there until it is re-programmed, one word at a time. Until that reprogramming is complete, operating the engine is unsafe.

Before starting your engine, you need to populate three types of tables: the VE table(s), the AFR table(s), and the ignition advance table.

VE Table(s) (ve_table): Unless you already have a very good idea what your VE table should look like, you might want to generate a table using the instructions here: Creating an Initial VE Table for Tuning. You will have to do this twice if you have selected the dual table option above. If your engine is outside the parameters of the VE table generator, you will likely have to do major tuning of any VE table to optimize it. In that case, you can start with the default table, or anything else that makes sense to you.

AFR Table(s) (afr_table): If you have a wide band sensor, fill in the air/fuel ratio table. Generally, you want it to be lean in the areas where it is lightly loaded and you want best economy. You may be able to run as lean as 17:1 in these areas. At WOT, conventional wisdom is that you want 13.0:1 at peak torque, and 12.5:1 at peak horsepower. Then blend the WOT and economy areas so that there is a smooth transition. You will have to do this twice if you have selected the dual table option above. We have an automated AFR table generator here: Creating an Initial AFR Table for Tuning

Note that you can export or import .TABLE files into any of these tables. Use the 'Table/XXX Table/Files/VE Table Import' to import them, 'Table/XXX Table/Files/VE Table Export' to export them. These are all saved in the .TABLE format, so be sure to give your saved files descriptive names.

If your module isn't on the 'officially supported' list yet, you'll need to understand the relationship between the trigger offset, the input capture (falling or rising edge), and the spark out (going high or going low). There are some tip on setting these parameters in the tuning section of the MS-II manual.

In the 'Settings/Ignition Options' dialog you can select the:

Trigger Offset (deg) (adv_offset in the code) is the advance before (or after) top dead center (BTDC) that the engine gets in it's signal from the engine's variable reluctor or Hall sensor. In many cases, this will be used as the 'base timing' for cranking as well as if the module loses it's connection the the ECU.

For example, with the 7/8-pin HEI or Bosch 0 227 100 124 modules, the 'trigger offset' in TunerStudioMS is:

HEI: the number of degrees before TDC at which the VR sensor output goes from negative to positive, the HEI module converts this to a falling edge, and and the falling edge of the square wave is sent from the 7/8-pin HEI module to your MicroSquirt® controller (which is then inverted again by the optoisolator or VR circuit on a V3 main board (not MicroSquirt) to become a rising edge at the processor).

Bosch 124: the number of degrees before TDC at which the Hall, optical, or points output goes from ground to positive, and the rising edge of the square wave is sent from the 7/8-pin module to MegaSquirt-II.

This tells your MicroSquirt® controller where the crankshaft is positioned so that timing advance can be calculated appropriately. (Note that since the adaptive VR chip inverts the trigger signal, you specify 'rising edge' for the 'Input Capture' in TunerStudioMS, which refers to the signal at the processor.) Positive trigger offsets are used to specify the number of degrees before top dead center (BTDC), negative numbers are used for triggers that occur after top dead center (ATDC).

Skip Pulses (no_skip_pulses) is the number of ignition pulses at start-up that your MicroSquirt® controller uses to calculate the rpm before sending calculated advance signals.

Next Pulse Tolerance (%) (PulseTol) is the tolerance during which the next pulse is not allowed to count as a 'true' pulse, and is counted as a false trigger. So if the time between the last two events is X, then if then next pulse occurs within X-PulseTol, it is rejected as a false trigger. If a pulse is NOT received after X+PulseTol, it is assumed to have been missed. This only occurs after the first few pulses (as specified in the Skip Pulses).

Ignition Input Capture (ICIgnOption Bits 0-3) is the ignition input signal event that should signal the base timing (Advance Offset) has been achieved.

It is important to note that this is the input signal as seen by the processor. In your MicroSquirt® controller, the input signal is inverted internally by the MAX9926 chip this signal, so you need to specify the opposite of what the sensor/module puts out.

Cranking Trigger is used to determine when to fire the spark plugs between 50 and 300 rpm (by default) The cranking trigger can be calculated, trigger return, or trigger rise.:

Calculated: this means that your MicroSquirt® controller fires the spark the same way it does when it is above the cranking rpm (CRANK_RPM, default is 300 rpm). That is, it makes a prediction of when the next tach pulse will arrive, based on the previous pulse times, and sets timing based on this and the values in the spark table. If the starting tach pulses are erratic or noisy, this can make the spark timing erratic, resulting in poor cranking behavior. However, some ignition setups require the use of the 'calculated' parameter. For the most part these are with multi-tooth wheels and the timing error is limited to the gap between teeth at an absolute maximum (usually much less), and thus erratic cranking timing isn't a problem.

Trigger Return: The crankshaft speed varies quite a bit at cranking speeds. It is affected by the compression and power strokes more than it would be during normal running. This makes it difficult to predict when the next TDC will occur from the last TDC event. As a result, some OEMs have devised a 'trigger return' wheel. This is a wheel with broad teeth, such that during cranking the spark is fired on one edge of the tooth with no computer advance, only the advance set by the width of the tooth edge; when rpm goes above cranking, it switches to firing on the opposite edge of the tooth with calculated advance. This edge typically has a smaller built in advance, possibly 0°. This latter advance should be what is entered in the trigger offset. This option should NOT be selected unless you have a trigger wheel made for this purpose and understand how it is set up.

Trigger Rise: is the best all around selection for most installations. It fires the spark plugs when the 'normal' trigger is seen (i.e., the signal that comes at the trigger offset). Use this if it you are able to set up your tach input to your MicroSquirt® controller so that it comes in at a good timing advance for starting, generally something like 5-12° BTDC. Then your MicroSquirt® controller will fire the spark at the exact instant the trigger signal comes in and you will have consistent advance during cranking (at the trigger offset), no matter how uneven the engine speed.

Coil Charging Scheme (ICIgnOption Bits 4-7) is used to specify whether the spark occurs on the falling edge of the output signal ('Standard Coil Charge' such as HEI) or the spark timing is generated by the ignition module (EDIS, etc.) In a standard system, the coil 'sparks' when the current to the coil is interrupted. This is the 'Standard Coil Charging' option and is used with the GM 7-pin HEI module, for example. With the EDIS system, and others, though, it is the length of the pulse that determines the timing, not the actual timing of the pulse, so you would select the EDIS option.

Spark Output (spkout_hi_lo) 0 equals spark when low (ground). V3 MicroSquirt®'s do not have a transistor for ignition control on the daughter card. As a result, if you are using a V3 MicroSquirt-II®, the Coil Charging Scheme may need to be reversed compared to some earlier units.

You should set the spark output such that no current flows through the coil when the rpm=0. To do this, replace the coil with an LED tester (see step #6).

Setting the spark output one way should result in the LED being off with no rpm - that's the way you want it. If It is on, the coil is flowing current all the time, and it will overheat, and your ignition module may overheat too.

Maximum Spark Duration (ms) (max_spk_dur) is the amount of time your MicroSquirt® controller tries to wait before starting another charging cycle. MS-II tries to fit the dwell time + max. spark duration into the time between sparks. If it can fit them, then the full dwell time is used. If the time is too short (because the rpm is high) to fit both the dwell and the maximum spark duration, then both are shortened proportionally.

If the max spark duration is too long, however, then the actual dwell value gets shortened at a lower rpm, limiting the spark energy at higher rpms. Typical values for maximum spark duration are between 1.5 and 2.0 milliseconds.

Dwell is the length of time the coil charges to make each spark. It has to be long enough to make a decent spark, but too long heats the coil unnecessarily. It is in milliseconds, since the time between spark is typically a few dozen or less milliseconds. For example, for a V8 at 600 rpm, the time between sparks is 25 milliseconds. At 6000 rpm the time is just 2.5 milliseconds.

Maximum Dwell Duration (ms) (max_coil_dur) is the longest period the coil is allowed to charge. The coil charges when a current creates a magnetic filed in the coil (when the current stops and the field collapses, we get our spark). Our goal is to maximize the magnetic field energy, while minimizing the heat build-up. If you charge for too long you can burn out your coil, too short and the spark may be weak. Normally this value is between 2.0 and 4.0 milliseconds. For the GM HEI 'in-cap' coil, a value of 3.5 milliseconds is typical.

Note that you can not set dwell times with EDIS, the EDIS module does all the dwell control internally.

Acceleration Compensation (ms) is the amount of time added to the duration when the accel enrichment is activated.

Battery Duration Compensation (ms & V) (bat_dur_comp) is the time added to the dwell to compensate for low battery voltage. You can select both the trigger bin levels (V) as well as the duration added to the dwell (ms).

If you have a MAP sensor that does not match the default table in your MicroSquirt® controller (i.e., not the default MPX4250AP), then you need to do a calibration under 'Tools/Sensor Calibration'. You need to set both the MAP and barometer sensor to match the sensor(s) you are using. Press F1 while in the sensor calibration dialog to see values for some common sensors. See the MAP sensor calibration section of the manual for more information.

Therer are many more configuration parameters for your MicroSquirt® controller, you can find them all here: www.megamanual.com/mt37.htm