Close

Displays aka Gauge Faces

A project log for D-DAQ

automotive parameter & performance monitor & logger

michael-obrienMichael O'Brien 05/15/2014 at 07:410 Comments

First a little history...

The original Doniol gauge used a 128x128 OLED screen. I knew I needed something larger so I looked around and found out the most readily available larger OLED was a 128x160 screen. These are available with 2 different display drivers: SSD1353 and the SEPS525, the latter of which is more prevalent as far as I can tell. I've found smaller versions than what I needed, bigger brothers, and cousins. They are all functionally the same I assume as the data sheets give the physical specs of the displays as near identical.

I ended up stumbling across this one. Though inexpensive, I was told that the lead time was 12-14 weeks. I bit the bullet and bought 8, as I already had a small one for early testing, to give me 3 D-DAQs with 3 gauges 5 days before the contest was announced. Well, today I got a shipping email from Future Electronics so I'll be getting them [a lot] sooner than expected!

Now, I know a 128x160 screen is a bit small. but ~1.7" is the largest display diagonal this pixel count comes in with this driver. I also figured that at some point in time, I'd want the graphics to fit on a larger screen or differently proportioned. I made up a spreadsheet that did the auto-adjusted the needle sweep in degrees for the display dimensions, spit out X-Y coordinates, degrees, and accuracy errors for each tick mark of gauge faces. I was toying with the idea of doing the line drawing myself, and having them antialiased, but have since decided upon rendering sprites onscreen instead. This was relatively simple as I was using the spreadsheet and Photoshop for mockups...

Illustrator would probably be better to make this in as it'd be resolution independent and if I ever changed displays, it'd be an easy adjustment, but I'm a raster guy and I also knew a little bit about Smart Objects. Each tick mark, big or small, is a SO. In fact, all of the white ones are linked to each other so if I change the dimensions/color/shape on one, they *all* change. Same for the larger yellow and small red ones. This makes a global scheme change a very simple task. I generated the file at 4x the display resolution so I could down sample any rounded trig errors from Photoshop and just went to town. There are nested groups and currently 565 layers, but that's increase as I'm doing more layouts. As a compressed TIFF with flat color, the image file is over 90 MB.

Text alignment was tricky as the fonts are not monospaced. I ended up with a smart object like the tick marks, rotated the text appropriate for it's screen placement, and then rotated the smart object the opposite direction (with it's anchor in the center). If I needed the text closer to the ticks, just move it up and save the smart object instead of having to compute the trig for x-y coordinates and the offset for text width and adjusting things to a floating point pixel ;). Overall it's a lot of work, but it's for future proofing the design.

One such example for the details in this setup is that it allowed me to easily tweak the existing format and create a split gauge setup for monitoring 2 turbos, or boost an exhaust manifold pressure for VNT/VGT turbo tuning:

This brings me to a point a few may be asking. Isn't a 1.7" display a bit small? Yeah, it very much can be. Especially if it is mounted too far from the user. Now, because I'm driving the displays directly via SPI, going larger means I'd have to use a lower frame rate and that is highly undesirable. Well, SPI is just a protocol. These displays usually can be driven off of a 16-bit or 8-bit parallel interface. Well, as I mentioned before I can code the buttons for the user interface can act as a a 3-bit address. Instead of making them have an initial low/high pull down/up, I can choose NO or NC buttons. Tack on a microcontroller to be an SPI slave, have D-DAQ send the equivalent of drawing commands instead of RGB pixel info, and make sure the slave micro is fast enough to drive the new display at a high frame rate via its parallel interface, and these displays can be large enough to fulfill the user's desire. Or at least within some reason for mounting in a car and drawing power from D-DAQ.

Discussions