I logged some test data to try and help me figure out why my 98 Mazda 626 GF 2L ATX has a rough idle and is suffering from hesitation.
(Speed k/h),(TPS_v),(MAF g/sec),(RPM),(SparkAdvance),(EngineLoad),(ST_FuelTrim)
There are a few things standing out to me, regarding spark timing, engine load and fuel trim.
First off, this car has a single ECU controlled ignition coil. Every time I press on the gas ( TPS_v is green ) the ECU retards the spark ( yellow line ), even taking it as late as -10 degrees TDC, i.e. 10 degrees after TDC. Basically, the ECU is retarding my timing by about 20 degrees if I do more than barely tap the gas, before recovering to more reasonable levels after a second or two. In addition, the WSM says spark advance should be between 6 to 18 degrees BTDC at idle. What I'm seeing is that at idle my spark advance seems to be bouncing around a lot, and even going negative sometimes.
I've checked the camshaft and crankshaft timing marks and they're dead on, and I've also check both the cam and crank position sensors and they're both within spec. My cam to lifter clearances are also all in spec, although there are three that seem to be wearing much faster than the others.
The other two things that seem strange to me are that the engine load at idle is around 17.5 - 20%, and that just revving the engine in park shoots it up to about 75%, which is the same amount it shoots up when trying to get going in drive. Additionally, every time I do more than just tap the gas my short term fuel trim shoots up to about 14%. I'm guessing both of these thing are likely connected somehow to the spark retardation I'm seeing.
I'm pretty sure this spark retardation is the source of my rough idle and hesitation. The million dollar question is why the heck is the ECU doing this to my spark timing? The only reason I could think of for it to do this would be overheating and pinging / detonation, but I'm pretty sure I don't have either.
EDIT
Let's assume the problem is with the knock sensor. So what's the nature of that problem? It would seem to me that since the spark timing is being retarded, that the knock sensor must either be giving false positives, OR something else could be generating a noise that sounds like a ping, but really isn't.
Since the ping sensor generates a/c voltage in response to "hearing* a ping, shouldn't I be able to diagnose it by just disconnecting it? As in, if the ECU doesn't get any voltage from the knock sensor, it will just use regular timing?
EDIT2
So I disconnected the knock sensor and the problem stay similar, although seemed a bit milder. However, when testing resistance between the knock sensor connector and ground I got nothing, basically no continuity, when I'm supposed to see 560 Ohms. So I'm guessing when the ECU gets no signal from the knock sensor it goes into some kind of spark advance limp mode. I'll probably see if I can find a sensor from a junk yard and stick it in.
EDIT3
So I went ahead and looked at the O2 sensor like Zaid and Fred wanted and it looks like there is probably a failure there as well. One thing to note, is that I'm only getting about 15 data samples per second, or one every 75 milliseconds.
Basically, the O2 stays pegged to zero volts at idle, yet both LTFT and STFT are also zero. Strange, if the sensor is reading that lean, then the STFT should be way up!
Then I figured I'd see what happens if I rev the engine for a while to see what happens:
As I rev the engine at 2300 rpm, the O2 voltage starts slowly climbing, but still with no oscillation! Then, after a few minutes, boom, the engine bucks and I see my STFT spike from zero to 54%. And up flashes a P1131 DTC:
Code: P1131 - Lack of HO2S11 Switch Sensor Indicates Lean
Status:
- Pending - malfunction is expected to be confirmed
Module: On Board Diagnostic II
Diagnostic Trouble Code details
HO2S11 not switching correctly. Sensor indicates lean.
Air leaks at the exhaust manifold
This DTC may be caused by :
Low fuel pressure.
Manifold vacuum leak.
HO2SHTR11 Heater Circuit Malfunction
The Hayens manual says the O2 sensor has to reach 600F degrees before it starts giving a signal. So I figured I'd do another test. I had previously measured the exhaust ports which were all around 300F give or take 50. So I ran the engine at 4k rpm for about nine minutes and then ran out real quick to measure the exhaust temp:
(Closed_Loop),(ECT),(LTFT),(FuelPW),(RPMs),(O2S11_V),(STFT)
So, the exhaust temp got up to 750F, and I figure the increasing voltage is related to that, as the voltage starts dropping as the exhaust starts cooling. But more important is the first PID in that image - Closed_Loop, which never goes from OFF to ON.
EDIT4
So just to be sure it wasn't a wiring or ecu problem so I decided to test the lambda sensor directly with a multimeter. I tested the resistance on the heater element wires and it's exactly at spec at 6 Ohms. I then ran the engine for a few minutes at 4k rpm to heat up the sensor and tested the voltage and it didn't switch at all, just stayed pegged around 0.01 volts.
One thing I noticed is that the engine ran exactly the same with the lambda unplugged as with it plugged in.
EDIT5 - The Lambda was defective
So the O2 sensor was bad, and now my ignition timing is much better. It still seems a bit unstable at idle, but it seems to track RPM much better now and is pretty much constant at higher RPM: