Jump to content

Recommended Posts

Part 1 Basic Speed Density tuning and LOAD calculation

In this guide we will explain the basics of Speed Density (SD) tuning and then go further into detail. The basic level (Slope tuning) is probably enough for most tuners to get their vehicles set up to a high specification.

In general if you have not really modified the vehicle heavily your speed density tables should be well set up by Ford and you may only be seeing areas outside the normal because of injector scaling being out. You should start with your injectors dialed in to a high level and they should be dialed in on a stock car where possible. Starting with factory injectors to dial the car in with the new mods will save a lot of time resolving injector scaling issues. A lot of high performance vehicles use injectors with good data supplied and tuning them often requires no changes to the Speed Density tables.  Enough of a rant, lets get into it.

Speed Density Calculations

The sample vehicle is a factory turbocharged vehicle,  therefore we will be using the Open IMRC SD tables. 

The SD systems calculates the amount of air mass entering the engine based on different sensor inputs. In a nutshell the calculation is:

        Air Mass = VE_CORRECTIONS * (MAP - MAP_0) / SLOPE


  1. Air Mass is the mass of air injected into a single cylinder (AirCharge in Ford language)
  2. MAP is the Manifold Absolute Pressure measured from the Temperature/MAP Sensor (TMAP)
  3. MAP_0 is the calculated offset for the MAP sensor 
  4. SLOPE is the calculated Slope
  5. VE_CORRECTIONS, Volumetric Efficiency corrections for the SD tables based on, but not limited to,  Coolant and Intake temperatures

The Calculated SLOPE and MAP_0 will be expanded further as we progress.

Part 1 Basic Level Tuning or Basic level SLOPE tuning 

In order to make the VE_CORRECTIONS = 1.0 we will assume Ford Standard temperatures and pressures (FSTP): Barometric pressure of 29.921 inHg, intake temperature of 100F and Coolant temperature of 200F, yes all imperial measures! We will start with just a couple of the SD tables and this will suffice for quite a high level of tuning. In fact most tuners will only tune in the slope table as this will, generally, provide enough capability and allow tuning in a time allocated to tuning a vehicle. We will also be using the BF for our example (catch code 77DA) as it has the most modifiers to the SD tables (complexity/flexibility). Lets start with the two tables we will be using to tune SD:

  1. auF0056: This is the theoretical MAP value when AirCharge is zero.
  2. auF0061:  This is the Slope of MAP per AirCharge value used in the speed density calculation

Both of these tables take as their inputs RPM (x) and Intake Cam Angle (y). Immediately you will see you should log Intake Cam Angle/RPM/MAP to do analysis. Here are the two tables fro a stock calibration:


Note the highlighted cells, we will be demonstrating the calculation for the Intake Cam angle of -10 degrees at 3000 RPM and a MAP reading of 50inHg (roughly 10psi of boost pressure). The calculation of the Air Mass will be:

    Air Mass = (50 - 2.7) / 19200 ~= 0.00246354  lb of air

This will be of more use later but lets say at this RPM point on our dyno log we were commanding a lambda of 0.8 off the base fuel table and we actually read from the dyno wideband 0.82. In order to increase the calculated Air Mass in order to get extra fuel in we will need to reduce the Slope table as it is a divisor.  You would do this by multiplying 19200 by desired lambda (0.8) / Actual (0.82) = 19200 * 0.8/0.82  ~=18732.0. You would repeat this process for each point in the rev range where the dyno wideband shows a difference between commanded lambda and actual lambda.

If your Dyno does not log Cam Angle then all is not lost. You can use the following table to determine the theoretical cam angle for a given load:


 The highlighted cells are for when the car is on full load. So lets see which cells you would be modifying on a dyno run for the slope corrections. Here are this cells you would be modifying assuming you started your run from around 1600RPM:


If you do have intake cam angle then pick the cells either side of the logged point. In the above example if the intake cam angle was logged as being 12 degrees at 5250 RPM then you would only need to alter the 10 and 20 degree cam angle points.

In order to speed up the process you can delay tuning the SD tables and tune the base fuel table like a scratch pad. Here is the Base Fuel Table:


So if our dyno runs shows variations in the commanded lambda to desired lambda or the following:


then you can easily alter the SD cells in the SD tables for the RPM points 3000 -> 4000 to get the desired result. NOTE if you see something like this:


Where B is the Wideband reading and A is the desired lambda from the Base Fuel table.

This is a good indication your injector data is not correct and you could look at dividing your high slope by about 1.07. 


LOAD is calculated from the AirMass. The Basic formula for calculating LOAD is:

     LOAD = Air Mass / auF0008 (Airmass of a cylinder as sea level)


So the LOAD from the above example with AirMass of  0.00246354 is 00246354/0.001723 or approximately 1.43

What happens to LOAD when I change the SD tables to get the commanded lambda?

Say for example we had to alter the above example and increase fuel in this region because we altered cam shafts. So instead of 19200 we ended up with a quite big change like 16600 to get the commanded lambda. The new load would be:

     Air Mass = (50 - 2.7) / 16600 ~= 0.0028494  lb of air

And the new LOAD would be

    0.0028494 / 0.001723 ~= 1.65

You will need to take this into consideration when tuning the LOAD based tables such as spark. You can simplify this by using the new load will be 19200/16600 * old load. That is 19200/16600 * 1.43 = 1.65. This is assuming you have not changed the MAP at Zero value.

It will quickly become apparent that if you are tuning the SD tables to resolve injector scaling issues you will end up with a very different load than what you expect and your timing could be substantially different to what you are expecting,.

edit: The old summary thread can be found here for some more information including the full mathematical equation behind the model.



  • Like 3

Share this post

Link to post
Share on other sites

Part 2 Tuning Correction Speed Density tuning

The Tuning Correction (TC) is a multiplier to the SLOPE calculation outlined in Part 1. It is applied to the SLOPE calculation after all other calculations on the SLOPE are performed. We will get to the other SLOPE modifiers in Part 3.

Tuning Correction needs some explanation as the table uses RPM for the x axis and Percentage Inferred LOAD (%Load) for the Y Axis. Percentage Inferred load is  not calculate from LOAD at all but is really table that allows the throttle position to be a modifier to the load calculation. Basically %Load is calculated in the following manner:

  1. Air Load is calculated for Wide Open Throttle (WOT) = AIR_LOAD_WOT
  2. Air load is calculated for the current throttle position (TP_REL) = AIR_LOAD_TP
  3. Exhaust Gas Recirculation is subtracted from AIR_LOAD_TP  (ignore for the time being) 
  4. AIR_LOAD_TP is then "clipped" between the 0.0 and the AIR_LOAD_WT. This means that if AIR_LOAD is greater than  AIR_LOAD_WOT it will use AIR_LOAD_WOT or if it is less than 0.0 it will set AID_LOAD_TP to 0.0, otherwise it will use AIR_LOAD_TP.
  6. The result of Equation 4 means means the %load is capped at 1.0

Inferred is another was of saying that the PCM does not have the actual sensors to calculate the real value so it uses other sensors to come up with an approximation of what the value would be. In this case we are referring to LOAD based on throttle position. Here is how the two AIR_LOAD_WOT and AIR_LOAD_TP are calculated:

AIR_LOAD_WOT= auF0046(RPM,1023.0) -  ( auF1564(RPM,CAM_ANGLE) * auF11002(RPM,TP_REL) )


  1. auF0046  This table is used to determine the load when the MAF is failed (or no MAF) and the IMRC is Open.
  2. auF1564: "Compensation multiplier table for VCT actuator non-linearities"
  3. auf11002: "Aircharge subtractor at sea level for variable cam timing"


For 77DA the tables other than auF0046 will work out to be 0.1 or less (see later images of them). Basically we should work with auF0046 to calculate %Load and leave the correction as an exercise for those more curious.

At WOT the above calculation will yield a %Load of 1.0. Now assuming we cruising along at 2000 RPM with a throttle position with an A/D count of 130 ( low throttle) then using



We would get the LOAD_WOT = 1.18 and LOAD_TP_REL would be 0.68.

Therefore %Load = 0.68/1.18 = 0.57

This is probably not what you would be expecting in your normal load calculation. Hopefully this helps you determine the cells you would need to alter for the tuning correction table on part throttle.


Here are the other tables if you would like to work out the remainder of the calculation:








  • Like 3

Share this post

Link to post
Share on other sites

Part 3 MAP_0 Calculations

If we exclude Cam Overlap (Part 4) MAP_0 calculation is quite simple:

    MAP_0 = MAP Intercept * Barometric Correction


  1. MAP Intercept is auF0056(RPM,CAM_ANGLE) * 
  2. Barometric Correction is auF0058





As can be seen by these tables the barometric pressure around see level will have little impact on the 2.7 value from the MAP Intercept At Zero AirCharge


  • Like 2

Share this post

Link to post
Share on other sites

Part 4 CAM Overlap Corrections

Almost done, these calculations are for the more for completeness than necessary for your tuning. If you change cams in the car then you will have to look start tuning in these tables as the above ones may not get the result required.

Both MAP_0 and SLOPE are modified by the Overlap Angle (CAM_OVERLAP). If your dyno does not log Cam Overlap angle we will use the following VCT table to "guess" the angle:


For our example we will assume at least a load of 1 and hence our overlap will be 20 degrees

We will be using the example from Part 1 for the calculation. Catch code is 77DA, use the Calibration Utility to download the Stock file.

SLOPE Overlap Corrections

  1. Lookup on the table auF0061 (in the example  the value is 19200) = SLOPE_VALUE = [19200]
  2. Lookup table auF0064(RPM,CAM_OVERLAP) the adder value SLOPE_ADDER = [0.0 ]
  3. Lookup table auF0063(RPM,CAM_OVERLAP) for the Multiplier = SLOPE_MULT = [ 0.83]
  4. SLOPE =  SLOPE_VALUE + SLOPE_ADDER) * SLOPE_MULT = (19200 + 0) * -.83 = 15930
  5. Lookup auF16632(RPM,%Load = TC = [1.0] from Part 2  
  6. SLOPE = SLOPE * TC = 15930

MAP_O Overlap Corrections

  1. Lookup auF0056(RPM,CAM_ANGLE) to get the MAP_ZERO value as per example 1: MAP_ZERO = [2.7]
  2. Lookup auF0066(RPM,CAM_OVERLAP) to get the adder term: MAP_ZERO_ADDER = [0.0]
  3. Lookup auF0065(RPM,CAM_OVERLAP) to get the multiplier term: MAP_ZERO_MULT = [1.0]
  4. Lookup auF0058(BAROMETRIC PRESSURE) to get the correction: MAP_ZERO_BARO_CORRECTION = [1.0 @ FSTP]
  5. MAP_0 = [ (MAP_ZERO + MAP_ZERO_ADDER) * MAP_ZERO_MULT] * MAP_ZERO_BARO_CORRECTION] = [ (2.7 + 0.0) * 1.0] * 1.0

So for the Turbo the Ford Calibrators did not do much with the MAP_0 overlap corrections but if you have a look at the SLOPE Correction they have applied a value which would indicate an approximate increase of 20% fuel (1/0.83) which implies a 20% improvement for Air Mass using VCT.

  • Like 2

Share this post

Link to post
Share on other sites

In the slope of map vs surcharge table what are you doing with 250rpm column? Just curious that's all.


Share this post

Link to post
Share on other sites
20 minutes ago, scotty said:

In the slope of map vs surcharge table what are you doing with 250rpm column? Just curious that's all.


Can you give some more information? What specifically do you mean?

Share this post

Link to post
Share on other sites

Oops Sorry Roland I was fine tuning the speed density maps and of course I wondering if you leave those figures as is or match the next column cos the car won't idle at 250rpm lol

Share this post

Link to post
Share on other sites
1 minute ago, scotty said:

Oops Sorry Roland I was fine tuning the speed density maps and of course I wondering if you leave those figures as is or match the next column cos the car won't idle at 250rpm lol

It is just for cranking the engine. So probably no need to ever change them.

Share this post

Link to post
Share on other sites

Hi, just asking if it matters, i see the example car is turbo, are there tables for an n/a engine?



Share this post

Link to post
Share on other sites
6 hours ago, [email protected] said:

Yes you need to use the IMRC tables as well depending on whether the IMRC runner is open or closed. Turbo has the IMRC removed so it is a bit simpler.

Ok, thanks for clearing that up, I thought it was the other way round


Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...