Honda Insight Forum banner

Controlling the Instrument Cluster's Display

74958 Views 470 Replies 65 Participants Last post by  Mario


A little project I'm working on. :) (Sorry for the horrid picture!)

Here's the elevator pitch: Directly control the LCD panel with a microcontroller to display custom information on the instrument cluster. The microcontroller will also read the data that would normally be going to the LCD and can choose to display that info or custom info.

Maybe you want to display OBDII parameters where the MPG is. Maybe you want to change the charge, assist, and SOC gauges to accurately reflect amps in/out, real battery SOC, etc.

I've got a few other ideas as well. Once I'm finished with this project I'll open-source everything I've learned and perhaps produce some PCBs to sell. We'll see!

I have work and other projects as well, so it may be slow going at times. But I'll try to give updates fairly regularly.
I don't think this has ever been done before. I hope you guys are excited!
If anybody is or wants to work on something similar, I'll be glad to share what I know; just ask.
See less See more
  • Like
Reactions: 5
1 - 20 of 471 Posts
Not sure what the actual character capacity, layout, etc. is for those screens (the MPH and the FCD) - but if your microcontroller is something that could interface with the OBDIIC&C and display those parameters, or maybe some of them, in some way, that'd be a really useful device. I'd actually pay money for it...


I want it, and I want it nowwww¡!!!!
See less See more
Interesting. Looking forward to seeing how it goes.
Omg make the auto stop light work as the lean burn light!

And the temperate gauge show a compressed scale say... 1 bar=2C with 92 in the middle.
Not sure what the actual character capacity, layout, etc. is for those screens (the MPH and the FCD) - but if your microcontroller is something that could interface with the OBDIIC&C and display those parameters, or maybe some of them, in some way, that'd be a really useful device. I'd actually pay money for it...
There's not a whole lot to work with, admittedly. The MPH gauge has two seven-segment-equivalent displays (though you can do a couple creative things, like that exclamation point), and a single 1 in front of them. The 1 is either all on or all off.

The trip meter area has 9 total seven-segment digits plus a leading 1 on the far left side (for 100.0+ mpg).

I think the instantaneous fuel numbers are actually (almost) all seven-segments too... you might be able to display custom numbers on those tiny digits. I know that the "0" marker is all on or all off, no segment control there - but the others seem to be full seven-segment digits. I'm not entirely sure, I haven't mapped out the whole display yet.

Of course there's also the bar graphs for RPM, temp, gas, assist/regen, and SOC.

The rest of the stuff on the display is just the specialty icons, like "mp/h", "km/h", "trip a", the trip segment arrow, etc.

I think there's a lot of fun things you could do. I'd like to change the assist and regen bars to show absolute amps or watts in/out of the pack, no matter what gear you're in. And SOC would show the real SOC, of course. We could even make the temperature gauge actually useful with a different range or scale (like samwichse said). I've also always wanted the fuel gauge to be linear. A pretty small thing, but it would make me happier.

You could possibly do something creative with the normally-unused portion of the RPM gauge - everything past the redline is never seen in normal driving. You could use those to indicate something if you wanted.

Even silly stuff like swap the MPH and RPM gauges - not sure why you'd want to, but you could in theory! Or make custom startup animations. :)

I'd imagine any OBDII parameters would go in the MPG seven-segment display area. Unfortunately, you can't do certain letters with seven-segment displays, but we can work around those.

The real question is how you set up what you want. I'll need to add some external controls somewhere.

Omg make the auto stop light work as the lean burn light!

And the temperate gauge show a compressed scale say... 1 bar=2C with 92 in the middle.
I was actually thinking the exact same thing with the auto-stop light!


If anybody else has ideas or feature requests, feel free to throw them out here.

And Balto - could you find a slightly smaller image? It's stretching the page even on my 2560x1600 monitor!
See less See more
And Balto - could you find a slightly smaller image? It's stretching the page even on my 2560x1600 monitor!
Either you've disabled the auto-scale function of vBulletin, or you're using an adblocker that disables the feature.

http://www.insightcentral.net/forums/hard-hat-area/78785-image-resize-test.html
Either you've disabled the auto-scale function of vBulletin, or you're using an adblocker that disables the feature.

http://www.insightcentral.net/forums/hard-hat-area/78785-image-resize-test.html
Oh, interesting. The setting was wrong and my adblocker messed up that functionality as well. Thanks!
^Often Ghostery blocking VerticalScope.
Very interesting, will be watching to see how this experiment goes.
Yes please



I want it, and I want it nowwww¡!!!!
How much ? when Can I have?

AWESOME!
More information required!
Which data lines are hijacked (METSCI,___,___,etc)? Or have you simply hijacked the LCD output control circuitry directly on the instrument gauge?
If this is a feasible "drop-inish" mod, how is unmodified data passed through?
Does CEL come on with hack present?
Very excited about the technical details, even if it's just an understanding of the LCD output circuitry inside the gauge cluster!
More information required!
Which data lines are hijacked (METSCI,___,___,etc)? Or have you simply hijacked the LCD output control circuitry directly on the instrument gauge?
If this is a feasible "drop-inish" mod, how is unmodified data passed through?
Does CEL come on with hack present?
Very excited about the technical details, even if it's just an understanding of the LCD output circuitry inside the gauge cluster!
Sure!
I have not changed any of the lines going into the cluster. I've hijacked the LCD control lines, like you said. Right now the LCD is completely disconnected from the cluster, I'm just using it as the backlight.

Though I will likely tap a couple of the cluster's input lines for display of certain information, like the fuel sender line.

This could be done as a drop in. No CEL, no warnings, nothing. The cluster doesn't know that anything is different. :) The microcontroller reads the data coming from the cluster that would normally be sent to the LCD. The microcontroller also drives the LCD's data lines to display what it wants. So it can take the display data it got from the cluster and send it to the LCD, or send its own data.

The caveat to this is that my microcontroller doesn't know anything that isn't being sent from the cluster to the display - So if the cluster is on the "Trip A" screen, my microcontroller can't know that the lifetime mileage is - unless you press the trip button a couple times to switch to that screen! So I'll need to figure out how that user interface is going to work. I've got some ideas, though.

I'll release more information later, but here's the basics of controlling the LCD. The LCD display is soldered to a PCB with three LCD driver chips on it - the NEC PD16430A. There are 14 connections coming out of that board. Here's the pinout:
1 - GND (VSS)
2 - VLCD (5V)
3 - LCDOFF
4 - STB1
5 - STB2
6 - STB3
7 - DATA1
8 - DATA2
9 - DATA3
10 - CLK
11 - BUSY1
12 - BUSY2
13 - BUSY3
14 - VCC (VDD) (5V)

The three chips share one clock line, but they have three separate chip select and data lines. The cluster writes to all three chips at the same time.
You pull the select lines low and send 15 bytes to each chip, then set the select lines high again. There are some configuration bytes you have to set beforehand as well.

Really, it's all in the datasheet for the chip. The annoying part, and the thing I'm doing now, is mapping which segments on the display correspond to which bits, and writing that data down in a sensible format. And then I need to implement that in code, most likely as an enormous lookup table.
See less See more
Mario, if you can make this a drop-in or send-off modification, you've laid the groundwork for a G1 revolution. I'm thinking customers send in their gauge clusters for modification, and then they simply plug them back in and maybe have a USB port they can use to program what the gauge cluster displays.

It's VERY important that your modification prohibits a user from altering the displayed odometer mileage, as that would be a federal crime. I'm not sure how you would do this in hardware without disabling one of the three drivers you've described (the one that drives mileage). Maybe pressing the FCD button temporarily overrides your circuit in hardware (this is an incomplete thought)? I worry that a bad apple would replicate the OEM display, changing only the mileage. Think this out thoroughly, as you could run afoul of EPA law (a.k.a. 'get volkswagened').

Good luck and please make this a reality!
Mario, if you can make this a drop-in or send-off modification, you've laid the groundwork for a G1 revolution.
Thank you! When I opened up my cluster to replace the trip button, I noticed the LCD controller ICs and that there weren't very many wires between the cluster and LCD. I figured it was a common LCD controller and I'd be able to drive it easily. Turns out you can! I'm amazed nobody's done this before. I hope it'll be useful. I'm pretty sure I can make a device where you open up your cluster, plug the LCD into this board, and plug it in to OBDII and there you go. Should be possible to make it that easy (though if you want to change certain things like the fuel gauge, you'll need to solder a wire or two to the cluster PCB, but I'll try to make that easy).

It's VERY important that your modification prohibits a user from altering the displayed odometer mileage, as that would be a federal crime. I'm not sure how you would do this in hardware without disabling one of the three drivers you've described (the one that drives mileage). Maybe pressing the FCD button temporarily overrides your circuit in hardware (this is an incomplete thought)? I worry that a bad apple would replicate the OEM display, changing only the mileage. Think this out thoroughly, as you could run afoul of EPA law (a.k.a. 'get volkswagened').
Yes, I've thought this as well. I was thinking that if the user pressed the trip button to get to the lifetime mileage screen, then my board would always pass that through, unmodified. Unfortunately, I can't just disable one of the drivers, as they aren't quite sectioned off so nicely (each driver controls a few different parts of the whole screen, not just one section). I could do a hardware override of all the drivers by using buffers and switches if I really wanted to.

However, I think that anything more than a firmware lockout is unnecessary and ineffective, anyway. As long as changing the apparent mileage is not able to be done in the stock device, I'll be fine.
When I release all the information, somebody who's dedicated could just build my board and modify the firmware. Or even make their own board, as the hardware and protocol are pretty simple.

Of course it'll be illegal for them to do so - just like it would be illegal for somebody to roll back their mechanical odometer. But at least I definitely will not be providing the direct means to do it.

Good luck and please make this a reality!
Thanks, and I'll try my best! We'll see how it goes. I'll be updating this thread as interesting things happen.
See less See more
Clever work

Nicely done keep at it, be interesting to see how much you can do.

When I did work on driving the assist/regen/soc parts of the gauge a few years ago, I just hijacked the METSCII line and sent the required data serially to the cluster.

Nice to see another doer on the forum ;)
Thanks and Subscribed.

This could be done as a drop in. No CEL, no warnings, nothing. The cluster doesn't know that anything is different. :) The microcontroller reads the data coming from the cluster that would normally be sent to the LCD. The microcontroller also drives the LCD's data lines to display what it wants. So it can take the display data it got from the cluster and send it to the LCD, or send its own data.
In that case .. Couldn't you also replace the LCD itself with another one ?

The cluster still wouldn't know anything about it .. but that could open up the potential for other screens that would have more display options , and remove some of those other limitation due to the OEM number of segments and such.

All the OEM Odometer data and such , is still stored on/in the cluster itself.
While it is technically possible to replace the stock LCD with a different screen, it would be a much more massive undertaking than what I'm doing. You'd have to push a lot more data with so many more pixels so you need a very fast microcontroller or an FPGA (I don't yet have any experience with FPGAs).

Actually, I suppose you could probably use a Raspberry Pi. Use an HDMI-capable screen, and use Python to make the instrument display. You could have a microcontroller to read the data coming from the cluster and send it to the Raspberry Pi over SPI or something.

I'm not terribly interested, but somebody else is free to give it a go.
2

I've got the display mapped out, which took absolutely forever. This simple demo actually has a lot of time behind it. Did you know there are 326 individually-controllable segments on the instrument cluster display?

Here's my mapping (I'm mostly just posting this right now because it looks impressive):





I'm going to work on writing functions to write letters and numbers to the display and set the bar graphs to whatever you want, and all that good stuff. At some point soon I'll move away from the Arduino I've been using and make a PCB that has a more powerful microcontroller on it. Then I'll work on reading data from the cluster!
See less See more
wow, that not only "looks" impressive but is impressive... Nice work...
1 - 20 of 471 Posts
Top