The Engine Control Module (ECM) uses sensors to monitor the operating conditions of the
engine. If any of the values read from the sensors is not what the ECM expects it
to be, the ECM will turn on the "Check Engine" or "Service Engine Soon" (SES-) light and
will store a Trouble Code in memory. These trouble codes can be retrieved later
from the ECM to guide you in diagnosing the problem.
The SES-light should always be on when the ignition
is "ON" and the engine not running. If the SES-light does not come on
under these conditions, than either the bulb needs to be replaced, you have short
somewhere, or you have a defective ECM.
The trouble codes stored by the ECM can be "read" from the SES-light by switching the ECM
to Diagnostic mode. To switch the
ECM to Diagnostic mode, two pins on the Assembly Line Diagnostic Link (ALDL) connecter
must be jumpered, the ignition turned "ON" and the engine must not be running.
The ALDL connector is located in the passenger compartment behind the small black
panel that also holds the cigarette lighter. After this panel has been removed, the
ALDL connector will be visible. Jumper terminal "A" to
"B" (or simply ground terminal
"B") to enter Diagnostic mode:
With terminal A jumpered to B, turn ignition to "ON" but do not start the engine. The
SES-light will now flash once, pause shortly, then flash twice in quick succession.
This is the method the ECM uses to "display" codes. In this case, it flashed code "12"
(1 flash, pause, 2
flashes):
Whenever the ECM is switched to Diagnostic mode, it will flash code 12 three times after
which it will flash all stored trouble codes. After all stored trouble codes have been
displayed, the ECM will repeat the process (so getting code 12 again means you have reached
the end of the stored codes list).
All possible codes together with a small explanation can be found below.
To see the code actually being flashed, click on the SES-light
below the code! You can switch the light off again by clicking on it for the
second time.
Code 12
Diagnostic Mode Active (ECM OK)
When the diagnostics terminal is grounded, the ignition turned on
and the engine is not running, the ECM will flash Code 12 three times.
If it's flashing this code while the engine is running (Field Service Mode),
then the ECM is not receiving any pulses from the distributor.
Code 13
Oxygen Sensor Failure
When the ECM detects there's no variation in the voltage sent by the Oxygen Sensor
during normal operation of the car, it wil set Code 13. Usually this means the sensor
is disconnected or it needs to be replaced. Also check for a sticking or misadjusted
Throttle Position Sensor.
Code 14
Coolant Sensor (low voltage)
The Coolant Sensor is actually a thermistor. The lower its resistance, the higher
the coolant temperature. The ECM will set Code 14 if the engine
overheats (temperature higher than 135°C/275°F for longer than 3 seconds),
or when there's a problem with the sensor.
Code 15
Coolant Sensor (high voltage)
Because the Coolant Sensor never has an infinitely high resistance, the measured
voltage should always be lower than the reference voltage. If the measured voltage is
the same as the reference voltage, a problem exists with the Coolant Sensor. The ECM
will set this code when it detects a problem with the Coolant Sensor (or when the coolant
temperature actually drops below -30°C/-22°F).
Code 21
Throttle Position Sensor (TPS high voltage)
Code 21 indicates a problem with the Throttle Position Sensor. Check for a sticking
or misadjusted TPS plunger.
Code 22
Throttle Position Sensor (TPS low voltage)
Code 22 indicates a problem with the Throttle Position Sensor.
Code 23
Manifold Air Temperature (V6 only)
If the ECM detects a problem with the MAT sensor (unusual low temperature reading),
it will set Code 23. Check all connections and replace the MAT sensor if necessary.
Code 24
Vehicle Speed Sensor
Code 24 indicates a problem with the VSS (ECM does not receive any speed pulses
while driving).
Code 25
Manifold Air Temperature (V6 only)
If the ECM detects a problem with the MAT sensor (unusual high temperature reading),
it will set Code 25. Check all connections and replace the MAT sensor if necessary.
Code 32
EGR Vacuum Control
Code 32 is by far the most commonly encountered trouble code. The most common cause
for this trouble code is a leak in the EGR vacuum lines. This code is often
disregarded since a malfunctioning EGR system seldomly has any effect on the car's
driveability, and only on the engine's emissions. It's also tremendously difficult
to diagnose the problem. If your car passes emission tests and is otherwise running
ok, it's often not worth the trouble trying to find the problem.
Code 33
Manifold Absolute Pressure (MAP) Sensor
The ECM will set code 33 when a problem with the MAP sensor is detected (unusual
low vacuum/high pressure). Check the vacuum hoses from the MAP sensor. Check all
connections and replace the MAP sensor if necessary.
Code 34
Manifold Absolute Pressure (MAP) Sensor
The ECM will set code 34 when a problem with the MAP sensor is detected (unusual
high vacuum/low pressure). Code 34 usually indicates a defective MAP sensor. Check all
connections and replace the MAP sensor if necessary.
Code 35
Idle Speed Error
The ECM will set code 35 when the engine speed is 75 RPM above or below the correct
idle with closed throttle. This condition must be met for at least 45 seconds before
the code is set. If idle speed is too high, check for vacuum leaks. If idle speed
varies up and down, your engine might be running too lean (high air/fuel ratio). Check
for low fuel pressure or water in fuel. If idle speed is too low, your engine might
be running too rich (low air/fuel ration). Check for high fuel pressure or leaking/sticking
injectors. Also, check all connections to the IAC and replace the IAC if necessary.
Code 42
Electronic Spark Timing
The ECM will set code 42 under the following conditions:
The ignition module will ground terminal B4 (EST) on the ECM when the system is
(supposed to be) running on the ignition module. If this does not happen
(ECM is seeing a voltage on terminal B4), the ECM will set code 42.
When the RPM for Electronic Spark Timing is reached (400 RPM) a by-pass
voltage will be applied to the ignition module, and the ignition module
should no longer ground EST. If it still does, the ECM will set code 42.
There are several reasons any of these conditions can occur. The most obvious
is a faulty ignition module. Check all wires coming from the ignition module.
Also check your sparkplug wires. Because a high voltage is applied to the sparkplug
wires, there could be electro-magnetic interference. Replace sparkplug wires or
try rerouting them.
Code 44
Oxygen Sensor - Lean Exhaust
The ECM will set code 44 when the ECM detects a low voltage from the oxygen sensor
and the system is operating in Closed Loop (conditions must exist for longer than
20 seconds).
Check the wires of the oxygen sensor, making sure they are not in contact
with the exhaust manifold.
Check the oxygen sensor and replace if necessary.
Check the MAP sensor. If the ECM detects a higher than normal vacuum then this will
cause the system to go lean. Disconnect the MAP sensor. If the lean condition goes
away, then a problem exists with the MAP sensor.
Check for lean injectors.
Check for fuel contamination (specifically for contamination with water).
Check fuel pressure. If pressure is too low, the system will be lean.
Check for exhaust leaks. An exhaust leak can cause air to be pulled into the exhaust
and past the sensor.
If you have spark knock, check the EGR system.
Code 45
Oxygen Sensor - Rich Exhaust
The ECM will set code 45 when the ECM detects a high voltage from the oxygen sensor,
throttle is applied and the system is operating in Closed Loop (conditions must exist
for longer than 50 seconds and engine must be running for at least 1 minute).
Check the oxygen sensor and replace if necessary.
Check fuel pressure. The system will go rich if the fuel pressure is too high.
Check for rich injectors.
Check for leaking injectors.
Check for fuel contamination (specifically for contamination with oil).
Check for proper ignition module shielding. If the ignition module is not properly
shielded, the ECM might mistake the electro-magnetic interference for reference
pulses, causing too much fuel to be delivered to the system.
Check the canister purge for fuel. If full, check canister control and hoses.
Check the MAP sensor. If the ECM detects a lower than normal vacuum then this will
cause the system to go rich. Disconnect the MAP sensor. If the rich condition goes
away, then a problem exists with the MAP sensor.
Check for leaking fuel pressure regulator by checking the vacuum line to the
regulator for fuel.
Check TPS. An irregular TPS output will cause the system to go rich due to a false
indication of accelerating.
Code 51
PROM Failure
Reseat the PROM. If the problem remains, replace the PROM.
Code 52
Fuel CALPAK (V6 only)
Faulty or missing CALPAK. Reseat the CALPAK PROM. If the problem remains, replace the
CALPAK PROM.
Code 53
System Over Voltage (V6 only)
The ECM will set code 53 if the system voltage is higher than 17.1 Volts for at least
2 seconds. Check the charging system.
Code 55
ECM Failure
Check all ground connections of the ECM. If all are ok, replace ECM.