Ed Hohenberg
December 1, 2006
Contributers: Ed Hohenberg

Welcome back for our second look inside the mysterious black box that we call the Ford EEC system. Last month we covered the basics of EFI, with an emphasis on the Ford systems. This month we'll delve into the specifics of the Ford EEC.

But before we start changing around ones and zeros in the programming, we need to cover some of the hardware upgrades and the theories needed/required for performance applications. These can include properly sizing injectors, MAF sensors and fuel pumps, big cams, big-port heads/intakes, superchargers, low restriction cold-air intakes, free-flowing exhaust, and more. These are all common mods when seeking additional horsepower.

What they all have in common is the ability to stuff more air into the engine. The fuel side is certainly less glamorous than adding a supercharger, for example, but you can't ignore the fuel side if you want safe, reliable power gains. With more air, more fuel is needed. It's that simple.

If you start hot rodding your EFI engine for more power, you better have a fuel pump that keeps up. This innocent-looking pump is good for 255 lph.

To understand the fuel requirements, you need to first understand Brake Specific Fuel Consumption (BSFC). BSFC is a measure of your engine's efficiency, and it's simply the ratio of fuel flow (in lb/hr) divided by the brake horsepower output. Really efficient naturally aspirated gasoline engines run in the low 0.4 lb/hr-hp range, while richer-running supercharged engines can be upwards of 0.6 lb/hr-hp.

To size your fuel system, start with a realistic estimate of your BSFC (higher numbers are safer to go with if you're not sure), and your estimated horsepower output (again, try to be realistic here). Let's say we're expecting 500 flywheel horsepower, and we'll be running a supercharger. We're expecting a BSFC of 0.6. To find the fuel-flow requirements, multiply the horsepower by the BSFC to get 500 x 0.6 = 300 lb/hr. To convert to gallons/hr, divide by 6.2 to get 48 gal/hr. To get liters/hr multiply by 4.78 to get 183 L/hr.

Now this doesn't seem like much, but it's the minimum fuel flow you need to see at the fuel rails to support 500 hp at maximum fuel pressure. Fuel flow drops off dramatically when you crank up the pressure the pump has to push against (keep this in mind if you're running boost). When looking at fuel-pump flow rating, check carefully how much it actually flows at the fuel pressure you need. Also, keep in mind it's tougher for the pump to push the fuel forward from the tank to the engine under acceleration, so you always want to size your pump a bit bigger. In the above example, we'd go with a 255 L/hr unit and we should be good.

If you start hot rodding your EFI engine for more power, you better have a fuel pump that keeps up. This innocent-looking pump is good for 255 lph.

Regardless of how much math you do ahead of time, it's always good to either log fuel pressure during dyno runs (newer EEC V), or install a fuel pressure gauge in the car (older EEC IV). If your fuel pressure starts dropping as rpm/hp increases, it's telling you your pump is undersized, or you have some other restriction in your fuel system. Fix it before it costs you an expensive engine.

For injector sizing, we can use the same math as above to get the fuel flow rate in lb/hr. In our previous 500hp example, we calculated 300 lb/hr. If we have eight injectors, then each needs to flow 300/8 = 37.5 lb/hr. Again, this is the absolute minimum injector size to flow the required fuel at 100 percent duty cycle (DC). We want a bit of a safety factor, and we'd rather not have to run our injectors at anything more than say 85 percent DC. So, taking 37.5/.85 = 44 lb/hr, we could use a 42-lb/hr injector here, but we'd end up pushing it to an 89 percent DC at peak horsepower.

Ford EEC one-dimensional parameters are typically referred to as "scalars." These are things like engine cid, idle speeds, injector sizes, rev limits, and so on; a small sampling shown here.

Another solution to run the 42-lb/hr injectors at no more than 85 percent DC would be to run them at a slightly higher fuel-pressure drop. Since our calculated injector size was 44 lb/hr (at 85 percent DC), we need to increase fuel pressure by (44/42)2 = 1.098, or roughly 10 percent. Taking our 39-psi fuel-pressure drop and multiplying by 1.098 gives us about 43 psi. Running a fuel-pressure drop of 43 psi would therefore allow us to run the 42-lb/hr injectors safely.

Lastly on the list to ensure adequate fuel delivery is the MAF sensor. Why discuss a MAF sensor when talking about fuel-system capacity? Well, the ECU can accept only 5 volts as a maximum output from a MAF sensor. If you start flowing enough air through your MAF that it outputs more than 5 volts, the ECU will not "see" that additional airflow and hence not add any more fuel to the mix (i.e., your MAF is "pegged"). This is now dangerous territory, since more air without more fuel equals a lean condition, usually followed by a big BANG!

For our 500hp example, we can calculate the expected airflow at peak horsepower. If we're targeting a safely rich A/F ratio of 11.5:1 (for our supercharged engine), 300 lb/hr of fuel flow will correspond to 300 x 11.5 = 3450 lb/hr of airflow. Dividing by 2.2 gives us 1,566 kg/hr. On a 5.0 H.O. engine, the stock MAF sensor hits 5 volts at only 835 kg/hr. You can now see why running the stock MAF calibration would be a problem on a 500hp engine.

Note the difference between a 42-lb/hr injector calibrated MAF curve versus a 19-lb/hr MAF curve. Since the ECU maxes out at 5 volts, the 19-lb/hr MAF would "peg" at airflows around 800 kg/hr (good for around 300 hp, depending on the A/F ratio and engine efficiency). Higher horsepower means greater airflow, so you need a MAF that will measure it.

In Part 1 of this series, we mentioned the aftermarket MAF sensors that were calibrated for larger injectors. The technique was to reduce the voltage output for the same airflow, thus fooling the ECU into thinking there was less air flowing into the engine, so the ECU would calculate a shorter injector PW, and everything should work out without having to reprogram the ECU. The problem with this plan is the ECU load calculations become inaccurate, which could cause other problems.

But a good (and necessary) thing also happens with the larger injector calibrated MAF sensor approach. While the MAF sensor output voltage is reduced for a given airflow, you can also view it from the other perspective, where for a given voltage, the actual airflow is greater. The result is now a MAF that will measure airflow much greater than the stock 835 kg/hr before outputting 5 volts. For example, 42-lb/hr calibrated MAF sensors will measure anywhere from 1,700 to 2,900 kg/hr at 5 volts, depending on the size and type.

In many cases, the dynamic range of a MAF sensor calibrated for larger injectors works out closely with the dynamic range of the injectors themselves. In other words, just when you're at a horsepower level where you're running out of fuel-flow ability from a given size injector, you're about at the limit of measuring the corresponding airflow for a MAF sensor calibrated to that injector size. Installing a MAF sensor calibrated for larger injectors therefore becomes a necessity when forced to upgrade to larger injectors. But how do we get around the problem of the incorrect load calculations? Simple, by reprogramming the ECU so it knows the actual airflow for any given MAF sensor voltage, and the actual injector flow rates. If the ECU isn't being fooled, it will correctly calculate all necessary parameters.

Two-dimensional parameters are known as "functions," like the WOT fuel multiplier versus engine rpm parameter shown. The multiplier values here act on the desired A/F ratio, so lower numbers mean richer.

Now that we've explained the up front stuff, we can finally go into the ECU to tune. Keep in mind that you can not tune around a mechanical/ physical problem with the engine or fuel system. Doing so will only be a Band-Aid solution, and usually temporary at best. To get the best idle, part throttle, and WOT performance, you need to have a healthy engine and the proper parts to support the air and fuel requirements.

EEC Basic Tuning Concepts
In the Ford EEC universe, all tuning parameters are grouped into either "scalars," "functions," or "tables." Scalars refer to one-dimensional variables, such as idle rpm, engine cid, and so on, or "switches," where a feature can be enabled or disabled. Functions refer to two-dimensional parameters, such as WOT spark advance versus rpm. Tables are used for three-dimensional parameters, such as spark advance versus load and rpm.

Again, our focus for this series will be on fuel and spark tuning, with honorable mention on idle control tuning. Of course, there's lots more in the ECU beyond the scope of this article, dealing with things like emissions control systems programming, automatic transmission controls, and charge motion control/variable camshaft timing/electronic throttle control in the later vehicles. We'll save that stuff for the professional tuners, while we cover the basics of tuning here.

Three-dimensional parameters are set in tables, such as this startup fuel table. Numbers in this table subtract from the base OL fuel table A/F values, so larger numbers in the startup table means richer.

Fuel Injectors
For anything but a stock or mostly stock engine, you'll probably need to upgrade to larger fuel injectors, so you'll need to reprogram a few things in the ECU. Unfortunately, it's not just a single scalar that needs to change when reprogramming the ECU for larger injectors. Injector tuning parameters include the injector slopes, injector breakpoint, injector voltage compensation, and often, cranking fuel pulse width (PW).

If you plotted the mass of fuel flow per injection event, versus injector PW, you'd find the slope of the plot changes with PW. At low PW the slope becomes steeper due to the sloppiness of the injectors at really short PWs. At greater PWs, the fuel flow becomes more linear and stabilizes at a lesser slope. The fuel injector low and high slope scalars refer to the injector flows at short and longer PWs, respectively, which is somewhat confusing since the low-slope value ends up larger than the high slope. The fuel-injector high-slope scalar corresponds to the typical injector flow rating, so for a 42-lb/hr injector, the high slope scalar would be close to 42. The low slope would be a value somewhat greater than 42, depending on the injector.

Back on our fuel flow versus PW graph, the point at which the slope changes from high slope to low slope is called the fuel-injector breakpoint. This value corresponds to the fuel flow when the slope changes, not PW, and is another scalar that needs changing when larger injectors are installed. The ECU uses the breakpoint value to know at what fuel flow it needs to change its PW calculations from using the low slope to using the high slope, and vice versa. If your injector breakpoint value is incorrect for the injectors you're using, it can lead to idle quality issues.

Fuel injectors do not deliver a perfectly linear amount of fuel with increasing pulse width (PW). There's a point in the fuel delivery curve (the breakpoint) where the slope changes. Proper tuning requires the ECU to know both the high and low injector slopes, and the breakpoint.

Fuel injector flow rates will also change with battery voltage. Since injectors are electrical solenoid devices, as battery voltage drops, the injection opening events will become more sluggish. The EEC can compensate for changes in voltage, such that it adds a bit more to the calculated PW as the voltage goes lower. All Ford EECs include a function for injector compensation versus battery voltage. Function values are dependent on the size and type of injector, so when upgrading your injectors, this function should also be revised as necessary.

For Ford EEC, when starting the engine, the injector PW is not calculated during engine cranking, it is merely looked up in a function of PW versus ECT. If nothing else was changed on your engine but the injectors (i.e., the starter, cam, and throttle body are all the same, so the same air will flow into the engine during cranking), the cranking fuel PW function in the EEC should be revised, since larger injectors will flow more fuel at the same PW. Again, if nothing else changed, the values in the cranking PW versus ECT function can simply be multiplied by the ratio of old injector size divided by new injector size. If your upgrades included anything that would affect cranking airflow, then all bets are off to find the ideal cranking fuel PW for your engine. Test and tune accordingly.

Injectors do have a small amount of inertia in the valving. As a result, when current is put to the injector, it takes a slight amount of time for the injector to fully open. As battery voltage drops, the injector coils are less energized, thus the injector opens even slower. To compensate for this behavior, the injector PW is compensated for battery voltage, such that more PW is added when the battery voltage drops.

MAF Sensor
For MAF-based EEC systems, the MAF sensor accuracy is critical. To calculate the correct fuel flow during Open Loop mode, the ECU relies heavily on the MAF sensor. So if the MAF sensor accuracy is off, the WOT A/F ratio will be off, too. Unfortunately, many of the larger, better-flowing aftermarket MAF sensors are not as accurate as they should be. But even with an accurate MAF sensor (like a factory unit), as soon as you change the airflow path either before or after the MAF (like adding a cold-air intake system, for example), or change the orientation of the MAF (i.e., rotating or "clocking" the sensor), the MAF sensor accuracy usually goes south. But all is not lost, since we can reprogram the ECU for the actual mass airflow versus voltage output for the particular sensor and plumbing/clocking used.

The Ford EEC uses a function for the mass flow versus output voltage of the MAF sensor. Anytime a new MAF sensor is installed, the "MAF transfer function" needs to be updated. For many MAF sensors, baseline transfer functions are available (sometimes included with the meter), but most often further tweaking is necessary to get it right. This is where EEC datalogging is critical to get a proper, custom tune.

If you're using a MAF sensor calibrated for larger injectors (usually a necessity, as mentioned earlier), enter the actual airflow versus voltage, and actual injector slopes, so the ECU can calculate load correctly. But instead of entering the actual MAF transfer and injector slopes, an alternate tactic is also used by some tuners to correct the calculated load: scale the engine cid.

Since the calibrated MAF/injector combination "should" calculate the fuel PW correctly without reprogramming the ECU (as explained earlier), reducing the engine cid in the programming will still allow the ECU to calculate load correctly. Load is calculated by comparing the actual airflow to the theoretical maximum airflow (which would depend on the engine displacement). The recalibrated MAF sensor is telling the ECU there is less air flowing into the engine, so if you also tell the ECU the displacement is proportionately less, the calculated load should be correct.

Scaling the cid is certainly quicker and easier than reprogramming the MAF transfer and injector slopes, so it's a shortcut for many tuners. But it's also viewed as a lazy-man's approach to tuning, since you're still trying to "fool" the ECU.

Here we show a stabilized OL fuel table from a T4M0 calibration ('94-'95 Mustang 5.0 five-speed). Note how the programmed A/F ratio gets richer at high loads.

For some vehicles, however, the ECU "fooling" approach for the MAF sensor is unfortunately mandatory. Many Ford EEC systems from 1999 to 2004 had a 64-lb/min airflow limit for the MAF transfer function built into the programming. Using larger MAFs, for larger injectors, would easily exceed this 64-lb/min airflow at 5 volts. Because we can't reprogram the MAF transfer function for airflows beyond 64 lb/min at 5 volts, the solution to the problem is to use a device to reduce the MAF voltage output (like a MAF Extender or DiabloSport MAFia), then similarly reduce the injector slopes and cid scalars in the programming, so the ECU's PW and load calcula-tions are correct. For example, if we used a MAFia set to reduce the MAF output voltage by 50 percent, we would reduce injector slopes and cid by 50 percent as well. This technique allows you to measure up to twice the 64-lb/min airflow limit, without "pegging" the MAF sensor.

Fuel-Control Basics
Before we get into the fuel-control programming, we need to introduce another parameter, "Lambda." Lambda is the ratio of the actual A/F ratio divided by the stoichiometric A/F ratio (which for gasoline is about 14.64:1). A Lambda value greater than one means the A/F ratio is greater than 14.64, and vice versa. Also, as Lambda values increase, A/F ratios are leaner, and vice versa. Depending on the tuning software used, the fuel functions and tables can either have A/F ratio values or Lambda values, so it's important to understand how Lambda works.

Fuel-control strategy varies depending on operating modes and the EEC strategy. In general, fuel control can be separated into the following modes: startup, open loop, closed loop and WOT (WOT is normally OL).

In the early EEC IV days, WOT spark timing was controlled by the WOT spark advance versus rpm function, shown here. Later EEC IV and all EEC V dropped this function, so WOT spark was determined from tables.

Startup mode intentionally richens the A/F mixture to compensate for cold engine-fuel volatility problems. Enrichment depends on coolant temperature, and time after starting the engine, so the startup fuel enrichment is a table in the Ford EEC. Values in the startup table subtract from the current OL A/F (or Lambda) values. For example, a '95 5.0 Mustang shows a value of 2.63 in the startup fuel table for an ECT of 60E F and 10 seconds after startup. This value is then subtracted from the OL A/F value of 13.27, to get a final A/F target of 10.64.

For modified engines with larger injectors, the startup fuel table is often too aggressive at warmer coolant temps, which causes hot starting prob-lems. The solution is to reduce the startup fuel table values at the higher coolant temperatures.

For OL fuel, there can either be a stabilized OL fuel table and base OL fuel table, or just the latter depending on the calibration (earlier EECs had only the base fuel table for OL). The difference between the two is primarily ECT. At colder ECT, the base fuel table is used, but once the engine warms up and the temperatures stabilize, the stabilized OL fuel table is used. Depending on the tuning software used, there is a scalar value that determines at what ECT value the EEC should change fuel tables.

Throttle bodies all contain a bypass channel to allow idle air to get around the closed throttle blade. Idle air in the bypass channel is regulated by an Idle Air Control actuator, shown here on an old 5.0 throttle body.

In the base OL fuel table, A/F ratio is typically determined by load and ECT. At higher loads, or colder ECTs, the desired A/F ratio is richer. The stabilized OL fuel table determines target A/F from load and rpm. Typically, at low loads, the OL A/F ratio can be close to stoichiometric, but as the load increases, you want a richer A/F ratio for maximum power (and to guard against detonation).

The final OL A/F ratio is the table cell value for the current combination of ECT, load, and rpm (interpolated if necessary), then several adders or multipliers may be applied. Lambda values are sometimes additionally modified for such things as IAT, vehicle speed, and some programmable "global" adders and multipliers (global meaning it is applied at all times). For many EECs, there is a fuel multiplier function for WOT versus rpm, where fuel-table Lambda values are multiplied by the WOT fuel versus rpm function values (when in WOT mode), to arrive at the final A/F ratio target. For simplicity, it's often best to zero out most fuel adders and set all the multipliers to one, then tune your A/F ratio from the appropriate fuel tables.

The ideal WOT A/F ratio for an engine varies, from as lean at 13.5 for some naturally aspirated engines, to as low as 10.5:1 for some non-intercooled supercharged applications. Keep in mind the ideal spark advance and A/F ratio are related, not only from the charge cooling effect you get from a richer mixture (which allows you to run more spark advance without detonation problems), but also because the A/F ratio will affect combus-tion flame speeds (more about this later).

For CL, target A/F ratio will be stoichiometric (14.64:1) at all times. Injector PW will be calcu-lated by the EEC in the normal fashion, then adjusted based on the O2 sensor feedback (the short- and long-term fuel trims discussed in Part 1). In most vehicles, CL fuel mode will occur only when loads are low to moderate, Throttle Position (TP) is below a set value, and coolant/ air temperatures are above a programmed minimum value.

The transition back from CL to OL is important for performance applications. For example, if your engine makes big, instant boost (like with a screw or Roots-type supercharger), you want the A/F ratio to go richer (back into OL) as soon as you stomp on the loud pedal. If the EEC stays in CL too long, you can be running a dangerously lean A/F ratio (14.64) for a few seconds under boost. The EEC is normally programmed to transition gradually from CL to OL as the load or TP increases, so for our performance applications, we'll need to reduce this lag time. For most vehicles, there is a scalar value for OL delay time, which should be set to zero for most performance applications.

Spark-Control Basics
Before we get into spark control program-ming, we need to understand the difference between the spark advance the engine needs for MBT, and the spark advance the engine will tolerate before detonation destroys it. Spark advance is definitely not an "if a little is good, more is better" thing.

Without getting into pages of combustion theory, the short story is the engine spark advance needs general change as follows:

  • large cylinder bore = more spark advance
  • higher compression ratio = less spark advance
  • more centrally located spark plug in combustion chamber = less spark advance
  • A/F ratio leaner than 11.5 = more spark advance
  • A/F ratio richer than 11.5 = more spark advance
  • higher inlet air pressure = less spark advance
  • higher inlet air density = less spark advance
  • higher engine load = less spark advance
  • greater charge turbulence = less spark advance
  • more EGR = more spark advance
  • advanced cam timing = less spark advance

In addition to programming in the airflow rate past the closed throttle body butterfly (a scalar value), there are idle air functions, such as the one shown, which tell the ECU how much idle air to the bypass for a given idle rpm. If you've replaced your throttle body with a larger unit and/or added a hairy cam to your engine, chances are you need to reprogram the idle air functions to get the engine to idle properly.

Now, maximum spark advance will be limited by detonation, of course, so the engine spark advance tolerance changes as follows:

  • large cylinder bore = less spark advance
  • higher compression ratio = less spark advance
  • more central spark location = more spark advance
  • A/F ratio leaner than 11.5 = less spark advance
  • A/F ratio richer than 11.5 = more spark advance
  • higher inlet air pressure = less spark advance
  • higher inlet air density = less spark advance
  • higher engine load = less spark advance
  • greater charge turbulence = more spark advance
  • more EGR = more spark advance
  • higher coolant temperature = less spark advance
  • higher engine rpm = more spark advance
  • advanced cam timing = less spark advance

If you've been paying attention, you'll notice many of the spark advance tolerance variables conflict with the spark advance needs. In those cases, the spark advance tolerance should take priority. You may have also surmised from the above that spark advance control can be complicated. As the EEC evolves, it does get more complex year after year.

In the early EEC IV days, spark advance was controlled by tables for "sea level spark advance" and "altitude spark advance" (where spark advance is determined by load and rpm), plus several scalar and function spark advance adders or multipliers based on ACT, ECT, EGR, rpm, and so on. Functions and scalars also exist for idle spark control, and WOT spark advance. Using the MAP or barometric pressure sensor (BAP sensor), the EEC would interpolate between the sea level and altitude spark table values, then modify the spark advance values based on the active adders or multipliers.

In the later EECs, spark control is much more complex, often with several adders and multi-pliers for all of the "needs" and "tolerance" parameters listed above, in addition to using detonation sensors to help reduce spark advance, if/when detonation still occurs, despite the best of spark control programming in the first place.

For the later EECs, actual spark advance applied to the engine will be the least spark advance calculated from several independent tables, once all the active adders and multipliers are factored in. For example, there may be spark tables for "base spark advance" and "borderline detonation spark advance," which both control spark advance from load and rpm. The base spark table contains MBT spark advance values, whereas the borderline table has spark advance values that put the warm engine on the edge of detonation, for whatever fuel is recommended, when running at a 14.6:1 A/F ratio. The EEC takes the advance values from both tables at the current load and rpm, then modifies the timing value based on any active adders/multipliers, then compares both final calculations. Whichever is the lesser spark advance calculation is the value actually used. In most cases, the borderline spark table (and its modifiers) are used during WOT, which is what we're most interested in.

For tuning spark on early EEC IV, go after the base spark table (you can copy the same values to the altitude table too to be sure of where your part throttle timing is, or simply disable the BAP in the scalars to remove the altitude table influence). WOT spark advance on early EEC IV is controlled by a function of WOT spark advance versus rpm.

For later EEC IV, all EEC V, and the latest Spanish Oak EEC, the WOT spark versus rpm function is gone, so you need to work the spark tables. Remember, separate tables will calculate separate spark advance values, then the EEC will choose the least spark advance from all of them. So if you're working only the borderline spark table, it may not give you the spark advance you're after, if say the base spark table (and all its modifiers) calculate a lesser spark advance.

Table Scaling
We can't talk about fuel and spark tables without talking about changing the table scaling. For fuel and spark tables, the Y-axis is typically load, and load is analogous to volumetric efficiency. So, if the stock table tops out at 90 percent load, but say you put on a Whipple supercharger that can now push the load out to 190 percent, what happens? Well, for all tables, once you exceed the top row value for load, the EEC just keeps using the last value in the table at 90 percent load. Similarly, if the table tops out at 4,000 rpm, and you twist it out to 7,500, the EEC would apply the same spark advance values at 7,500 rpm as at 4,000.

Of course, this may not be a problem, but more often than not, it is. The solution is to simply rescale the tables out to a load of 200 percent and rpm of 8,000. Depending on the software you're using, these parameters show up as table "scaling" or "normalizers" (in Ford speak) functions. To extend the borderline spark table out to 8,000 rpm, we simply rework the rpm scaling normalizer function by setting column 10 (the rightmost column) to 8,000 rpm. Then we can also adjust column headings for lower rpm, to get a more even spacing. Similarly, we'll crank up the load to two in row eight (the top row). Now we gain much more tuning resolution in the upper rpm and load ranges.

Note that as soon as you change the table scaling, you need to rework the entire table to ensure that for example, the spark advance at 180 percent load is not the same as that previously called for at 90 percent load (that would be bad). Also note that Ford starts counting rows and columns at zero, so the leftmost column for example, would be con-sidered column zero.

Idle Control
Idle control could easily be an article in itself, so we'll just cover the absolute basics at this point. Engine intake airflow at idle is controlled by the Ford EECs, using a bypass air channel around the throttle body butterfly. The total amount of air that gets in is the amount squeaking by the closed throttle blade, plus the amount going through the bypass channel. The Idle Air Bypass, IAB (aka IAC - Idle Air Controller or ISC - Idle Speed Controller) is the actuator which allows a specific amount of air into the engine, via the bypass channel, based on the desired idle speed.

The IAB actually pulses open/closed rapidly, so the amount of air bypassed is determined by the duty cycle of the IAB. For a given desired idle rpm, the EEC is programmed to bypass a specific amount of air, in addition to what it knows is getting by the throttle body blade. A scalar value exists in the programming for the amount of air that gets through the butterfly valve of the closed throttle body. Functions also exist in the EEC for the total intake airflow (i.e., the TB airflow plus IAB airflow) versus rpm for both Neutral and Drive gears (for automatic trans cars). There are also many modifiers that act on the idle rpm, for things like low ECT, A/C on, and so forth.

Of course, the amount of idle air to achieve a given idle rpm is highly dependent on the engine combination. If you change things like throttle bodies, camshafts, cid, and so on, the idle bypass air needs to be reprogrammed. Certainly, for a new throttle body, the TB airflow scalar should be reprogrammed.

Idle speed control is its own closed loop system. That is, the EEC will command a certain airflow for a specific rpm it's trying to achieve. It then monitors the rpm to see if it's correct. If not, the EEC will adjust airflow up or down to hone in on the target idle rpm.

And this is where things can go sour. If your ISC airflow function and TB airflow scalar values are miles off what your engine needs, the EEC can start hunting the idle up and down in a desperate attempt to get the idle speed to the target value.

Idle fuel will be added according to the desired A/F ratio (14.64 during closed loop idle, or whatever the appropriate OL fuel table-and active modifiers-are commanding for open loop idle). So as long as your MAF transfer function is correct at the low flow end, you should be getting the correct idle A/F ratio when in open loop.

For closed loop idle, it gets a bit more involved. Since the O2 sensors are used to control the A/F ratio, it's imperative they be at the correct temperature to give proper readings. Relocating the O2 sensors into the collectors of long-tube headers for example, causes all kinds of CL idle problems when the O2 sensors get too cold at idle. Thermal-coated headers sometimes help the situation, but otherwise it's often necessary to retune the vehicle to use OL at idle.

Most often, a hunting idle is the result of excessively rich idle fuelling. This can be caused from a MAF transfer function that's way off on the low end (common with many aftermarket MAF sensors and/or CAI kits), or O2 sensors that get too cold during idle.

Well, there's the groundwork. If you've followed along so far, you're ready for some actual custom tuning, so let's do it next month. Stay tuned.