05-07-04, 02:44 AM
I've had a consistent problem where acceleration is balky right after startup. Once the coolant temp gets up to about 120 degrees, the problem seems to go away. This has been going on as long as I've had the car. It's not a really bad problem, just a bit annoying. I've replaced the fuel pump and fuel filter, fuel pressure is good, FPR checked OK when we did the pump, air filter is recent, I believe the plugs and wires were replaced at 100K. Anything I might have missed?
As a suggestion I would check the vacuum hoses coming off the back, right side of the intake. I have the engine out of my 97 right now. The vacuum hose I mentioned were cracked and very deteriorated, the screws/bolts holding the intake down were also loose on one end and the intake gasket seals were pretty much hard and didn't look like they were sealing anymore which would lead me to believe I had a vacuum leak as well.
Bbob can confirm this but when the engine is cold below some temperature threshold the PCM/engine is not in what is called closed loop control. Closed loop control is where the PCM is monitoring the O2 sensors and try to maintain a fuel mixture to achieve a oxygen to fuel ratio of around 14.7:1.
The PCM controls the fuel injectors by using signals from the engine sensors, like MAP, MAF, RPM, ECT, and maybe some others I've forgotten, to pick out the right value from the right lookup table to use in the fuel injector pulsewidth calculation. The PCM injector pulsewidth calculation also uses the INT and BLM correction factors based on O2 sensor feedback when it is in closed loop. O2 sensor correction is not used in open loop.
Note that there are 2 kinds of open loop. Right after a cold or hot start, a scan tool will report that the PCM is using open loop fuel control. This version of open loop is described in the next section. Once the PCM decides that conditions are right, it switches to closed loop fuel control, which is described below the open loop discussion. But even after this switch, if you lean on the throttle hard enough, the PCM will switch to power enrichment (PE) mode, which is another form of open loop. In PE mode the scan tool may report that the PCM is in closed loop, but it should also report that learning is disabled. Learning disabled means that the PCM is ignoring the O2 sensors, which is the same as saying that the PCM is using a version of open loop fuel control.
AFR: air/fuel ratio. The AFR lookup table is where the PCM looks to decide on a base injector pulsewidth when the PCM is in open loop. If you react automotive gasoline and air in a laboratory, you'll find that the reaction uses up 14.7 units of air for each unit of gasoline. So the "stoichiometric" ratio of air to fuel is 14.7 to 1, which is sometimes written as 14.7:1, and typically abbreviated as 14.7.
Note that this is the ratio of masses (which is the same as weight if you're not a physics purist) of air and fuel, not the volume. Fuel density (the weight of a particular volume, say 1 gallon) does not vary very much (IOW, it cannot be easily squished), but air can easily be compressed, so its density can vary a lot. This is why the MAF, or mass air flow sensor, is so cool. <soapbox> Unlike speed density (SD) systems, which must estimate the mass air flow based on MAP and IAT, the MAF measures the mass of the incoming air directly, which gives it a much better chance of calculating the right pulsewidth than the SD system.
O2: O2 is the chemical symbol for oxygen, but in PCM-land it refers to the signal from the oxygen sensors. In theory, if the engine got exactly the right amount of fuel for the air that it inhaled, and if the engine managed to burn every last molecule of fuel, the O2 sensors would read 450 mV. A rich mixture results in O2 numbers above 450 mV, and a lean mixture produces O2's below 450 mV. The PCM watches the signal from the O2 sensors to find out if the engine is currently running rich, or lean, or 14.7 exactly
When the engine/coolant is cold and below the closed loop transition setpoint fuel is added or controlled by programmed fuel table that are looking at number of different sensors, like, throttle position, MAP, coolant temp, ambient/intake temp and probably the MAF sensor to name a few. Based on these input values the PCM has a programmed PWM signal to pulse the injectors to achieve a desired fuel ratio to have the motor run and not balk and/or backfire when it's below the closed loop setpoint.
The PCM needs a lot of lookup tables to find the right numbers to use in fuel and timing calculations. Lookup tables are kind of like a translation dictionary. The "input" to the translation dictionary is the English word, and the output is that word translated into another language. The input and output may not look at all alike, but they are definitely related by some rule. The input to a PCM lookup table is always the signal from an engine sensor, and the output always controls some aspect of engine operation, like injector pulsewidth or ignition timing.
One-dimensional tables use the value of one sensor input, such as ECT, to find the right number, such as power enrichment, for some calculation. My kPa to vacuum conversion table at the top of the Units (http://www.noid.org/~lj/PCM%20Tutorial/Units.htm) page could be thought of as a one-dimensional lookup table with kPa as the input and vacuum as the output. But kPa and vacuum have a fixed mathematical relationship - meaning that you can get from one to the other with a formula that works for all values. The PCM uses tables when it can't use the same math formula to get from all of the inputs to their corresponding outputs.
Two dimensional tables use two sensor inputs, such as MAP and RPM, to point to the right number, such as VE, for some calculation. A two dimensional table is like a spreadsheet - the two inputs choose the particular row and column, and the value in the cell corresponding to that row-and-column pair is the output.
If you were to have a vacuum leak of some sort the the engine is receiving more air through another source other than the Throttle body and it's not able to correct for this until it's in closed loop control. When the motor is warm and in closed loop control, if you were able to monitor the BLM (Block Learn Multiplier) tables you could see if the PCM was trying to compensate for any added air.
BLM: The block learn multiplier, aka long term fuel trim, is a value the PCM stores to adjust the injector pulsewidth based on accumulated (or "learned") oxygen sensor feedback. BLM's usually change fairly slowly, if at all. The PCM limits the range of BLM from 108 to 160. Here's a frequent source of confusion: A BLM of 128 means that the PCM is calculating the right injector pulsewidth. A BLM below 128 means that the PCM has to take out fuel to get the mixture right (the PCM calibration is too rich). A BLM above 128 means that the PCM has to add fuel to get the mixture right (the PCM calibration is too lean).
One way to remember which is rich and which is lean requires that you can remember that 128 is ideal. You get numbers less than 128 by subtracting - when the BLM is less than 128, the PCM is subtracting fuel. You get numbers above 128 by adding - when the BLM is above 128 the PCM is adding fuel.
Bbob I hope I didn't do to bad of a job of explaining this.
I'm sure I left a number of things out but hopefully you can get an understanding of a few of the things that the PCM does to make these engines run.