I'm going to describe the symptoms with a very short history, some preliminary theories ( based on past work I've done on this car ), the data I've gathered and what, if any, conclusions I might draw from that data. The car is a 98 Mazda 626 GF 2L ATX . This is a European model.
Symptoms
The car had been idling rough, at about 650rpm, which would get significantly worse under load, and it would sometimes ( rarely ) stall at lights. I verified that there were no air leaks, and that fuel trims were normal, so I decided to adjust the idle air screw until it was idling at 750rpm. Once it hit 750, the idle smoothed out, however, any load put on the engine at idle would significantly drop the idle and cause severe shaking. Other than this, there are no performance or drivibility problems that I can detect. The car gets ok, but not great, gas mileage and has plenty of power.
After fixing allot of different things on this car, some needed and some not, I've came down to two theories, either a wonky camshaft sensor or a wonky IAC.
Data
So I decided to gather the following data with my scan tool, and with a Hantek 1008C scope. I'll make a note now that I'm a complete novice with a scope, and the Hantek is on top of that a pretty cheap one.
The first thing I pulled up was the O2 sensor and fuel trims at idle and just let it run a few minutes. The only load during this time is the radiator fan occasionally coming on.
The thing which really stands out to me here is the lack of consistency in the LTFT. Even though it's in the normal range, it just seems to be wandering all over the place.
I then blipped the throttle twice and ran it at about 2k rpms for 20 seconds:
Everything seems pretty normal here, AFAIK.
So then I checked the RPM, MAF, IAC Duty Cycle and Spark Advance PIDs with my scan tool while simultaneously checking the the IAC PWM frequency with my Hantek scope:
The WSM says idle should be between 650-750 with MAF reading 2.2 to 3.1 g/s. At idle, the RPMs are slowly oscillating by about 20-30rpm, and the MAF reading between 2.3 to 2.6. The thing that really jumped out at me was the spark advance. It's supposed to be between 6 to 18 degrees at idle, and it's slowly bouncing between 0.75 and 2.75. I verified this with a timing light and tried unplugging the knock sensor, which had no effect. There aren't any knock related codes.
Next I started turning loads on at about the 41 second mark. Over about 2 1/2 seconds I turned on the brights, the rear defrost, the AC on high and finally put the car in drive with the parking break on.
As the loads are turned on, the timing advances to 20.5*, while the RPMs bottom out at 492 before recovering to 736. As the RPMs recover, the timing bottoms out to -2.5*, then recovers to 17.5* as the RPMs drop to 597. As the IAC duty cycle slowly increases to about 53% over ten seconds, the timing backs off until it's slowly rolling between about 6.25* and 8.5*.
The same scenario plays out when I turn the loads off; the RPMs recover to about 840 and the bottom simultaneously drops out of the timing hitting -3.5* before recovering to 2.5* as the IAC slowly backs off.
While I was collecting this data via the scan tool, I was also monitoring the IAC PWM signal with the Hantek. While the scan tool showed the IAC duty cycle PID at 28.5 during no load idle, the scope showed a frequency of about 1.5kHz and a duty cycle of about 33%. When the PID showed a steady 53.91% duty cycle under the loads, the scope showed it oscillating quickly between 574-604Hz and 65% to 67%. You can view a three minute recording of this data being gathered here.
I also took a look at the camshaft signal on the scope. Idling at 750rpm the camshaft spins at about 6.25Hz. While the waveform I saw on the screen seemed OK, the frequency measured by the scope was all over the place, from 5hz up to a few hundred hertz. When I took this screen shot it was at 44Hz:
Not sure if there is actually a problem there, if it's just an error in how I'm measuring, just noise or the scope itself. I'm of course also wondering if my scope IAC measurements are reliable.
In addition I scoped the ignition ( waste spark ) and saw to the best of my knowledge good sparks with 2ms burn lines and nice oscillations at the end.
So that's my data. There are two codes, both of which are very intermittent and may take from a few days to a few weeks to reappear after being erased. The first is P1500, which is for the VSS sensor. However, there isn't any VSS on this model, and I assume it's getting the data from the ABS wheel speed sensors. The other code is P1632, which is equivalent to P1633 on the US models. The 97 EU WSM doesn't have much useful to say, but the 2001 US manual says:
The PCM monitors the voltage of KAM terminal at PCM terminal 55. If the PCM detected B + battery positive terminal voltage is below 10 V for 20 seconds, the PCM determines that the KAM voltage circuit has malfunctioned.
If I clear the codes and run the KOEO and KOER self tests they always pass, and everything that's listed to check for "Low, Rough Idle" in the WSM checks out OK.
In the past year or two I've replaced the plugs, coil pack, injectors, fuel pump, battery, alternator, water pump and timing belt, TSS sensor, PCV valve grommet, four out of five engine mounts, O2 sensor. I've removed and cleaned the TB, IAC and EGR and seafoamed the intake. Backs of the valves are clean as a whistle, compression is good and cam to lifter clearances are in spec.
Conclusions?
Something is causing the ECU to severely retard the timing, and it doesn't seem to be the knock sensor. While the fuel trims are well within spec, something is causing the LTFT to kind of wander around in the 0 to -5% range at idle.
I was originally focusing on the IAC even though it passes a basic resistance test because of what seemed to be a fluctuating MAF reading and due to the report I linked above attributing these symptoms to a worn out IAC. However those timing and LTFT data have thrown me for a bit of a loop and now I'm not sure how to proceed.
Update Oct. 30, 2017
I started pursuing the P1632 / P1633 path and found a few posts on IATN linking it to rough idle in Fords and Mazdas. So I pulled out the PCM again to look at the connector and noticed some very slight moisture, almost like very light condensation on the facing surfaces of the PCM connector. That was the first strange thing, as the car is located in a desert area and has for sure never been driven through deep water.
Next I reconnected the PCM and started testing voltages and voltage drops with the key both on and off. B+ key off was 12.69, key on 12.29.
This is where things get wierd. The first thing I tried to do was backprobe the KAPWR pin 55 to verify backup power. However, I couldn't get any reading at all, so I turned on the key and checked pin 97 VPWR and found a slightly unstable reading going slowly between 12.08 to 12.16 volts. Voltage drop was 0.0645v. The five grounds, pins 24, 51, 76, 77 and 103 all showed 0.01 voltage drop with the key on and nothing with the key off. I noticed that when I turned on the ignition I got momentary voltage drop spikes on pins 76,77 of 0.047 and 0.03 respectively.
I then figured I'd try VAPWR again, and lo and behold there's first 12.25, then 12.55 volts on it. Tried wiggling around the backprobe pin and the harness, but it was stable. Then rechecked the grounds, came back and now nothing again. Turn the key on, and suddenly I've got 11.97 on KAPWR, with a VDrop of 0.34v. Turn key off, 0.019v on the pin, key on back to 11.97. Went back to check the VDrop on VPWR and see it's went up to 0.1v. Tried wiggling everything around, no changes.
I don't think I made a mistake in my back probing, I'm pretty sure that I saw what I saw, and I'm quite frankly confused.
Update Nov, 6th 2017
I connected a headlight to the VAPWR pin 55 and to each of the five groud pins, and the headlight drew 4.5 amps with no problem, and cycling the key didn't affect it at all. So as far as I can tell, there isn't any direct electrical problem with the back up power supply or any of the PCM grounds.
One other thing that just popped out at me for some reason. When I originally pulled the PCM harness about a month ago, and I didn't know the pin layout, I tested the voltage on all 104 pins in the harness. Other than VAPWR ( pin 55 ), two other pins had power, pin 5 which is the immobilizer COM pin, and pin 34 which is listed as Generator Output Voltage, ALTT. ALTT had 3.5 volts on it, and when I tested this time it showed something like 1.3 volts, IIRC. According to the WSM it should be less than 1 volt with KOEO, and 4 volts at idle. It didn't list a value for the key off, but I would assume it should be zero with the key off.
Maybe there's something going on with the alternator or it's wiring that's causing all this? It's a Mitsubishi P-D style alternator which is controlled by the PCM, and I had to replace it last year. I replaced it with a refurbished junkyard one.
I also just replaced the IAC with an aftermarket one from AIP. Checked the resistance before installing it to make sure it was in spec. Reset PCM. Base idle was at 850 after installing it so after a few drive cycles I closed the idle air bypass screw until it got down to 750.
Seems like direct cause of the rough idle is the engine not having enough power at idle to support the extra load because of the retarded timing. The million dollar question is still why the heck the PCM is retarding the timing down to almost 0*...
EDIT Dec. 18th 2017
OK, so I was able to record the O2 data on my Hantek scope and I uploaded the video here https://youtu.be/Lz5RxpkPlv0. This is one of those application where you can see the ignition signal in the O2 signal ( not sure why ).
I also recorded the https://youtu.be/1lEELRQ56I0 primary ignition waveforms. It's waste spark so you're seeing alternating cylinders on each spark. I watched it frame by frame and couldn't see anything that looked abnormal to my hobbyist eyes.
Still haven't gotten my harmonic balancer...