Very cool job !:clap2:
Very cool job !:clap2:
2k1Toaster, windscreen film: I haven't considered putting some sort of film on the screen, but it sounds like an idea. Will consider it. Might be illegal here, though.
Bugbyte: how-to: It seems like many of you are interested in this project, so sure, I can write a guide.
MeeM, piglith: I am not sure if a standard LCD/VFD display would be bright enough in broad daylight, but on a cloudy day or at night, both would be usable. Maybe a standard TFT monitor with brightness on full could be used for a large HUD? Do go ahead and test it!
Colin: The very cheapest way to do this would probably be to get two USB-to-parallel converters, add some led drivers and then connect the displays. However, it would be somewhat bulky and require quite a bit of soldering and fiddling, and remind me too much of http://www.afrotechmods.com/ , so I chose a Fusion Brain. I do agree that it is slightly overkill, though.
Next step - focus at infinity for true HUD.
(Or how to raid your local airforce base or desert storage facility.)
Couldn't you use a couple of 7449 (or similar) BCD to 7-segment driver chips and save yourself 3 outputs per digit?
Sicarius: If there exists IC's that can decode "inverted" displays, then sure, that would be an option. Remember that I don't just power regular 7-segment displays, the outputs must be inverted since they reflect on the windshield.
No they don't - you just inverse the connection - ie, swap sides and swap digit order.
PS - Sik suggestion Sic, but you definitely ain't sick.
And RB, for the MSD, you could use one output for the "1", and the other to provide a "2".
Inspired by the HUD speedometer in the new Knight Rider TV series, I decided to try making one myself.
I decided to use three 7-segment LED displays to project the speed onto my windscreen. The "ones" display would require 7 LED outputs, the "tens" display another 7, and the "hundreds" display just two outputs, as it would either need to show "1" or nothing.
My car can't go above 200 anyway, so limiting the maximum speed to 199 was a reasonable solution.
It is possible to modify the project to display up to 299 quite easily (the last two outputs can be used via diodes to light up a "1" or a "2"), but not relevant for me, so I have not done so.
But all in all, 16 LED-capable outputs were needed.
After considering various options I decided to use a Fusion Brain as a "simple" 16 port LED driver.
Maybe a bit overkill, as a FB can do so much more, but it comes preassembled, can directly power LEDs, has 16 outputs, and has a .DLL so I can easily interface with it from my favourite language, C#.
I wasn't sure if a normal little 7-segment display would by visible enough, so I went for some red 1.5" Kingbright SA15-11SRWA displays: http://www.digchip.com/datasheets/pa...A15-11SRWA.php
Those displays should be "SUPER BRIGHT RED" according to the data sheet.
Powered by app. 8 mA they are clearly visible indoors, but in the car, powered with app. 25 mA, in broad daylight and reflecting off the windscreen, they aren't overly visible, so there might be other and better displays to go for.
Displays should be of the "Common Anode" type, however, since the Fusion Brain switches to ground.
In this guide I will be using the before-mentioned SA15-SRWA's.
Seen from behind, with the decimal point to the lower left, this is the pin out for the SA15-SRWA's:
The 16 outputs from a Fusion Brain must be connected like this (through a resistor!):
(The three displays are seen from behind, with the "100's" display to the left)
FB out: Display Segment
1 Display 100's f
2 Display 100's e
3 Display 10's a
4 Display 10's b
5 Display 10's c
6 Display 10's d
7 Display 10's e
8 Display 10's f
9 Display 1's a
10 Display 1's b
11 Display 1's c
12 Display 1's d
13 Display 1's e
14 Display 1's f
15 Display 1's g
16 Display 10's g
Any of the "+" connectors on each display should be connected to +12V.
The maximum current for the SA15-SRWA is 30 mA.
The data sheet reports a typical voltage drop of 1.85 volts, so with a supply voltage of 12 volts and a loss of something like 0.5 volts in the Fusion Brain we have to drop something like 12-0.5-1.85 = 9.65 volts over a resistor.
However, a fully charged 12V battery can reach 13.4 volts (IIRC), so perhaps we should aim for 13.4-0.5-1.85 = 11,05 volts.
11.05 volts and a current of 25 mA (I don't want to run too close to specs) gives 442 ohms. 470 ohms should be a good standard value.
On my first attempt, I powered the displays from the FB headers, only using USB power.
However, it seems like the USB output I used had problems providing enough juice for all the LED segments, the voltage dropped too low, so I had to power the FB with 12 volts, and grab +12V from that for the display.
I discovered an issue with a fusion brain: apparantly two of the 16 outputs leaked enough current to visibly light up LED segments when I powered it from +12V.
It was so little that the LED onboard the FB did not light up, but enough to distort the speed display - two constantly, partially lit segments looks very bad. The outputs did turn on fully when requested, but they could simply not turn off completely.
Fortunately, I had a spare brain without that defect I could use instead.
1x fusion brain.
16x 470R resistors
3x 7-segment LED displays
Misc. wires and connectors, and a suitable box.
Finding some sort of semi-transparent cover for the displays is also a very good idea, in order to increase the contrast.
I haven't been able to track down "proper" covers for 1.5" displays at a decent price, so my displays are using a piece of "cellophane" gift wrap instead.
Apart from the hardware itself, some sort of software is also needed to control this thing.
In my setup, I am decoding the output from my GPS receiver and using that to get the speed for the HUD display.
The data from most GPS receivers aren't very fast, and an updated speed only comes with intervals of 0.5-1 seconds.
This didn't look too good on the HUD display, so I added two improvements/workarounds.
First of all, when one speed changes to another, the segments that should not be lighted anymore are slowly faded out. It looks much less distracting at night when the HUD doesn't flicker so much.
Secondly, I estimate the next speed, based on the difference between the last speed and the current speed, and after half the time since the last "real" speed I display the estimated speed.
This makes for a noticeable more fluid display.
There is one final issue to be aware of: The displays have to be very bright in daylight in order to be readable, but at night the display is so bright that it is annoying.
In my front-end I've simply added a button to toggle between day and night mode - night mode simply dimming the display using the FB PWM capability.
My car pc has a custom(homemade front end, so if any of you feel like making such a HUD someone will need to rewrite my HUD speedometer code and turn it into a plugin for your front ends.
I will create a demo of my GPS decoder/HUD controller and make the source code available for "inspiration".
You could multiplex it if the FB can switch fast enough. That means 8 outputs paralleled to each segment, then 1 output to each (+) segment inverted with a transistor to switch that one on/off. I've done it directly with the tristates on the PIC with 8 digits and it looks great, but it was coded specifically for that purpose.
Though you could dim easily enough with an external PWM circuit, surely the FB is fast enough for that? (Not using PWM, but varying segment on time.)
Multiplexing is good too for dropping pin count and power consumption whilst maintaining max brightness (the SA15-SRWAs handle 155mA peak (@10%) so probably up to 50mA for 3 digits.
But if multiplexing, avoid low frequencies as HUDs tend to beat with night lighting.... (a real pain when landing on freeways!)
But as suggested by Sic, I reckon a dedicated driver would be the way to go....
I know it's a little late for this suggestion...but does anyone know if there's a binary driver that could convert a 1byte signal into a numeric display? You could cut the number of outputs used in half with a max speed of 255...
god i feel like a geek again lol
i like what you've done though