Sunday, December 19, 2010

Driving VFDs for Fun and Profit (And More Clocks)

Continuing my unstoppable obsession with clocks, I built another one this summer based around a vacuum fluorescent display I found at Excess Solutions (one of the many local bay area electronics salvage stores).  VFD's are pretty cool, because instead of having each segment be an LED in typical displays, a series of wires and meshes are used to shoot free electrons at a phosphor, which then creates the light you see from the display.
VFDs are unfortunately also very challenging, due to the fact that they require voltages in the range of 40-70V, well in excess of the 5V my trusty AVRs can handle.  While pondering how to handle this challenge, short of building 20 transistor-based voltage buffers, I stumbled upon the AdaFruit Ice Tube clock, which drives a VFD (along with a much more developed interface than any of my clocks...).  Lady Ada is kind enough to publish all of her kit schematics, so why try and figure out how to drive the display myself, when she's already found a functional solution?
(As you can see in this picture, the off segments aren't entirely off, since I'm only grounding them and not negatively biasing them.  The contrast is much better in person than in these photos)

This solved two of my problems.  It turned me onto the MAX6921 VFD buffer chip, which is the shift register and the voltage buffers combined in one chip, and it gave me the circuit I needed for the charge pump to step the 5V coming from my power supply to the 40V needed to light the VFD segments.  Thanks LadyAda!
The problem with the MAX6921 is that it only comes in surface mount packages.  AdaFruit uses the PLCC package, which is square and has pins on all four sides.  I wanted something a little more breadboard friendly, so I opted for the SOIC package, along with a breakout board from Electroboards.  This means I can now feed 40V and 5V logic signals into the MAX6921 buffer to drive the VLD.
The only challenge left is how to generate the 40V.  Again borrowing a page from AdaFruit, I used a power inductor and a transistor to pump the 5V power supply up to the needed 40V.  They used a MOSFET in their circuit, but I was putting this clock together during the silicon shortage last year, so the MOSFETs they used weren't available.  As a shot in the dark, I tried using a standard 2N2222, which happened to work out fine, as long as you didn't exceed the 100V rating on it, which is surprisingly precise.  This means the 5V is fed through the inductor, which on the other end is alternately grounded and shunted through a Schottky diode to a high voltage capacitor.  This is called a boost converter.  Feel free to hit Wikipedia for a better explanation.

The rest of the clock is a fairly typical DS1307 talking to an ATTiny2313, which then multiplexes the digits of the VFD at 300Hz.

Video:


Source code listing at the end of the post!



So how do VFDs work?
 Vacuum fluorescent displays work on a similar principle to vacuum tubes, not that I expect that analogy to help.  If you look closely at a VFD, which you likely see every day in appliances like your microwave or car stereo, you'll see a few tiny wires running from left to right, and thin grates, or grids, covering each digit.  A current flows through the wires, heating them, which makes it easier for them to eject electrons in vacuum.  These electrons are attracted to positive charge.
Using the grids on each digit, you can control whether electrons are guided to it or not, based on it's voltage relative to the cathode wires.  0V would make the grids not very attractive, where +40V would make the electrons much more attracted to the grids, because electrons are negatively charged.  The electrons are then attracted to the grids, but most of them miss the grid, and fly through the holes in the grid towards the segments.  Controlling the segments is much the same, each segment is either biased 0V for off, or ~40V for on.  The segments are coated with a phosphor, which when struck by flying electrons, lights up, usually a nice bright teal color, like in the picture at the top of this post.  To reduce the number of required pins on a display, all of each segment are wired together, so to independently control every segment, you would individually positively bias a control grid, and the segments for that digit you want lit, then bring the grid negative again and do the same for the next digit.  This means only one grid is every positively biased, and attracting electrons, at a time.

Source Code:

No comments:

Post a Comment