Modded Mustang Forums banner

1 - 20 of 73 Posts

·
Registered
Joined
·
28 Posts
Discussion Starter #1 (Edited)
UPDATE: I have a working test version of the digital gauges, and I found a list of the Ford specific PIDs. See my later posts for pics of the experimental version.

ORIGINAL:
Hows it going everybody?

I'm currently working on replacing my instrument cluster with LCDs to display various engine parameters (I will post updates of my progress in this thread). The main reason I want to do this is because the stock gauges have absolutely no useful information on them other than "eh, looks about right..." The secondary reason is because I might try and stick a HUD in my dash, but thats another story. I am writing an Arduino program to communicate with an STN1110 chip which will pull data from the OBD-II port. This is basically the same thing as the MPGuino, but I will have multiple displays to show a bunch of stuff at once, which will completely replace the current instrument panel. And I'm not so worried about MPGs :D

Anyway, the thing is, most manufacturers (Ford included) only have a couple of standardized PIDs that you can get information from via OBD-II (speed, rpm, error codes, and a few others). For a list of standard PIDs, you can check out OBD-II PIDs - Wikipedia, the free encyclopedia, but I have read that most of these PIDs are not supported by Ford. Nearly everything about the car can be accessed via OBD-II, its just not standard across manufacturers, and the information about these non-standard PIDs is very hard to come by.

Which brings me to my point. I've not had much luck finding out anything about the Ford specific PIDs or how to access them (I'm searching for PIDs for my '03 mustang, so anything about the CAN interface does not apply). Without this info, I'm afraid the digital gauges will be restricted to very basic info. Can anybody help me out? It would be greatly appreciated!
 

·
Registered
Joined
·
669 Posts
Go here... UltraGauge Vechicle Gauge Lookup Utility and input the year/make/model and it will give you the most likely pids. I actually use this gauge in both my mustangs and hate driving a car without it now.

Some of the "available gauges" are not actually pid's but are actually equations based on the pids, but its a nice start for you.
 

·
Registered
Joined
·
28 Posts
Discussion Starter #5
@Rabid Stang:

While not exactly what I'm looking for, that is helpful! Thanks! Now I know what should be possible to get out of the car.

The crucial piece of information missing from that site is the hex addresses of the PIDs (or did I miss it?). Sadly, the ECU doesn't allow you to request parameters in a textual format. You have to send a series of hex values, then the ECU responds with hex values. The problem is I don't know what hex values to send for all the various parameters. So if anyone knows the hex values for PIDs specific to Ford vehicles (odometer, fuel level, etc...), please let me know!

Due to popular demand (gofastralph), here is how you request info from OBD-II.

First, you need a chip that is able to communicate with the car's ECU over the OBD-II port. As far as I can tell, the two most popular chips for this are the ELM327 (about $35) and the STN1110 (about $10), with the STN1110 being generally regarded as faster and more stable. You build a circuit for this chip (circuit diagrams are on the datasheets for each chip) and plug it in to both the OBD-II port and either 1) a computer or 2) a microcontroller such as an Arduino. Then you send simple commands to the chip in hex format, it sends it to the ECU and gets the response, and the chip outputs hex values for the results you asked for. You can check out the wiki page I linked to in the first post for a list of general PIDs (many of which won't work). The list does not have the ford specific stuff, so in reality if you knew all the PIDs unique to ford you could get info about what gear you were in, whether or not your seatbelt was unbuckled, if the door was shut or not, and like Rabid Stang said you can do math using a combination of different values to calculate stuff such as MPG and instantaneous fuel comsumption. Noteworthy is the fact you could store all the different error codes and descriptions on a microcontroller, so when the check engine light went off you could throw the error code up onto an LCD along with the full description of what the problem is. There is so much that could be done, the only limit is your imagination.

Anyway, as an example, to request the speed of the vehicle you would send:
01 0D
01 is the mode, and 0D is the parameter you want for that particular mode. Again, see the wiki page for more examples of modes and parameters you can request. An example of the resulting output would be something like:
41 0D 78
41 is the ECU saying it is responding to a request, 0D is letting you know exactly what value it is responding to, and 78 is the actual value you wanted (in hex). 78 in hex = 120 in decimal, and the vehicle speed PID happens to be in km/h. You just convert 120 km/h to mph (unless youre weird and like metric :dunno) to get your value!

To do a full set of digital gauges, you just request a PID, convert the results into a useable format, throw it up on an LCD screen, and repeat over and over for each parameter.
 

·
Registered
Joined
·
28 Posts
Discussion Starter #6 (Edited)
Update time!

So, I got myself an Arduino Mega 2560 ($65), a 16X2 lcd screen ($15), an STN1110 ($10), and all the components to wire up the circuit for the STN1110 ($15).

The first breakthrough was that I found a list of the Ford PIDs on the internet! There was no verification that the list was correct when I found it. It was just a list on some random website. One of my friends who has access to a bunch of technical info about our cars was able to verify that many things on the list were correct. We didn't check everything, but it seems that the list I found is accurate. I will be getting a complete list of Ford specific PIDs from him soon, so that I can compare it to the list I found!

I built the circuit for the STN1110 over the course of about 2 weeks (I had to reorder parts I forgot), and many of the components are available in surface mount chips only. These chips are about the size of the presidents ear on a dime, and there are 5 connection points on some of the chips! Soldering wires directly to them is impossible, so I had to etch my own circuit boards using hydrochloric acid + hydrogen peroxide to use as an adpater for the chip so I could run wires to it. The tiny surface mount chips are soldered to the adapter board, and wires are then connected to the board so that it can be hooked in to the circuit. Its quite a pain, but it finally got finished.

Last night I was up until about 6:30 am with one of my friends coding the program for the Arduino. We gave up because it was just not working properly. When I woke up this...uh, afternoon, I realized what we were doing wrong. I forgot to tell the STN1110 to begin communicating with the car! I had originally started communication between the Arduino and the STN1110, but forgot to then tell the STN1110 to start talking with the car lol. So after that was fixed, I tested it out, and IT WORKED!!!

So now I have an lcd sticking out of this huge mess of circuits and wires over my cupholders, and it displays the RPMs and the vehicle speed in MPH. Its completely uselesss right now because the circuits go sliding around whenever I go around a corner, so the next step is to order more LCDs and make a custom instrument cluster with them.

Stay tuned, more to come as I make further progress.
 

·
Registered
Joined
·
3,186 Posts
this thread is way over my head....just get some pics up so i know what your doing lol.
 

·
Registered
Joined
·
28 Posts
Discussion Starter #10
I have a couple pics of the circuit and LCD and whatnot, but every time I try to upload them it says the upload failed...any ideas how to get it to work?

Anyway, yes, I will be removing the stock instrument cluster. The goal is to move everything forward so that there is room in the dash behind the gauges. What I will probably do is make a new trim piece (referring to the piece that goes around the recessed area for the gauges and behind the headlight knob) that doesnt have the cutout for the gauge cluster, and I will attach the lcds directly to the trim piece where the gauges used to be recessed. That should give me a fair amount of space back there. After this is successful, I am going to try to fit a heads up display in the newly created space (I have a very large experimental version of the HUD sitting on the kitchen counter, so I think I might actually be able to pull this off).
 

·
Registered
Joined
·
1,933 Posts
That will look cool, and even better if you took out the radio and put in a ipad. And if you are super smart at this stuff, I have always thought it would be cool to make the ac/heat panel a touch screen.
 

·
Registered
Joined
·
28 Posts
Discussion Starter #14 (Edited)
Thanks FortyThree!

Here is a pic of one of the super tiny chips I had to deal with. This one has 3 connections, some other ones that were the same size had 5 connections:


A pic of the SNT1110 circuit. Its in a breadboard and looks extremely messy. I will have to make a proper circuit board for it at some point:


Another pic of the STN1110 circuit:


A pic of the lcd displaying the RPMs at idle. MPH works too, but I was just sitting in my garage. It doesn't look nearly as green in real life, its more of a greenish yellow. Also, when under the sun or other bright light source the background becomes a very deep blue and the characters become very yellow.


And finally, a pic of the entire setup. The blue looking circuit board thing is the Arduino Mega 2560. To the right is (obviously) the STN1110 circuit. To the left partly hidden behind the LCD is another breadboard just for connecting the LCD to the arduino.


I have heard of people putting iPads in their cars, but I dont know of a way to interface them to anything. Its just an iPad that is permenantly attached to your car lol. A touchscreen is definitely possible though. They require using a lot of connection points to connect them to an arduino, so you would probably need a second arduino to handle the touchscreen display. Arduinos can be wired up to talk to eachother though, so you would be able to set them up to share data or have one controll the other.

And finally, I'm using a character lcd display in these pics, but I plan to order a graphic lcd or 2 to make a digital tach and speedo. I figured that it would be better to use character lcds for the numerical readouts because they are readable in direct sunlight, the font is fairly large, you can connect 40+ of these to a single arduino, and theyre about half the price of a graphic lcd.
 
1 - 20 of 73 Posts
Top