How to: - Self Tuning My Supercharged 4.0L SOHC V6 | Ford Explorer Forums - Serious Explorations

  • Register Today It's free!

How to: Self Tuning My Supercharged 4.0L SOHC V6

Prefix for threads which are instructional.
Not open for further replies.


Moderator Emeritus
May 26, 2009
Reaction score
City, State
Greenville, SC
Year, Model & Trim Level
00 Sport FI, 03 Ltd V8
This thread will document my effort to tune my 2000 Explorer Sport powered by the 4.0L SOHC V6 with a modified Banshee M90 supercharger kit installed. The disadvantages of generating my own custom tune: (1) No previous experience in calibrating a PCM; (2) Long learning curve: (3) Risk of damaging the engine; (4) Potentially less than optimum performance; (4) Cost of support tools. The advantages of self tuning: (1) Unlimited number of iterations for no additonal cost other than time; (2) Understanding the logic of the Ford PCM strategy; (3) Self satisfaction. Based on past modifications and a continuining desire to "tinker" with my Sport it is likely that future tunes will be required - I anticipate an increase in engine displacement in the next few years.

Disclaimer: I have no experience in tuning so please evaluate what is stated in this thread accordingly. I am not responsible for your engine damage or inferior performance resulting from information in this thread.

Warning: Operating the engine with a lean fuel mixture under heavy load may result in detonation and rapid damage to spark plugs, valves, pistons, and combustion chambers. Detonation may also occur with normal fuel mixture but low octane fuel or overly advanced ignition timing. A tune should be developed in stages - gradually increasing load and timing as testing is performed to determine it is safe to progress to the next stage.

Closed Thread: This thread will remain closed until the tune is complete. Your comments are encouraged. Please post them here: SOHC V6 tuning

My tuning support tools consist of:
1. SCT X3 Power Flash P/N 3000 (serial number starting with XP) OBD-II programmer
2. SCT X3 USB cable (included with X3)
3. SCT two channel analog input cable P/N 9608 for use with X3
4. SCT Advantage III Ford Pro Racer Software P/N 4332
5. SCT LiveLink Gen-II V2.1 (free)
6. SCT Device Updater (free)
7. Laptop computer

I selected SCT's Advantage III because it was the only product advertised as capable of programming my Sport via OBD-II, I already have the X3, and there is a free user support forum for Advantage III owners.

Vehicle Configuration for Tune
Engine: 4.0L SOHC V6 stock internals with 160K miles (cyl 5 compression 20 psi < cyl 6)
Air filter: Akimoto racing 3" dia. outlet cone pulling air from engine compartment
MAF sensor: 90 mm Ford Lightning
Throttle body: ported & polished 4.6L 75mm Ford racing
Main intake: 3" dia. from MAFsensor outlet to plenum inlet
Plenum: Banshee M90
Supercharger: 1991 Super Coupe (not rebuilt) with 2.7" dia. pulley (target boost = 8 psi)
Intake manifold: Banshee with intercooler core
Idle control: remote box mounted 2000 Mustang GT IAC valve
Fuel: Deka IV 60 lb/hr injectors, Aeromotive Stealth 340 l/hr pump, electronic FPR, ethanol free 93 octane
Ignition: stock coilpack, Champion 4401 Truck Plugs (0.030" gap)
Intercooler: unpressurized, stock ATF heat exchanger, Bosch 317 g/hr pump
Engine oil: thermostatically controlled (215 deg F) oil cooler, 5W30 full synthetic
Exhaust: stock headers, dual 2.25" dia. high-flow cats, 2.5" to 3"dia. Y pipe, 3" dia. in/out Dynomax VT muffler, 3" dia. tailpipe, 3" dia. Dynatech vortex cone insert turndown
Transmission/torque converter: stock 5R55E (160K miles)
Rear axle: stock 3.73:1 open with 75W140 full synthetic
Tires: BFG Long Trail T/A Tour P235/75XL108T 15 inch tires (dia. = 28.9")

Click here to post comment on the discussion thread

Join the Elite Explorers for $20 each year.
Elite Explorer members see no advertisements, no banner ads, no double underlined links,.
Add an avatar, upload photo attachments, and more!

PCM Strategy

Each PCM contains a specific strategy (non-volatile program) controlled by a set of calibration constants. The specific 7 digit strategy is referred to by a 3 or 4 digit catch code that is marked on the PCM sticker.

My stock strategy has a CDE4 catch code and my Advantage III license is only for processors with that code.

Advantage III allows display of many (but not all) calibration constants with their associated stock values and modification of the values. There are two Advantage III user levels with different privileges: Pro Racer with the ability to display and modify most calibration constants required for normal tuning; and Calibrator with the ability to display and modify less used calibration constants. SCT likes for users to attend their training course before granting Calibrator status - especially for users who are modifying tunes for vehicles equipped with drive by wire and variable camshaft timing. My Sport has neither of those capabilities so SCT graciously granted me Calibrator status to gain access to special knock sensor calibration constants.

Ford's PCM strategy is fairly generic and supports vehicles with a vast array of engine sizes, induction systems, performance, and transmissions that can be specific for a particular vehicle by selecting suitable calibration constants. Ford invested many man years of labor at a huge expense to develop the strategy and protects their investment by keeping it proprietary. I assume that SCT has a nondisclosure agreement with Ford allowing enough insight to interface Advantage III to the Ford strategy. The source code listing for the generic strategy that is tailored for the 1998 Mustang is more than 8,000 pages.

Click here to post comment on the discussion thread

MAF Transfer Function

Different MAF sensor part numbers have different mass airflow measurement characteristics. The MAF sensor outputs a voltage to the PCM that varies with mass airflow. The greater the airflow the greater the voltage output but the PCM can only read voltages less than 5.0 volts. My stock 55 mm MAF sensor would reach the PCM maximum voltage at an airflow significantly less than the airflow capability of my supercharged engine at WOT and high rpm. When the Lightning 90 mm MAF sensor outputs 5.0 volts that represents a significantly greater airflow than the capability of my supercharged engine. The PCM uses a table named the MAF transfer function (MTF) to convert voltage to airflow. The MTF is very important because the PCM uses it to calculate airflow for the air/fuel ratio (AFR) and load for ignition timing and other engine parameters.

The MTF for all MAF sensors will vary slightly even for the same part number. Typically aftermarket MAF sensors have a larger variation than OEM units due to less stringent manufacturing tolerances. I've read that an OEM unit can vary a couple percent for any given airflow from unit to unit and the typical aftermarket unit can be twice or more that. There is at least one aftermarket MAF sensor manufacturer that has tolerances as good or even better than the typical OEM.

My LMAF 90 is a Ford unit that I assume is fairly accurate. As part of Advantage III support SCT provides MTFs for popular MAF sensors. I was able to find on the internet bench flow test results for the same part number as my MAF sensor. I replaced the stock MTF values with the LMAF 90 values.

In Advantage III only the first two columns are entered. When a value is entered in the "Counts" column Advantage III automatically calculates and enters the corresponding "Voltage" value. When a value for "#mass/tic" is entered Advantage III enters the corresponding "lbs/min" value. The number of rows and columns are fixed and Advantages III compares the value entered for a specific row and column with the value in the stock tune. Black entries are the same as stock. Red entries are greater than stock and blue entries are less than stock. SCT recommends saving data frequently so upon completing the MTF modifications I saved the modified stock tune to a new file name (2KSR01.1)

Click here to post comment on the discussion thread

Fuel Injector parameters

My Deka IV 60 lb/hr injectors are manufactured by Siemans. They are reputed to have good linearity over most of the operating range and excellent accuracy at low duty cycles (short pulse width). The tuning parameters for the injectors are readily available on the internet. However, the parameters will have to be tailored for each specific application to achieve the desired AFR for the wide range of engine operating conditions.

The flow of injectors vs pulsewidth is usually characterized by two lines of different slopes that cross at some point.

The slope of the line at low flow rates (ALOSL) is steeper than the slope of the line at mid to high flow rates (AHISL). The point where the lines intersect is called the breakpoint (FUEL_BKPT). For the Deka IV injectors the low and high slopes are not much different. You can see from the plot that at very short pulsewidths and very long pulsewidths the injector response is nonlinear. The fourth important fuel injector parameter is the minimum repeatable pulsewidth (MINPW) at a specified fuel pressure difference between the fuel rail supply to the injector and the head port pressure the injector sprays into (psi delta or psid).

In Advantage III single value parameters are named scalars. I modified my 2KSR01.1 tune for the four scalars and saved the tune.

The injector response time to open and close varies with supply voltage. The PCM needs the information to optimize injector timing. The Advantage III table will accept 12 values but Siemans provides an 8 value table and a graph. I estimated some of the values from the graph and then entered the values and saved the tune.

Even though the second column is labeled "Multiplier" I think it is actually the response delay in milliseconds. This table was important to me for two reasons. My 240 amp alternator outputs a higher than normal voltage at times and my instrument cluster is currently removed which means I'm running just on the battery until it is reinstalled.

In the stock tune the scalar Injector Comp for Pressure is enabled. The description states: A value of one (1) means that the PCM will calculate a new fuel injector pulsewidth based on the pressure that it either measures (from the fuel rail pressure sensor) or infers (from the fuel rail pressure function). My stock returnless fuel pressure system had no fuel pressure sensor. I don't know if the PCM has a fuel rail pressure function so I entered the values from the Siemans specification. My modified fuel system has a fuel rail pressure sensor and a manifold pressure sensor but the data is not provided to the PCM. Instead it goes to an electronic fuel pressure controller that is adjusted to provide an average fuel injector delta pressure of 39.15 psi. I plan to disable the Injector Comp for Pressure scalar in the future and see what effect that has.




Click here to post comment on the discussion thread

Adaptive learning

Adaptive learning refers to the PCM's ability to adapt to changing parameters as components in the engine wear or are replaced with components with slightly different characteristics (such as aftermarket components). A table controls what engine conditions will allow adaptive learning and the "learned" data is stored in keep alive (non-volatile) memory which is retained as long as there is battery voltage to the PCM. If the PCM determines that one bank is running lean for a certain period of time it will adjust the long term fuel trim (LTFT) for that bank so the short term fuel trim (STFT) for that bank will be within the normal operating range. When attempting to adjust the injectors to achieve the desired AFR allowing the PCM to change the LTFT complicates the tuning process. Therefore, I disabled it and saved the tune.

In most instances Advantage III provides a useful description of the selected calibration constant.

Advantage III makes it easy to transfer a modified tune to my X3 Power Flash. I just connect the X3 to my laptop USB port, select X3 at the top of the Advantage III display, enter which file to save and its name and start the transfer.

The transfer only takes a few seconds. Notice that the X3 can store up 10 tunes. That's for X3s with a serial number that begins with XP. Earlier models store less tunes (I think 3). Then I take the X3 to my Sport and program the PCM which takes a few minutes. Reprogramming the PCM erases all data from keep alive memory.

Click here to post comment on the discussion thread

No load step test

At this point I was ready to attempt an engine start. First I generated a datalogging configuration file using my X3 and LiveLink on my laptop. I added the two analog channels that X3 supports for my dual wideband AFR meters and the PCM commanded injector pulsewidth for Bank1 and Bank2.

My AFR meters have the capability to display AFR or lambda but their outputs for datalogging are only AFR which is one reason I filled up my tank with ethanol free fuel. LiveLink accepts equations to convert analog voltage inputs into engineering units.

I used the equations shown to convert my meter outputs into AFRs.

After setting up the configuration file and starting the datalog I cranked the starter and was pleased that the engine immediately started and idled steady. AFRs should be adjusted based on readings obtained when the engine has reached normal operating temperature. LiveLink updates the selected parameter identifiers (pids) in the configuration file in real time so even without an instrument cluster I am able to monitor engine parameters. It took more than 6 minutes before the 190 degree F thermostat opened.

The AFRs were a little rich at the fast idle speed of about 930 rpm (commanded stock idle in neutral is 656 rpm).

I also noticed that the STFTs were being clipped to a minimum of 1.00.

I wonder if the specified minimum pulsewidth is too large.

When I moved the accelerator I realized that the throttle plate was stuck partially open. The idle speed dropped to 820 rpm.

Click here to post comment on the discussion thread

No load step test (continued)

I opened the throttle plate to increase the engine speed to 2000 rpm and then decreased it to 1685 rpm.

Notice that the pulsewidth only increased while the engine speed was increasing and then returned to the minimum. To me this indicates that the minimum pulsewidth is too large.

One curious thing is the AFR gets richer as engine speed increases even though the injector pulsewidth stays at the minimum.

That's because the datalogged pulsewidth is in clock tics instead of ms. After some research I learned that the PCM uses clock tics for timing and computes the number of clock tics between profile ignition pickup (pip) edges. To obtain the clock tic count it is necessary to datalog pid TIME BETWEEN PIP EDGES IN CLOCK TICS and use that and engine speed to calculate the pulsewidth time.

At 1680 rpm the AFR is 11.25:1 and at 1350 rpm the AFR is 11.5:1.

At 2010 rpm AFR Bank1 is 11.10:1 and AFR Bank2 is 11.40:1 but at 2450 rpm AFR Bank1 is 11.95:1 and AFR Bank2 is 11.40:1.

The known differences between the two banks: Bank1 O2 sensor is new and Bank2 O2 sensor is 3 years old; Bank1 spark plugs are gapped at 0.044" and Bank2 spark plugs are gapped at 0.030".

Even at 2680 rpm the minimum pulsewidth continues to be a factor in the AFR.

At 3450 rpm the effects of the minimum pulsewidth are almost eliminated.

Therefore it would be premature to adjust the injector slopes for results observed below 3450 rpm.

Click here to post comment on the discussion thread

No load step test (continued)

At 3450 rpm the AFR for both banks is 12.20:1 (about 20% rich for an unloaded engine).

It's curious that at this engine speed both banks have similar AFRs. I think on 2001 and later models the rev limiter maximum is 3000 rpm in Park or Neutral. My 2000 rev limiter is set to 6250 rpm for Neutral and otherwise (stock values).

Ever since I purchased my Sport I have been plagued with overactive knock sensors (I'm on my third one).

At 523 seconds I rapidly increased the engine speed from 2685 rpm to 5470 rpm and there is no retard from the knock sensor. However, at 540 seconds when I increased the engine speed from 893 rpm to 4472 rpm the knock sensor retarded the spark 4 degrees. In the future I hope to isolate to the cylinder(s) susceptible to knock.

I've decided to ignore the specified minimum pulsewidth of 1.39 ms and the graph that indicates the minimum pulsewidth is 1.0 ms and set the value as 0.2 ms. It would be helpful to know the value of the datalogged pulsewidth in ms instead of clock tics. That way I could determine if the commanded injector pulsewidth is above or below the breakpoint and on the high or low slope. The AFR is too rich at 3450 rpm but since the engine is not loaded the injector low slope may be determining the pulsewidth. The injector high slope is approximately equal to the max flow per second [(60 lb/hr)/3600 sec/hr = .0167 lb/sec]. Increasing the injector slope decreases the amount of fuel since the PCM "thinks" the injector has a larger flow/sec. I've read that the low slope (.0175) should never be less than the high slope.

Click here to post comment on the discussion thread

Minimum pulsewidth test

After changing the minimum pulsewidth from 1.39 ms to .2 ms (actually .198 ms) I did a short datalog on cold start.

Notice that when the engine is idling at 1,000 rpm the pulsewidths are no longer clipped on the bottom. Credit for the idea of reducing the minimum pulsewidth goes to 4pointslow. Thanks John!

I didn't have the AFR meter outputs connected but the STFTs now start cycling 12 seconds after engine start and are reasonably close to 1.00 at 30 seconds.

Apparently with the previous large minimum pulsewidth the PCM declared some type of failure and accordingly didn't calculate STFTs. Tuning AFR using the STFTs is frequently done for low to mid range airflows but a wideband is normally required for WOT AFR tuning. I prefer to have permanent wideband monitoring capability to rapidly detect abnormalities when driving.

Running on the battery without the alternator charging resulted in my battery voltage dropping to 12.06 volts just after engine start. While the engine was running I connected a battery charger to the battery and the voltage increased to 12.25 volts. The datalog does not indicate any correlating change in pulsewidth or idle speed. I tried disconnecting and reconnecting the charger several times with the same results.

Click here to post comment on the discussion thread

ISC Idle Air

I increased the Air_#/M values by 15% in the ISC Neutral Idle Air table.

I did the same thing for the ISC Drive Idle Air table.

Advantage III provides the capability to add options when transferring the tune file to the X3.

I checked the Idle Speed Drive (rpm) and the Idle Speed Neutral (rpm). When I began loading the tune into the PCM the X3 asked which one to use and I selected Idle Speed Neutral. Then it asked which engine speed and I selected the stock 656 rpm and loaded the tune. The only advantage of the options capability is being able to change the value without using Advantage III. It is not possible to change the value interactively. The tune has to be loaded each time for a different value. The disadvantage is unless the value selected is manually recorded later when reviewing the tune in Advantage III to compare to a datalog the actual value used is not known.

When I put my Sport in Drive the engine was not warmed up but it was obvious that the idle speed was too fast so I adjusted the throttle plate stop and cable to mechanically lower it.

Click here to post comment on the discussion thread

2nd no load step test results

With the engine when fully warmed (ECT = 190 deg F.) at 800 rpm (MAF AD COUNTS = 150). STFT = .98. the AFR is a little lean but acceptable.

The faint yellow line in the graphs is the engine speed.

At 1600 rpm (MAF AD COUNTS = 220), STFT = 1.07.

At 2025 rpm (MAF AD COUNTS = 254), STFT = 1.18.

At 2500 rpm (MAF AD COUNTS = 287), STFT = 1.18.

At 3000 rpm (MAF AD COUNTS = 315), STFT = 1.22.

At 3800 rpm (MAF AD COUNTS = 370), STFT = 1.27. (I decided to go higher than 3500).

If the engine speed and the MAF sensor airflow are known (and are accurate), it is possible to calculate the injector flow per rev and compare that to the specified breakpoint. For example, during my no load step test the MAF Ad Count was 146 (.659 #/min) at 800 rpm. Dividing by 800 yields the mass airflow per rev or .000824. Dividing that by the AFR (14.87:1) yields .0000554 lbs fuel/rev. However, there are three injectors pulsing per rev on a V6 so dividing by 3 yields .00001846 lbs fuel/rev for one injector. This is less than the specified breakpoint of .00003363 so the PCM should be using the injector low slope. Performing similar calculations yields the following:

. rpm ...... MAF ........... AFR ..... lbs/rev ... STFT
. 800 .. 146 (.659) .... 14.87:1 .00001846 ...98
1998 .. 253 (1.811) ... 14.80:1 .00002041 1.18
2500 .. 285 (2.340) ... 14.60:1 .00002137 1.18
2967 .. 313 (2.829) ... 14.66:1 .00002168 1.22
3881 .. 372 (4.0185) . 14.63:1 .00002359 1.27

All of the above indicate the PCM was using the injector low slope. The engine will have to be loaded in order to exceed the specified breakpoint when the PCM should switch to the injector high slope. The STFTs indicate the correction applied by the PCM. It is obvious that the injector low slope needs to be increased about 20% (from .0175 to .0210) to lean the AFR as engine speed (airflow) increases.

Click here to post comment on the discussion thread

1st drive AFRs

The main goal for my first drive was to obtain AFR data with the engine loaded. Due to speed limits, traffic lights and hills in my location it is difficult to maintain a constant MAF sensor airflow at various rates. It takes me about 20 minutes to drive to a controlled access freeway and then the speed limit is only 60 mph. So I did the best I could on local boulevards.

The maximum airflow in the no load step test was about 370 MAF AD COUNTS at 3800 rpm. For the following graphs with various MAF AD COUNTS the bold orange plot represents Bank2 AFR and its associated vertical scale. The light blue plot represents Bank1 AFR with its scale approximately the same as Bank2 AFR. The light green plot represents MAF AD COUNTS and the dark blue plot represents engine speed.

MAF AD COUNTS = 395, STFT = 1.26.

MAF AD COUNTS = 425, STFT = 1.27.

MAF AD COUNTS = 470, STFT = .99.

MAF AD COUNTS = 495, STFT = .99.

MAF AD COUNTS = 520, STFT = 1.00.

MAF AD COUNTS = 660, STFT = 1.24.

Calculating fuel flow as in the previous post yields the following:

. rpm ...... MAF ........... AFR ..... lbs/rev ... STFT
1990 .. 395 (4.5665) . 14.60:1 .00005239 1.26
2201 .. 425 (5.4167) . 14.30:1 .00005737 1.27
4071 .. 470 (6.9838) . 14.50:1 .00003944 ...99
1875 .. 495 (7.9987) . 14.80:1 .00009608 ...99
2316 .. 520 (9.1985) . 14.60:1 .00009068 1.00
3132 .. 660 (17.5148) 14.60:1 ...0001277 1.24

All of the above indicate the PCM was using the injector high slope for the MAF Ad Count exceeding 395. The STFTs indicate the correction applied by the PCM. The results are not consistent but it is obvious that the injector high slope needs to be increased about 20% (from .0167 to .0200) to lean the AFR as engine airflow increases.

Click here to post comment on the discussion thread

AFR adjustment

I wanted to confirm the injector breakpoint by a second method so I datalogged the injector pulsewidth and pip to pip interval in clock tics.

MAF AD Counts = 395, pulsewidth = 682 clock tics, time between pip edges = 2523 clock tics, engine speed = 1985.5 rpm
Using the equation I derived:

PW in ms = 1/[(rpm/20,000) * (pip to pip tics/PW in tics)]
PW = 2.72 ms
According to the injector dynamic flow graph a pulsewidth of 2.72 ms equals a flow of 18 mg/pulse or 9 mg/rev since the injector only pulses once per 2 revs.

The Siemans specified injector breakpoint in lbs = 0.00003363 (I think this should be lbs/rev) or 15.25 mg/rev

The injector pulsewidth is above the breakpoint if the PCM uses mg/pulse and below the breakpoint if the PCM uses mg/rev. The previous calculation method indicates that the injector flow is above the breakpoint when the MAF Ad Count = 395.

I decided to use a local hill to confirm there is an AFR problem between 375 and 500 MAF AD Counts. For the AFR Bank1 and AFR Bank2 plots below, even though the TPS Relative increases from 30 to 110, the vehicle speed decreases from 45 to 42 mph, the engine speed decreases from 2000 to 1900 rpm but the MAF AD Counts increase from 270 to 460 because of climbing the hill.


The AFRs for both banks look satisfactory up to MAF AD Counts of 410 at 251 seconds but then start to go rich.

I found an instance when the MAF AD Counts = 800 and the PCM switches from open loop to closed loop and then back to open loop.

The AFR is about 13:1 for both banks. I've decided to increase the injector high slope from .0167 to .0175 so the low and high slopes will be equal.

Click here to post comment on the discussion thread

Wot afr

The stock tune has the WOT Fuel Multiplier set to 0.875. That means if the normal AFR is 13:1 at WOT it will be 11.375:1

In this WOT instance the AFR drops to 10.5:1. I prefer to have the AFR controlled by the base fuel table even at WOT. I'll set the WOT Fuel Multiplier to 1.00. There's a table that specifies when WOT occurs.

Click here to post comment on the discussion thread

Open loop

There's a table that specifies when open loop occurs.

Which is why the PCM switched from closed loop to open loop at 455 seconds (rpm = 3213) and back to closed loop at 457 seconds (rpm = 3863).

I haven't determined why the PCM switched back to open loop at 461 seconds (rpm = 4055, load = .61) and stayed open loop until at 489 seconds.

When in open loop the PCM ignores the O2 sensor outputs and uses the values in the Base Fuel Table (stock table shown below).

The stock Base Fuel Table relied on the WOT Fuel Multiplier (.85) to protect the engine from detonation at heavy throttle and high engine speed. With the WOT Fuel Multiplier changed to 1.00 the Base Fuel Table should be changed accordingly. The stock table had slightly better resolution at the TP mid-range and engine speed low range. With a supercharger I prefer better resolution at the TP and engine speed maximums. To accomplish that I changed the normalizers that define the horizontal and vertical scale.

I then generated a new, detonation safe, Base Fuel Table.

Click here to post comment on the discussion thread

Open loop tuning

It may be easier to tune the AFRs when the PCM is in open loop instead of closed loop. The disadvantages are fuel economy, the PCM cannot make corrections for aging components, the catalytic converters will operate less effectively and the emissions will be greater. I'm going to try it just for tuning by changing the TP values to 0.

It's impossible to accurately calibrate the AFR without access to the PCM commanded lambda and measured lambda. According to my research, when the PCM is in open loop the commanded lambda is according to the Base Fuel Table (BFT) and the STFTs reflect the value. For my modified BFT commanded lambda should be .992 when TP is < or = 100 and rpm < or = 3000 and my first open loop datalog reflects that. At TP = 200 the commanded lambda increases to .984. However, the PCM interpolates lambda between TP = 100 and 200.

The vertical red cursor identifies the point that the TP = 100. As the TP increases past 100 to 119 the commanded lambda decreases slightly. The measured AFR also decreases. But from 10.5:1 to 10.1:1.

Yes, I definitely need to lean the applicable injector slope. While searching thru the list of available pids I found several of interest: High Injector Slope Pulsewidth in Clock Tics, Low Injector Slope Pulsewidth in Clock Tics, and Inj Breakpoint Pulsewidth which I datalogged. The values for the first two were all zeros but there was data for the Inj Breakpoint Pulsewidth.

For time = 1,048 seconds: Fuel Pulsewidth = 2018, Inj Breakpoint Pulsewidth = 710, pip to pip interval = 1809, rpm = 2771.5. Assuming the breakpoint pulsewidth is in clock tics then it is less than the fuel pulsewidth and the PCM is using the injector high slope. Using my derived equation the fuel pulsewidth = 8.05 ms.

TP = 227, RPM = 2780, MAF AD Counts = 610, STFT1 = .98, AFR < 10.0:1 (lambda = .68).

.98/.68 = 1.44 or the injector high slope is 44% too rich. I'm not sure what the Inj Breakpoint Pulsewidth actually is but the above plot indicates that it is not fixed. However, for the entire 22 minute drive it only varied between a min of 708 and a max of 744. I suspect the time is in clock tics.

It would be helpful to determine the MAF AD Counts for the injector breakpoint.

Click here to post comment on the discussion thread

Injector breakpoint pulsewidth

At time 99.7 seconds: Fuel Pulsewidth = 758, Inj Breakpoint Pulsewidth = 730, MAF AD Counts = 341, TP = 59, rpm = 1695, commanded lambda = .99.

That means the PCM is using the injector high slope and the AFR is very rich.

11.3 AFR = .77 lambda, .99/.77 = 1.29 or 29% rich for high slope = .0175. The high slope should be increased to 1.29 * .0175 = .0226.

At time 378 seconds: Fuel Pulsewidth = 324, Inj Breakpoint Pulsewidth = 740, MAF AD Counts = 234, TP = 16, rpm = 1719, commanded lambda = .99.

That means the PCM is using the injector low slope and the AFR is only slightly rich.

14.2 AFR = .97 lambda, .99/.97 = 1.02 or 2% rich for low slope = .0175. The low slope should be increased to 1.02 *.0175 = .0179.

The above conflicts with the advice that the high slope should never be greater than the low slope.

Adjusting injector parameters

My wideband meter has the capability to display AFR or lambda but its datalog output is always AFR. Since the PCM uses lambda it is desirable to convert the wideband AFR to lambda to compare with the commanded lambda. I modified the equations in LiveLink to plot the analog channels (wideband outputs) in terms of lambda using the stoichiometric ratio of gasoline (14.7:1).

This is the reason I drove twenty minutes to the nearest gas station that sells ethanol free premium fuel to fill my tank. In my stock tune the Stoichiometric Air Fuel Ratio is set to 14.63:1. The Advantage III note states that "Gasoline has a stoich ratio of 14.64:1" even though 14.7:1 is commonly used. I decided to change the equation to use 14.64:1.

I tried a short no load test (no datalogging) with the injector high slope increased to .0226 and the low slope increased to .0179. The AFR was 15.5:1 at idle and the AFR at 1000 rpm was about 14:1 decreasing to 12:1 at 2500 rpm. So the low slope became leaner (a little too much) and there was virtually no change from the high slope increase.

There are several methods for controlling the AFR: 1) Altering the injector parameters; 2) Altering the fuel pressure parameters; 3) Altering the engine displacement: and 4) Altering the MAF Transfer Function. For me altering the engine displacement is not desirable because that corrupts the load calculation. Altering the MAF Transfer Function is my last resort because that corrupts the mass airflow measurement and the load calculation.

I tried leaving the injector low slope at .0179, changing the high slope to .0178 and lowering the breakpoint from .0000336 to .00001 (same as stock). I didn't notice any significant change:

.. rpm ..... AFR
... 700 .. 15.5:1
. 1000 .. 14.0:1
. 1500 .. 13.7:1
. 2000 .. 12.3:1
. 2500 .. 12.1:1
. 3000 .. 11.0:1

I've read in several places that increasing the injector slope decreases fuel and that seems logical because the greater the slope the greater the fuel flow so the PCM reduces the pulsewidth.

With my electronic fuel pump controller I anticipate some problems adjusting the AFR. My stock returnless fuel system had a fixed rail pressure since the fuel pressure regulator is in the fuel tank with no vacuum connection. The PCM assumes that the fuel injector delta pressure will vary as the intake manifold pressure varies with load. Even though the stock system has no manifold pressure sensor I suspect the PCM has an estimating function based on load and modifies the injector pulsewidth according to inferred manifold pressure. Advantage III provides access under the Returnless Fuel Pump heading to a Fuel Rail Pressure table. The description states that the left column represents RPM and the right column represents rail pressure. I suspect the left column represents pump fuel flow in pounds per minute for the engine.

I installed an electronic manifold pressure sensor and my electronic fuel pump controller varies the pump speed in an attempt to maintain a constant injector delta pressure (currently set to 39 psi) and I changed the right column to that.

Adjusting injector parameters (continued)

As previously mentioned the injector dynamic flow chart can be represented by two lines of different slopes.

The high slope represents the linear portion of the injector flow and the low slope represents the non-linear portion at the lower operating limit of the injector. The breakpoint identifies to the PCM where the high and low slope intersect.

Increasing the high slope to lean the AFR without changing the low slope and breakpoint shifts the low slope toward the y axis.

If it is desired to maintain the same low slope intercept with the x axis the breakpoint must be increased.

If it is desired to maintain the same breakpoint the low slope must be increased. It is likely that both the breakpoint and the low slope will have to be adjusted to achieve the desired low and high flow characteristics.

The maximum value allowed for the low and high slope is .030 pounds per second so I changed the low slope to that and the high slope to .029 lbs/sec. I also increased the breakpoint by the same factor as the slopes to .0000586. The results for a commanded lambda = .99 were disappointing:

MAF Ad Ct .... lambda
... 160 ........... 1.02
... 190 ........... 1.07
... 225 ............. .88
... 265 ............. .89
... 300 ............. .79
... 330 ............. .77
... 350 ............. .77
... 420 ............. .71
... 460 ............. .68

Join the Elite Explorers for $20 each year.
Elite Explorer members see no advertisements, no banner ads, no double underlined links,.
Add an avatar, upload photo attachments, and more!

Reverting to MAF transfer function modifications

I've tried:
1. Altering the engine displacement from 4 times actual to 1/4 actual
2. Altering the fuel injector slope and breakpoint multipliers
3. Altering the fuel rail pressure table.
None of the above resulted in an AFR leaner than 12.5:1 when commanded lambda was .99 (14.5:1) and the airflow was greater than 300 MAF AD counts. I could lean the AFR by reducing the actual injector delta pressure with the electronic fuel pump controller but the spray pattern is optimized for 39.15 psi so I want to maintain that pressure. I've decided to revert to altering the MAF transfer function for now.

Since my fuel system with the electronic fuel pump controller acts like a return type fuel system I made the following changes:
1. Injector Comp for pressure = 0
2. Fuel injector breakpoint multiplier = 1 for all delta pressures
3. Fuel injector high slope multiplier = 1 for all delta pressures
4. Fuel injector low slope multiplier = 1 for all delta pressures
5. Fuel rail pressure = 39.15 for all fuel flows

I used the Deka IV specified fuel injector breakpoint (.00003363) but increased the fuel injector high slope to .0185 and the fuel injector low slope to .02 to reduce the magnitude of the changes to the MAF transfer function.

The manifold volume is another calibration constant. I think it is used by the PCM at engine start because the MAF sensor has not measured that amount of air that is in the intake system. I think it may also be used when there is a rapid increase in TP count (tip in) to decrease the response lag. I assume it is the volume from the throttle plate to the head intake ports. I estimated the volume of the blower manifold (minus the volume of the intercooler), the blower, the plenum and the main intake tube from the plenum to the throttle plate and increased the stock value of 2.5L to 6.5L.

The previously posted base fuel table (indexed by TP relative and RPM) has no value below TP = 100. The PCM interpolates between index values but when the actual value is above the max or below the min it uses the max or min (as appropriate) value in the table. Therefore, with my base fuel table the commanded lambda would be .992 for all TPs less than or equal to 100 and RPMs less than or equal to 3,000. To gain better resolution and variation I created a new base fuel table for low to medium airflows:

With the above table for any TP less than or equal to 300 the commanded lambda decreases as the RPM increases from 750 to 3000. Then using past datalogs I estimated airflow vs MAF AD counts to achieve commanded lambdas.

I entered a min count of 100 which is less than I expect to ever encounter. Up to 600 counts I entered counts in multiples of 25 to gain better resolution and simplify adjustment calculations. Above 600 counts I entered multiples of 50. Advantage III has the capability to graph the entered values.

The graph appears relatively smooth but it is difficult to tell because of the large range of values. I used another utility to plot the values up to 550 counts to identify irregularities.

I performed a datalog while driving normally and never exceeding a TP relative of 150. Then I extracted the commanded lambda and actual lambda for various MAF AD counts and divided the actual lambda by the commanded lambda to get a multiplier for the airflow. I live in the foothills so it was difficult to find data points where the airflow, engine speed and vehicle speed were fairly constant.

MAF AD count .. Cmd .. Actual .. Mult
.... 137 ............1.00 ... 1.05 ... 1.05
.... 145 ............. .99 ... 1.02 ... 1.03
.... 150 ............. .99 ..... .99 ... 1.00
.... 185 ............. .99 ... 1.025 . 1.03
.... 190 ............. .98 ..... .955 ... .97
.... 250 ............. .96 ..... .96 ... 1.00
.... 260 ............. .97 ..... .97 ... 1.00
.... 265 ............. .97 ..... .88 ..... .90
.... 290 ............. .95 ..... .98 ... 1.03
.... 300 ............. .96 ..... .94 ..... .98
.... 315 ............. .96 ..... .90 ..... .98
.... 325 ............. .96 ..... .91 ..... .94
.... 340 ............. .95 ..... .94 ..... .99
.... 350 ............. .96 ..... .91 ..... .95
.... 380 ............. .94 ..... .94 ... 1.00
.... 390 ............. .95 ..... .915 ... .96
.... 410 ............. .94 ..... .92 ..... .97
.... 420 ............. .93 ..... .93 .... 1.00
.... 440 ............. .93 ..... .90 ..... .96
.... 450 ............. .92 ..... .89 ..... .96
.... 500 ............. .92 ..... .90 ..... .98
.... 530 ............. .91 ..... .87 ..... .95

Then I applied the multipliers to the associated #mass /tic. Multipliers greater than 1.00 richen the AFR and multipliers less than 1.00 lean the AFR. Here's the grid with the revised values for MAF AD counts from 0 to 525.

The plot shows some irregularities at 275, 300 and 450 MAF AD counts.

Click here to post comment on the discussion thread

Not open for further replies.