A Diagnostic Trouble Code (DTC) is set in a vehicle's onboard computer when a fault occurs in any monitored system. The code number corresponds to the type of fault, and can be used to diagnose the problem.
When an engine is running and the computer detects a problem in one of its sensor or output circuits, or even within itself, it will set a trouble code. In some systems, the trouble code number is retained in memory. In others, the trouble code is not stored but is regenerated when a mechanic runs the system through a special self-diagnostic test.
A trouble code will turn on the Check Engine Light (malfunction indicator lamp or MIL) to alert the driver the vehicle has a problem. To diagnose the fault, a code reader or scan tool is connected to the vehicle diagnostic connector to read the trouble code. Some tools display a definition for the code, while others show only a trouble code number. You then have to look up the definition of the trouble code number in a manual or a database to find out what it means. Listed below are links to "generic" OBD II codes and their definitions (codes that are common to all makes and models of vehicles). Vehicle manufacturers also use additional codes that are not in the generic code lists. These are called "enhanced" or OEM-specific codes.
On many older (pre-1995) vehicles, a trouble code can be read without a scan tool or code reader using a manual flash code procedure.
Once a trouble code has been found, the next step is to diagnose the fault.
NOTE: A trouble code by itself does NOT tell you which part to replace. You must diagnose the system, sensor and/or circuit to determine the fault before repairs are made or any parts are replaced.
Once you have a trouble code, the next step is figuring out why it set. Many codes are for systems, circuits or operating situations rather than individual sensors or other components, so additional tests are usually necessary to isolate and identify the fault that caused the trouble code to set. Scan Tool Companion is a computer reference program that can help you diagnose these kind of faults. It includes takes the information on this page to the next level and provides guidance on which PIDs to look at on a scan tool when diagnosing a code, what to check when you have a specific code, and often provides "good" values to look for. Scan Tool Companion also provides diagnostic guidance by vehicle symptom and by system.
The following tips don't cover all possibilities, but they may help you identify a problem more quickly:
There are two types of Oxygen Sensor trouble codes: O2 heater circuit codes and O2 sensor codes.
O2 Heater circuit related codes include P0036, P0037, P0038, P0042, P0043, P0044, P0050, P0051, P0052, P0056, P0057, P0058, P0062, P0063, P0064 & P0141.
O2 Sensor related codes include P0130 through P0140, P0142 through P0147, P0150 through P0167
The heater codes will set if a fault is detected in the O2 sensor heater circuit. The O2 sensor codes will be set if the O2 sensor readings remain low (lean), or high (rich), or do not change quickly enough, or do not change at all.
The O2 sensor reads unburned oxygen in the exhaust, and generates a voltage signal that is proportional to the amount of oxygen in the exhaust. The signal can vary from a low of about 0.1 volts up to a high of about 0.9 volts. A low voltage signal indicates a lean fuel mixture. A high voltage signal indicates a rich fuel mixture. The engine computer uses the O2 sensor's input to balance the fuel mixture during closed loop operation. A bad sensor may prevent the system from going into closed loop, and usually causes the fuel mixture to run rich causing an increase in fuel consumption and emissions.
A low voltage (lean) reading may indicate a bad O2 sensor, a vacuum leak, or a condition that allows unburned oxygen to enter the exhaust. Check intake vacuum at idle, and inspect vacuum hose connections. If okay, check for a misfiring cylinder, a burned exhaust valve that is leaking compression, or a leaky exhaust manifold gasket.
O2 sensor quick checks include watching the sensor's output voltage as the fuel mixture changes. Momentarily disconnecting a vacuum hose will cause a lean response from the O2 sensor. No change in the reading or a very sluggish response would indicate a bad O2 sensor.
NOTE: If you get an oxygen sensor code plus a random misfire code and a MAP sensor code, the engine probably has a serious vacuum leak.
A code P0171 or P0174 indicate the engine is running lean. This means there is too much air and/or not enough fuel. You can confirm the engine is running lean by looking at Short Term Fuel Trim (STFT) and Long Term Fuel Trim (LTFT). Normally, STFT and LTFT should be plus or minus 5 to 10 from zero. If STFT and/or LTFT are more than about +12, it indicates the engine is running lean. Negative numbers (-12 or more) indicates the engine is running rich.
A lean fuel condition can be caused by:
* Low fuel pressure due to a weak pump or leaky fuel pressure regulator. (use a fuel pressure gauge to check fuel pressure at idle)
* Dirty fuel injectors. (try cleaning the injectors)
* Vacuum leaks at the intake manifold, vacuum hose connections or throttle body. (Use a vacuum gauge to check for low intake vacuum)
* Leaky EGR valve. (Check operation of EGR valve)
* Leaky PCV Valve or hose. (Check valve and hose connections)
* Dirty or defective Mass Airflow Sensor (MAF). (Try cleaning the MAF sensor wires or filament with aerosol electronics cleaner. Do NOT use anything else to clean the sensor, and do not touch the sensor wires)
Rich codes include P0172 & P0175. Typical symptoms of an engine that is running rich (too much fuel, not enough air) are poor fuel economy, elevated emissions (Carbon monoxide or CO), and engine may have rough idle or surge condition.
Possible causes include a bad O2 sensor, excessive fuel pressure (bad fuel pressure regulator or plugged return line), leaky fuel injectors, dirty air filter or restricted air inlet, or a defective coolant sensor that prevents the engine management system from going into closed loop mode.
These include P0105, P0106, P0107, P0108 & P0109, and can be set if the MAP sensor output remains too high or too low (out of range), or the MAP sensor readings do not correspond to the Throttle Position Sensor (TPS) readings.
MAP sensors monitor changes in intake vacuum, which is a way of determining engine load. When engine load goes up, intake vacuum drops. Vacuum is highest at idle and drops during acceleration and wide open throttle.
The computer uses the MAP sensor's input to vary ignition timing and the fuel mixture. So a MAP sensor problem may cause drivability problems such as surging, poor fuel economy and performance.
MAP sensors either generate a voltage or frequency signal as engine vacuum (load) changes. Vacuum leaks can cause problems with the sensor's reading, so check for leaks and the sensor's vacuum connection to the engine.
How to check: a MAP sensor's voltage or frequency output should change when engine vacuum (load) changes. If you don't see a change, the sensor is probably bad and should be replaced.
These include P0120 through P0229, and can be set if the TPS readings are too high or too low (out of range), if the signal is lost, or if the signal does not correspond to the MAP sensor's readings.
The TPS sensor monitors the position of the throttle so the computer can add more fuel when the engine is accelerating or under load. The computer may also need to know when the throttle is at idle or wide open to control other functions.
A bad TPS can cause driveability problems such as hesitation. The sensor's resistance changes as the throttle moves, causing the return voltage signal to vary. Look for a change in the voltage output as the throttle opens and closes. No change or skips in the output would indicate a faulty TPS sensor.
Also note: the idle voltage is adjustable on some TPS sensors and must be set within specifications for accurate operation. If the voltage adjustment is not within specifications, it can adversely affect performance and throttle response.
Coolant sensor codes include P0115 through P0119, and can be set if the coolant sensor readings do not change as the engine warms up, if the readings are too high or too low (out of range), if there is no signal from the sensor, or if the engine overheats.
The coolant sensor monitors engine temperature. This is a key function because it allows the fuel management system to go into the closed loop mode of operation when the engine warms up. The computer also uses engine temperature to control other functions, too. A failure here can prevent the system from going into closed loop causing a rich fuel mixture, and an increase in fuel consumption and emissions.
A coolant sensor's resistance changes as the temperature increases. If you do not see a change in the resistance as the engine warms up, or the resistance is out of specifications, the sensor is bad.
Other things that can cause bad sensor readings include a low coolant level in the cooling system, a thermostat that is stuck open or shut, or a thermostat that has the wrong temperature rating for the engine.
CAUTION: Do not open the radiator cap if the coolant is hot! Wait until the engine and radiator have cooled to open the cap.
Misfires can be caused by worn or fouled spark plugs, a weak spark (weak coil, bad spark plug wire), loss of compression, vacuum leaks, anything that causes an unusually lean fuel mixture (lean misfire), an EGR valve that is stuck open, dirty fuel injectors, low fuel pressure, or even bad fuel.
A Random Misfire code often indicates a vacuum leak or bad gas.
If a misfire in a specific cylinder should lead you to check the spark plug, fuel injector and compression.