Idle Tuning for ITBs on a Link ECU

Individual throttle bodies (ITBs) are one of God's greatest gifts to man, but as a newbie to electronic engine tuning, they provide a few extra hurdles to making your engine idle as smooth as butter. 

When I first started my adventure into standalone ECU tuning, the one thing I spent the most time on by far was idling. As a matter of fact, I spent so much time on idling that the engine was probably half way to being broken in before I even got the chance to actually drive the car. Even after I had my fuel and ignition maps fully filled out from street driving and subsequent tuning, I still had a rather imperfect idle strategy. But in order to explain why my idle was so hard to nail down, and how I fixed it, I need to explain a little bit about how idle tuning works in the context of a Link ECU, and the challenges introduced with ITBs in particular. 

If you're tuning a car with ITBs, you probably already know that you'll need to be tuning using an Alpha-N strategy. Meaning, the Throttle Position Sensor (TPS) is used as the load axis rather than Manifold Absolute Pressure (MAP). By using TPS as your load source, there are times when engine load can still vary without actually seeing a change in throttle position. An idling engine is actually the best example of this. 

At the core of ECU tuning is your base fuel map, which in this case is going to be based on throttle position and engine speed. When we're idling, engine speed remains largely the same, and throttle position should remain at 0% at all times. This means that there is really only one cell for controlling the fuel at idle, which is going to be at 0% TPS and whatever you base idle speed is mechanically set to. 

Link's idle strategy (and that of most ECUs) is controlling your Idle Speed Control Valve (ISCV), which can be opened or closed to allow some amount of air to bypass the throttle plates. Whether you are using open loop or closed loop control, this system still works great for controlling the idle airflow to account for various changing loads like an electric fan, AC, power steering, temperature changes, etc. 

The problem lies in the fact that the ISCV has no relation to throttle position. Allowing more air to bypass the throttle plates doesn't actually register as an increase in airflow from the point of view of your base fuel map. Say your electric fan kicks in while the car is sitting at idle, causing the load on the alternator to increase, and thus the engine starts to bog down. In the case of a closed loop idle control system, the idle controller will see this dip in engine speed and account for it by opening the ISCV more until it sees engine speed start to recover to the target engine speed.

Since there is no change throttle position, and no meaningful change in engine RPM from the point of view of the fuel table, there is no change in the fuel provided by the fuel table. This causes the air fuel ratio (AFR) to lean out, and the engine speed will fall further. The idle controller will keep trying to account for this falling engine speed with more air from the ISCV, but since no fuel is added, the mixture will continue to lean out until the engine stalls altogether. 

In the case of a normal intake manifold based setup, where the load axis is MAP, this scenario is accounted for as the pressure in the manifold will change and subsequently cause a change in fueling based on the fuel table. But with ITBs, this change is unaccounted for. 

So we need a way to add fuel based on the amount of air that the ISCV is adding to the equation, because unless you're using an E-throttle setup, the throttle position will never change when idling despite a change in airflow into the engine. This is where 4D and 5D fuel maps become really useful. For some reason I didn't think of this for quite a while, and when I did I felt like a genuis. Then I found at least 3 different YouTube videos on the subject and realized that I had unfortunately not made a new scientific discovery. My Nobel Peace Prize will have to wait. 

By making a fuel compensation map that uses the position of the ISCV as the primary load axis, we can adjust our fueling from the base fuel map to meet our idle needs. And the adjustment is pretty simple. The more open our ISCV is, the more fuel we want to add. Keep in mind that on my specific Link ECU setup, this is 4D map is applying an adjustment as a percentage of the value in the base map, not an addition to it. And since my idle speed is typically within a couple hundred RPM under warm conditions, we're always adjusting the same cell on the base fuel table. 

As an example, this is what my current 4D table looks like. Honestly, I haven't really found much need for the 3D table using engine speed, but it works and I was too lazy to take it out, so it's still there. Additionally, this table is activated using a conditional output that specifies engine idle conditions as being below 1300RPM and below 1% TPS, so the need for that last table of zeros is really just there for redudancy. Before I had that engine speed condition, it was there to prevent interpolation from adding fuel at higher engine speeds. 

Feel free to use this table as a starting point, your mileage may vary. As a disclaimer, you are using this at your own risk and I am not responsible for any problems that may arise as a result of using this table. Disclaimer out of the way, you will likely need to play with the values as necessary. I recommend starting off making this a 2D table that just uses idle position and not engine speed. Also make sure that your idle position axis is fully encompassing of the upper and lower bounds of your ISCV. My valve is clamped between 25% and 40%, as I have never had enough idle loads or a cold enough idle to ever surpass these numbers. Again, your mileage may vary. 

Since implementing this 4D table, my idle has never been better. I can enable the electric fan, headlights, foglights, and add power steering load while the car isn't moving, and the engine never dips below 950RPM. I will note that I have struggle to get my engine to idle smoothly and happily below 1000RPM when warm, but I take this as the consequence of having an 8200RPM redline.