Russian Tricolor VFD Indicator Clock
This is an ongoing project, paused and resumed again in Summer 2018.
I found these Soviet new-old stock tri-color indicators on Ebay, ILV2-5x7M.
I am interested in making a clock - one which is not necessarily for telling THE time, but indicating the passing of time and the unique configuration of this display presents an interesting challenge.
—ELECTRONICS + CODE—
The datasheet came in Russian - I translated the text.
HERE is a PDF of my graphical translation (likely crude, but the requisite information is available).
I mocked up a straight driver circuit using only PNP/NPN to test the wiring.
Vacuum Fluorescent Displays are high impedance capacitive loads.
“Electrons are emitted from a cathode (filament) and are controlled by a grid. The voltage on the grid determines whether the electrons are repelled or allowed to collide with a phosphor coated anode. Electrons striking the anode cause light to be emitted from the phosphor. The resultant light emission produces the specific wavelength light and resultant color.”
Excellent description of VFD functionality found HERE.
See this blog post about troubleshooting VFDs here:
The above linked blog post explains a great deal of the logic of VFD displays. That blog incorrectly drives the filaments and does not control for the multiplex rate properly. Part of the troubleshooting of this post will be in developing the hardware for the filament driver and properly controlling the code.
This display has 3 colors: Blue, Red, and Green. There are 5 lines with 7 of each color in each line - therefore, I have 35 Blue segments, 35 Red segments, and 35 Green segments.
This makes 105 individual segments.
There are 5 Grids, representing one (in the image below) horizontal row.
The 21 addressable pins are for the vertical rows (called "lines" in the datasheet), 1 pin per color, per row.
By turning on the blue line 1 and grid row 1, I can individually turn on the top left most blue segment. I will want to use other lines and grids - I will send a binary code through a micro-controller [0, 0, 0, 0, 1]. This would bypass the first 4 blue segments (those on the left most side of the VFD) and only light the last blue segment - while enabling other grid (row) activity on the first vertical line.
(I think that paragraph might make sense, if unclear, send me a message.)
The Datasheet Provides Electrical Parameters as Follows:
Current Glow: 225mA Voltage Glow: 2.8v (filament specs)
Impulse current of elements of no more than mA
green glow: 7mA
red glow: 10mA
blue glow: 10mA
Impulse (pulsed) elements of voltage - the voltage of the elements pulsed
green glow: 25v
red, blue glow: 50v
Impulse GRID current of no more than: 10mA
Impulse GRID voltage: 25v
Beginning the wiring and coding. I tested the transistor circuitry to control the grids with some LEDs.
The Russian VFD has five lines of segments of colors. By switching the grids on and off I can multiplex the component.
Each Grid gets a circuit which is comprised of one TIP120 - (NPN), two 10K resistors, and an IRF9510 - (Here is a nice write up of a Mosfet PNPs and a nice Youtube Video by L. Loflin using more succinct language and maths for PNP Transistors in general).
The below graphic is the circuit driving each element (grid, green, red, and blue).
Because of size constraints for the enclosure, I purchased some SMD IRF9510s in the form of D2Paks.(this footprint is HUGE)
The TIP120 is now an outdated, no longer manufactured component (to my knowledge). There are no SMD versions of TIP120s. I purchased several N-type BJTs which have similar electrical attributes. The FZT851CT-ND worked just fine.
I air wired these and tested output coming from the teensy - to confirm the current from the Teensy would trigger this NPN.
So I laid out my board with these components.
Because of the enclosure I am planning, I rearranged the components and the enclosure shape is the board shape.
After wiring up each connection, I am still tight on space. However, I have decided to make each unit contain two VFDs.
Therefore, all further discussion of the circuit will contend with driving two VFDs.
I am using a MAX6921 20 output VFD driver chip.
Two MAX6921 ICs will handle the Blue and Red Segments (both driven with 50 volts at 10mA). There are seven of each, totaling 14 Outs from the 6921 IC. To drive two VFDs I double this number and have a total of 28 segments to drive, requiring 2 MAX6921 chips.
The Green Segments accept 25 volts and cannot be driven by the same MAX6921 chip driving the other segments and thus need to be driven from a separate IC with its own VBB. I will have 14 total green segments to drive (driving 2 VFDs per clock).
I have decided, for ease of coding coupled with the electrical parameters requiring the Green Segments to be driven by a separate chip, to segregate these three MAX6921 ICs to handle colors only. (one MAX6921 for Blue, one for Red, and one for Green)
The Grids (5 rows, 5 Grids) will be directly driven from the Teensy 3.6, using the NPN / PNP graphic above.
I could have coupled the Grids to be driven to the green segment 6921 IC, but for a myriad of reasons, I have chosen to keep the grids independent of the segments.
Here is a link to the pinout of the Teensy 3.6.
I made the below graphic to help navigate the mess of pins and arrays of components.
EACH CHIP HAS DATAIN, CLOCK, LOAD, DATAOUT, AND BLANK -
The DataIn pin, accepts the bits (send the array)
The Clock pin clocks these bits to the chip on the rising edge (meaning, every time you want to display the bit, you have to turn the clock HIGH - and then LOW as before you want to move onto the next bit to display)
- i.e. - DATAIN -> 1bit -> CLOCK HIGH -> CLOCK LOW
The Load pin pushes the bits to the segment (i.e. turns the display on) when HIGH. Make the Load pin LOW before reading new data (like a bang).
-i.e.- cycled through all bits in the above step and then -LOAD HIGH -LOAD LOW
The Blank pin resets the Clock and Load when HIGH.
Initial Power-Up and Operation
An internal reset circuit clears the internal registers of the MAX6921 - on power up. All outputs OUT0 to OUT19 and the interface output DOUT (MAX6921 only) initialize low regardless of the initial logic levels of the CLK, DIN, BLANK, and LOAD inputs.
I have most of the circuit configured. The only thing remaining is the Filament. With a circuit like this, breadboarding is a nightmare and can be prone (at least for me) to wires loosening and errors in hooking up components, so I went ahead and made a board with pins in and out for breadboarding the filament driver. Below is the schematic of the board at this stage.
The Filament is likely the most difficult item to drive. It is finicky - and should be considered in great detail if you are driving a VFD. Driving the filament improperly will case permanent damage to the device (if not egregious, it will occur over a longer period of time).
The filament should be thought of as an Incandescent light bulb, it is only a bit of tungsten, and can consume ample amounts of current. As the wire heats, it can consume more etc. Therefore it is imperative to protect the current going to the filament.
The Noritake site describes the ideal characteristics required to drive a filament and mentions the ideal frequency to drive the filament and that the filament should be driven with a biased DC source.
—LM9022 IC_ FILAMENT DRIVER
In some investigations of best circuitry to apply, I stumbled across this amazing blog: KevinRye.net
He implements a LM9022 VFD Filament Driver IC into his project. These ICs are obsolete, but a quick Ebay search led me straight to many options for new-old-stock. With some simple discreet components I should be oscillating awesomely for my circuit.
The ILV2-5x7M provide data about only ONE of the pins are designated a filament pin. After reviewing the datasheet, the bias voltage provided by this IC should be used for the filament. A simple conductivity test confirmed that the two cathodes are connected to the filament.
Technically, the VFD datasheet refers to the filament as:
“cathode of the extension of the inner surface of the cylinder”
The circuit above calls for two filament pins. I have two cathode pins. Connecting Pin 8 of the LM9022 to what I have been calling a filament and connecting the two cathode pins to pin 5.
What is happening is that the cathode and the “filament” are transposing their polarity. They are phase locked outputs offset from one another.
These VFDs are no longer available (or vary in their availability). As such, I need to know that when I drive the VFDs I can reliably do so without causing damage to the components. The breadboard adaptable circuit above will allow me to quickly prototype and verify different methodologies for driving the filament.
Once I am certain that the Filament is being driven in a healthy way, I will run a random sequence on a single VFD for an extended period of time to ensure that the way the component is being driven is safe for the component.
NOTE: Pulsing Filament for Proper testing functionality
When prototyping the VFD, I found that the filament MUST be pulsed to allow all segments to power on. When driving the Filament from straight DC, the VFD will behave, at least with this VFD, inaccurately.
Real time CLOCK - TEENSY 3.6 ONBOARD:
The Teensy 3.6 has a built in RTC. The library which utilizes the time function within the RTC is the Time library.
To retain the Time set when configured, the Coin Cell Battery can power the RTC without powering the entire Teensy. To utilize this function - see image below.
The VFDs and the Circuit I’ve designed require various voltages:
50VDC, 25VDC, 3.3VDC, 5VDC, 2.8VDC
I have found some small form-factor 48 VDC power supply (TDK-Lambda : LS25-48) and in the same form-factor a 24 VDC power supply (TDK-Lambda : LS25-24). The 5VDC and 3.3VDC are my favorite little bricks: Mean Well’s SPAN02B-05 and SPAN02B-03. For the Filament power I opted to drive it not from a voltage divided/ current resistors from my 3.3 (though it would be easy enough), I opted to drive it from a Monolithic Power Systems : MEZD71201A-E.
PROGRAMMING AND TEENSY POWER:
To ensure users of the clock do not accidentally program the Teensy while still powered- causing a surge of energy, cut the trace referenced in the below image.
These displays run pretty bright. As such I have incorporated a dimmer -
The Filament power is coming from a the Monolithic Power Systems : MEZD71201A-E voltage converter - by putting resistors on the output voltage feeding the filaments I can easily and reliably control how bright these displays are.
I am using a 3 position rotary knob (C&K : F20308RS02Q) to allow the user to switch from ON / DIM / DIMMEST.
Test fit (above) from FormLabs Form2 Resin Printer- snaps together well. A touch of material removal here and there - but good fit.
Because I will be taking these 3D Prints and casting them to duplicate the prints by 10.
<< Prep for Casting >>
As I am using crystal clear resin, I want to ensure that the mold has the best possible version of the objects — no pit marks, filled, wet sanded, and buffed. -that water look-
Several of my components were too large to print whole, so I printed sections and mated them with this amazing resin adhesive.
After many many many many hours of sanding and buffing and sanding and patching I kept sanding scratches - creating new and it was a never ending battle for the shiny.
So I turned to the auto-body industry.
It is to fill the sanded elements with a high build primer which has enough body and self levels which makes a wonderfully matte but even and lovely finish.
Then apply Spraymax 3680061 2K Clear Glamour high gloss paint - the video below explains application concepts and selection.
3D PRINTED COMPONENT TEST FIT and ACCURATE HOLE MAKING:
I made a jig to hold the components straight for drilling the holes which mate the front and back sections of the enclosure (above).
I fit test the back components (AC cable gland, AC switch, reprogram momentary switch, Battery, and USB).
<< Casting Information - Planning ahead >>
I will be casting into a silicone mold - some 2 part, some simple box casts. I am not a fan of the super-bad-for-you elements of the majority of crystal clear casting resins. As such I plan to use Entropy Resins - Super Sap CCR - a Bio Based crystal clear casting resin with much less health risk and better for our planet. (Datasheet)
This resin calls for the use of a Platinum Cure Silicone. Because of the tight tolerances of the enclosure, I can tolerate very little shrinkage. **
The Below Videos explain tight tolerance casting and options - the best I have found so far.
When casting the resin, preheat the silicone mold at 200 degrees F for an hour prior to casting. This can prevent errors in casting (flow, bubbles, edge rounding etc.)