CSCI 222 Project 1 Documentation
Automotive
Starting Diagnostic Application
Written by John Kimpel
Introduction:
Have you ever walked out to your car in the morning
to drive into work only to turn the key and determine that your car won’t
start? What could be wrong? You may ask yourself; did I leave the lights
on? This program is designed to help
determine just what may be wrong with you vehicle by asking the user some simple
questions, and then recommends a coarse of action to take in order to correct
the problem.
This system was designed to trouble shoot problems
that are fairly simple, this may be debatable based on a users previous car
maintance experience, that a user could fix in there garage at home with a few
tools that may be purchased at any local store.
Background and References:
The solutions for this expert system are based wholly
on my knowledge and experience of automotive systems. I have spent a considerable amount of time trouble shooting and
repairing vehicles.
The basic items needed in order to get a vehicle to
start are a combustion camber, some sort of mechanism to turn the engine, air
and fuel to burn, and something to ignite the air fuel mixture. All of my solutions in this program deal
with how these elements come together in order to make a vehicle start. As stated earlier I manly deal with items
that are easily replaceable in a home garage.
This resulted in many problems lumping under taking your car to a
mechanic. Below is an introduction to
the basic systems that I have addressed in my program.
Battery: This is the part of a vehicle that stores the
power that is required to turn the engine and create a spark.
Battery Cables: This is a set of wires that carry the power
from the battery to the starter and the rest of the engine. These cables usually fail due to corrosion,
which interferes with the energy flow from the battery.
Starter: This is a mechanical device, an electric
motor, that uses power from the battery to rotate the engine.
Coil: An electronic component that takes the
twelve volts coming from the battery and converts it to a much larger voltage.
Coil Wire: A wire which caries the voltage
from the coil to the distribution or computer controlled ignition points, which
then distribute the pulse to the correct spark plug wire.
Spark Plug Wires: A set of wires that caries the
electronic pulse from the distributor or ignition points to the appropriate
spark plug.
Spark Plugs: A set of electronic components
constructed of insulators and conductors. These spark plugs create a short between a spark point and a
conductor. This short creates a spark
that ignites the air fuel mixture.
Fuel: Also refered to as gasoline (petrol to
our friends across the Atlantic). If
you don’t know what this is give up now.
Fuel Lines: Tubes usually metal that carry fuel
from the fuel tank to the engine.
Fuel Filter: A filtering device located
somewhere between the fuel tank and engine.
Used to eliminate impurities from the fuel.
Fuel Pump: A motor, electric in most newer
vehicles, that pressurizes the fuel system this is what moves fuel from the gas
tank to the engine.
Other Peoples Work:
As a reference I looked at an example program that
was on the class web site called auto2_clp.
Unfortunately I was unable to find it again on the web site at a later
date. This system must have used some
programming in LISP because clips did not like a lot of the functions he tried
to use. His system did give me some
ideas, but was more focused on an engine running incorrectly instead of it not
starting.
What I did:
I began my expert system by making a list of all the
problems I have encountered that caused one of my cars not to start. I then tried to categorize them into
different systems and then determine how I could decide with the least number
of questions which category to try to search.
This proved to be hard since a lot of completely different problem could
appear to have the same symptoms. So I
decided to begin with the easiest and most common category and begin to eliminate
them. The hard part was deciding at
what point should problems be included in the solution space and which should
be dropped under take your car to a mechanic.
I decided to limit the solution space to problems that can be fixed
without any special knowledge of how a car works. This eliminated all timing problems, internal engine failures,
and all throttle body or carburetor problems from the solution space. While defining my rules I also thought of
additional problems that should be in the solution space. My big problem then resulted in ordering my
rules so they would follow my intent and trigger the easiest problem to fix
first.
I decided
to start with the categories I selected and work my way down through them. The first thing I began with was battery
problems since this is usually the cause of why most cars won’t start. This provided for a quick and easy stop for
most problems. If it wasn’t a battery
problem I decided that most common after that is starter. I actually could have stopped my system
there due to the fact that most people would only know how to go that far but I
decided that would be to small so I started looking for a little more obscure
things. In real world scenario it is
hard to say which is actually more prevalent fuel problems or ignition. I decided to go with ignition next because
most cars no matter how bad the fuel as long as they are getting some it will
start, and usually a person doesn’t all of the sudden have a fuel clog that
wasn’t manifest previously. As an improvement
for future additions that may be something that could be worthwhile, to ask the
user questions about previous problem or symptoms of the car. I decided to start with the easiest for most
people to solve and then work to less likely things. I began with spark plugs wires.
Most often the ignition problem is here from them melting against an
exhaust manifold or other engine component.
After that I just began to work my way backwards through the ignition
system. I then went to the fuel system
and began asking questions about adequate fuel pressure at different points
along the fuel delivery system. This
may be above many users heads and I wasn’t sure if it should be included or
not. Based on the responses to the fuel
system pressures I determined what area the problem was in and then decided
what is in that area and how to fix it.
Solution:
I decided to implement a simple forward chaining
rule-based system. Since my whole
system is based on asking the user questions and deducing what the probable
cause was I thought this was the best approach.
Sample Run:

Do to whatever reason I
couldn’t get the editor to allow me to copy and paste my sample run so I just
took a screen shot of it. It originally
asks the user if they want to begin and then asks them does the engine turn
over. Once the user says yes the
program eliminates all battery related problems. After that it asks the user are there spark plug wires working,
and have they verified that the spark plugs are in correct working order. At this point it has eliminated all ignition
problems. It then asks the user two
questions about fuel pressure. It uses
these questions to determine where the problem is located in the fuel delivery
system. In this case it is suspected
that the problem is in the fuel pump.
Based on this it asks if the user has recently had the fuel pump
replaced. The answer was no and it said
that the fuel pump needed to be replaced.
An Example of a run that produces an error:
In the example show below an error occurred because
when the user was prompted to answer a question using 1 for yes and 0 for
no. The user entered a 2, which is not
a valid option so the program exited without giving an answer or asking any
other questions.

Limitations:
This program has many limitations that are forced
upon it by the complexity of the modern internal combustion engine and the
systems that go into helping it operate.
The size of an expert system to accurately diagnose all the different
problems that can occur in an engine would be huge. I focused primarily on those problems that can be fixed in a home
garage and are easy to diagnose.
Everything else I lumped under "take your car to a shop." My clips program doesn’t even begin to look
into computer control problems, blow engine components, or anything dealing
with the air delivery system. It is
also limited to my knowledge of how these different systems work together. I have spent a lot of time working on cars
but even I don’t know everything. The
biggest limitation with this program is the user. Different questions are asked about different parts of a
car. If the user doesn’t know what
these parts are or how to check them correctly at least half of the solutions
provided by this program are irrelevant.
Goodness:
I may be biased but I feel this program is really
good for basic small problems. I feel
that this program could diagnose a large percentage of problem’s, which cause a
car not to start. Almost every time I
have diagnosed why a car won’t start it falls into one of the problems this
program addresses.
Improvements that could be made:
The best improvement that could be made to this
system is to involved more components of a car. There are many systems in an automobile that could cause it not
to start and I feel that would be the best area to improve this program.