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.