I'll stick my nose in here since Steve W. is probably sleeping. There's well over 2,000 problems the Engine Computer can detect, and it will set a diagnostic fault code specific to that problem. Some refer to a defect in an electrical circuit. That could be for a sensor, or for something the computer operates. Fault codes can also be set for an undesirable operating condition, like running too lean or too rich, or "misfire on cylinder # 3". The computer monitors the fuel vapor recovery system for leaks too. That includes the leaking gas cap.
Of those 2,000 plus defects, about half of them refer to things that could adversely affect emissions. Those are the codes that turn on the Check Engine light. You can have any of the other half of the codes stored in the computer and the warning light will not turn on and you'll never know about them.
It's important to understand that the fault codes never say to replace a part or that one is bad. They only indicate the circuit or system that needs further diagnosis, or the unacceptable operating condition. When a part is referenced in a fault code, that part is actually the cause of the code about half of the time. First your mechanic will perform a few electrical tests to confirm the rest of the wiring and connector terminals are okay. When everything else has been ruled out, he will order a sensor or part if that is what the tests have pointed to.
The Engine Computer's job is to run the engine with the least emissions possible. Without its ability to detect problems and set fault codes, we wouldn't even know about the majority of the excessive pollution problems, and for engine running problems, we could spend dozens of hours just trying to figure out which circuit we need to diagnose. It does not monitor fluid levels, but in some cases it can detect a problem that is caused by a fluid issue. For example, a leaking fuel injector could cause so much extra gas to flood a cylinder that the gas runs into the oil. Later, that gas is supposed to vaporize and be sucked out to be burned, along with the gas that's supposed to be there. That high concentration of gas in the oil could result in the fuel / air mixture being too rich, which contributes to increased emissions. The computer can adjust a little for that, but if the mixture stays too rich, that's when the "running too rich too long fault code would be set. The code is set from watching the composition of the exhaust gas, not from there being too much gas in the oil. That's why fault codes only tell the mechanic what to start looking for. You still need his knowledge and experience to find the cause that was detected and set the fault code. The computer only narrows down the area the problem is in. The mechanic takes it from there to figure out exactly what is wrong.
I should also point out that there is always a long list of conditions that must be met for a fault code to be set, and one of those conditions is that certain other codes can't already be set. Some of those unacceptable operating conditions I mentioned are detected by comparing two or more things to each other. For example, the computer knows that when the engine has been off for more than six hours, coolant temperature had better be reported as the same as outside air temperature. If a fault code is already set for one of those sensors, some of the self-tests for the other sensor may be suspended because the computer knows the first one can't be trusted to be an accurate reference. Once the problem is repaired, the self-tests that were halted will resume.
Where many owners become frustrated is when they ignore the Check Engine light for a long time. A few of those 2,000 tests will be suspended. If a new defect develops in one of those circuits not being tested, the computer won't know it and won't set another fault code. When the customer finally brings the car in for the diagnosis, all the mechanic has to base his repair estimate on is the first fault code. You approve the repair based on that one fault code. Once the repair is completed, the computer resumes those halted self-tests, and that is when that second problem finally gets detected, and the Check Engine light turns right back on again. The mechanic is frustrated because he has to start the diagnosis all over again for a totally different problem. You're frustrated because you incorrectly assume he didn't diagnose the problem correctly or repair it correctly.
This could be comparable to you not feeling well. Your doctor performs some tests and finds you need heart bypass surgery. It isn't until that is done that you notice other symptoms. Your doctor has to start all over, and that's when he finds you have cancer. He didn't do anything wrong for the first diagnosis. He had to solve one problem before the next one became apparent.
Another problem can arise when the Check Engine light is ignored. Some problems have very minor causes but can turn expensive if not repaired right away. A good example of that is a misfire due to old, worn-out spark plugs. That will send unburned fuel and oxygen into the exhaust system. A little unburned gas is supposed to burn in the catalytic converter, then go harmlessly out the tail pipe as carbon dioxide and water vapor. When too much unburned gas goes into the converter, it overheats, then the catalyst material can melt into a glob that plugs the pipe. It will restrict the flow of exhaust gas, resulting in a severe loss of power, and it will stop cleaning the exhaust gas of excessive pollutants. That loss of catalytic converter efficiency is another of the many things the computer monitors. Replacing a catalytic converter is easily a $500.00 job that could have been avoided with a set of new spark plugs, . . . if the Check Engine light wasn't ignored.
For my final parting comment of great value, on most cars, the diagnostic fault codes in the Engine Computer can be erased by disconnecting the battery's negative cable for about half a minute, but that is not the goal. Erasing a fault code does not make the problem go away any more than throwing the newspaper away turns politicians honest. Rather, your mechanic needs to read and record those codes to know which circuit to diagnose. If someone erases them, that valuable information will be lost.
To add to the confusion, diagnostic fault codes can be set in many of the other computers on your car, and those are just as important to the mechanic so he will know where to start. Some cars as far back as '97 models could have up to 47 computers, but it's only the Engine Computer that turns on the Check Engine light. The Anti-lock Brake Computer and the Air Bag Computer each set their own fault codes and each have their own warning lights. Some other computers, such as for the heater and AC controls, don't have warning lights. We only know there's a problem by the symptoms you tell us about, then we start by reading the fault codes to know where to start, just like with any other computer.
If you'd like to see the types of things diagnostic fault codes in the Engine Computer tell us, take a look at this page:
You'll see that most of the codes on that first page have a sensor listed, but they never say the sensor is bad. Each code only explains why the computer is not happy with that circuit. The codes on these pages refer to 1996 and newer cars. Older cars set fault codes the same way, but much fewer things were monitored. Most of them had the potential to set just a few dozen fault codes.
Hope that helps with understanding what diagnostic fault codes do and what the Check Engine light is for. Steve W. will be back later to continue helping you solve your problem.
Wednesday, April 19th, 2017 AT 2:32 AM