Introduction to code reading
An introduction to code reading and vehicle systems analysis

Electronic fuel injection and ignition systems on modern vehicles have a computer (called an ECM) to provide the proper control of the fuel-air mixture. The ECM works by measuring many different characteristics of the car, then, using this information, it calculates the correct quantity of fuel, the time of the fuel injection and the time for the ignition spark.

Because it works so quickly the calculation is done for each cylinder and firing stroke separately no matter what speed the engine is doing!

The main purpose for this degree of control is to achieve the best engine power output with the lowest possible exhaust gas emissions of the two poisonous gasses, carbon monoxide and unburned fuel (hydrocarbons).

Electronic fuel injection and ignition are much more reliable than the equivalent mechanical systems of carburettor and contact set ignition. These older methods required regular and frequent maintenance to keep the car "in tune". However, life is not so simple! The increased reliability is offset by a dramatic increase in complexity and in the number of components needed to keep the ECM in touch with the car ... these components are the SENSORS used by the ECM to measure the operating conditions on the car. For example, the ECM needs to measure the accelerator pedal position to "know" how fast the driver wants to go. The engine speed and engine angle are used to work out when and where the sparks are needed.

The ECM is a computer, like any other you could buy from computer store, but instead of a keyboard it has SENSORS as inputs and instead of a TV screen, it has ACTUATORS. These are the output of the computer; for example the ECM controls the fuel injectors by opening and closing them for a few thousandths of a second; during this time fuel is sprayed into the inlet manifold (near the inlet valves) in the exact proportions required for efficient combustion. The ECM also controls the engine's idle speed with the excitingly named "idle speed control valve"!

Sensors are prone to failure mainly due to being exposed to the harsh engine environment where harness connections can easily deteriorate over a few years. If this kind of fault occurs the ECM can be misled by the information being sent from the sensor, this results in the wrong quantity of fuel or timing for the sparks. Soon the car allows too much of the wrong exhaust gasses to escape, becomes difficult to drive, or even does not start at all.

The ECM is able to detect faults in sensor signals by comparing the value with a range of values that are programmed by the designer of the ECM. If a signal is outside the expected range then something is wrong! The ECM does not "know" what exactly is wrong but it can sense that the signal is not in the range it expects to receive. This detected fault is stored as a code number in the memory of the ECM and it is this code that is known as a "fault-code". ECM designers have built-in a limited number of such fault-codes into most modern systems. Each manufacturer has a different coding system and a different way of reading the codes, but they have some basic similarities. Somewhere on the car's harness (usually under the bonnet) is a Diagnostic Socket that connects directly to the ECM, by connecting a second computer to this socket we can send messages back and forth between the two computers and read the stored codes.

A simple code reader will show only the two or three digit code numbers which you then need to look up in a book to find out what they mean. A more sophisticated code reader does much more, by READING, CLEARING, ACTUATOR TESTS, and COMPONENT TESTS.

We are able to READ CODES and display the meaning of each code for example if the coolant temperature sensor is faulty then on some Bosch ECMs the fault-code stored is "15".

The more advanced code reader shows the following display:

15 COOLANT SENS

VOLTAGE LOW

When this problem has been corrected (perhaps by replacing the sensor) the stored fault code (15) must be removed from the ECM, otherwise the ECM will still think something is wrong. This is what the CLEAR CODES function is for. After clearing codes, the engine should be started and a final check for any stored fault codes made, just to be certain that nothing else has occurred.

The ACTUATOR TEST feature is a method of testing the ECM outputs when the engine is turned off. For example to test the injectors involves sending a signal from the code reader to trigger a special program in the ECM that, in turn, causes the injectors to open and close every second. The injectors can be heard quite clearly 'ticking' like a clock every second. With this we have clear proof that a signal is able to reach the injectors, we DO NOT KNOW if the injectors are blocked or gummed, so we do not know if any fuel can get into the engine...there are other ways of testing for that.

The final group of tests are COMPONENTS, (this is another way of saying sensors) where we can show the voltage, time or angle of various sensors that provide input to the ECM.

Remember two important things ... one ... the ECM can only measure what is happening to the car using the sensors it is connected to. If there is no sensor it cannot be measured. This may seem obvious but some people seem to think computers are all-powerful.

And two, the ECM calculates the value that we display, the code reader is NOT connected directly to the sensor. The display you see is what the ECM "thinks" is the correct value. So when you see Coolant Temperature 79oC and the engine is stone-cold you know something is wrong, but the ECM doesn't. This is a vital point to understand about code-readers that connect to the diagnostic socket; they can only display what the ECM is programmed to show and what the ECM calculates from its inputs.

Steve Davies

February 1997