OpenVFD: 6-Digit IV-11 VFD Tube Clock

24,224

301

27

Published

Introduction: OpenVFD: 6-Digit IV-11 VFD Tube Clock

About: Hi there, it's Frank. I'm a 20 year old electrical engineer student currently living in Berlin, Germany. In my free time, I'm in love with traveling, photography, long and calm hikes in the mountains, veg...

Introducing OpenVFD - the colorful VFD tube clock with light effects that make the clock dance, glow or turn into a rainbow.

I'm here to share my result of creating my own dream clock with you. A computer controllable, colorfully illuminated 6-digit clock utilizing vintage Soviet IV-11 vacuum tubes.

Entirely programmed in Arduino C code, OpenVFD implements a complete Arduino Uno USB connected platform to make it compatible and easy for everyone to understand, take apart, expand and improve!


About this Instructable

The Instructable shows you what makes my VFD tube clock work and I will take you through the process of turning some tubes, parts and a bunch of code lines into a glowing tube clock. It's great and easy to follow this Instructable if you have some basic electronics knowledge already, but don't worry if not. I'll do my very best to keep everything short and simple. Here is a little TOC:

  • Introduction: The Concept
  • Introduction: A Little BOM
  • Fundamentals: Getting to Know IV-11
  • Fundamentals: Generating the Right Voltage Levels
  • Fundamentals: Gaining Control - A Discrete Approach
  • Fundamentals: Gaining Control - The Integrated Solution
  • Fundamentals: Interfacing the Microcontroller
  • Adding Functionality: The Real Time Clock - DS1307 Vs DS3231
  • Adding Functionality: Light Up the Clock
  • Adding Functionality: Everything Else & Putting It All Together
  • Building OpenVFD: The Circuit Board & Assembly
  • Building OpenVFD: Acrylic Case
  • Building OpenVFD: Make It Shine!
  • Fluorescence by The VFD Collective
  • Appendix: OpenVFD Software

Also feel free to check out the commercial version of OpenVFD: Fluorescence by The VFD Collective. If you find this Instructable useful, get your own clock by supporting the project on Kickstarter while I'm setting up the store of thevfdcollective.com!

Step 1: Introduction: the Concept

So what is a VFD?

Meet an old friend! The VFD (vacuum fluorescent display), a very special vacuum tube developed in the 60s.
They glow in a crisp, futuristic teal color with remarkable, distinctive brightness and made it into calculators, stereos, car speedometers, cash registers through all the years. If you are curious, just like me, here is another Instructable by me if you would like to check out how the display works in theory.

As for the OpenVFD clock, I'm using old Russian so called "IV-11" tubes. Back then, they were chained together and made up the display of large calculators. Many of these tubes were produced, making them easy to obtain, even today.


What is the philosophy behind OpenVFD?

I wanted to recreate the VFD clock with most beautiful colors to see how colorful time can be. An IV-11 clock with tubes of uncompromising brightness, empathized by individually controllable little LED lights. Covered by a minimalistic, precisely cut acrylic glass, every color is diffused, reflected and fractioned when they reach the acrylic surface or the glass of the tubes. They create the vibrant mood, the peaceful ambient light or the perfect party moment when dancing to music!

Step 2: Introduction: a Little BOM

The parts you'll need for building the clock will heavily depend on how you want to build it. Just playing around, building a prototype clock with strip grid or maybe even a product ready for production. Here's a little BOM that gives you the feel of what you'll need if you'd like to build your clock interactively with this Instructable:

  • Arduino Uno R3
  • 6x IV-11 VFD Tube
  • 1x Buck converter (e.g. LM2596 module)
  • 1x Boost converter (e.g. XL6009 module)
  • Both modules can be replaced by one OpenVFD EcoPower Module specifically designed for driving 6x IV-11 tubes!
  • 6x 74HC595N 8-bit shift register
  • 6x UDN2981A or TD62783APG 8-channel source driver
  • DS1307 or DS3231 RTC clock module
  • 4x tactile switches
  • 4x 10 kΩ resistors
  • 6x WS2812B RGB addressable LEDs (Adafruit NeoPixel)
  • Electret microphone module (I use an amplified one with MAX9812)
  • you can never have enough buffer capacitors (100 nF)

Ready to go? Let's start with the fundamentals!

Step 3: Fundamentals: Getting to Know IV-11

It all begins with this old Russian IV-11 tube. How do we light up the tube? More specifically, what kind of voltages do we need to turn a segment off? And what about turning on a segment? What is the pin layout of the tube?

Let's answer the questions by looking at the pinout diagram above.

  • Pin 1 and 11 belong to the heater (cathode). Either pin can be tied to ground (0V) and the other one receives the cathode voltage of around 1.5 volts. The latter voltage needs to be on all the time to make segments glow
  • Pin 2 is the grid pin. Giving this pin 30V (anode voltage) enables the display
  • All the other pins (pin 3 to pin 10) are anode pins for the segments called 'a' to 'g'. 30V will turn the segment on, 0V will turn it off. It's really that simple.

A prehistoric drawing found in this datasheet illustrates the tube as its schematic symbol. If you're somehow familiar with tubes you'll surely notice that the IV-11 is just a fancy triode. In fact, that's what all VFD tubes and displays are. So isn't it insane that someone made a tube amp out of VFD displays?

Step 4: Fundamentals: Generating the Right Voltage Levels

Now that we've found out what voltage levels our VFD tube needs to work properly, it's time to make sure that we generate them from a base supply voltage, let's say 5V. (5V's just the most common voltage to work with as an electronics hobbyist).

The idea: Buck and boost converter!
Just two fancy ways to describe circuits that make a lower voltage out of a higher voltage and vice versa. We could use one of each since we have to get 1.65V from the so called buck and 30V from the boost converter. The chips we'll be using depend on one important question: How much current will our tube array draw? A glance at the datasheet gives you an idea of how much current parts of the tube will draw at maximum load. Let's do some simple math. We have six tubes. Each tube has 8 anodes, one grid, and one heater. A good guess would be:

Cathode voltage current requirement (worst case):

  • 6 * Cathode current = 6 * 110 mA = 660 mA

Anode voltage current requirement (worst case):

  • 6 * (6 * Working anode current + Grid current) = 6 * (6 * 5.0 mA + 17.0 mA) = 228 mA

This would be a total power dissipation of around 7 watts anode and about a watt for the cathode. That's some decent dissipation and the reason why we won't torture linear regulators for the step down path. For testing, take out the XL6009 step up and step down LM2596 module, and set the potentiometers so that you get the right voltage levels.

For my first PCB design, I've used LM2576-ADJ for step down and LM2577-ADJ for step up simply because they were available at my local store. You can do better and get one OpenVFD EcoPower Module specifically designed for driving 6x IV-11 tubes - but basically any IC fulfilling those requirements will work just fine.

Got the voltage levels right? You can now put the tubes on a breadboard and play with turning segments on and off. Can you tell which pin belongs to which segment and which pin the decimal dot is? Tried displaying all numbers 0 to 9, maybe even some letters?

Step 5: Fundamentals: Gaining Control - a Discrete Approach

Since you now know how your VFD displays the characters by applying the right volts to the anodes, it's time to do even more. So the controlling mind behind the VFDs won't be a person or some crackhead you hire who does un- and replugging segment voltages real fast, but a microcontroller switching in a highly precise manner. But there's one little issue that keeps us from connecting the tube segments to the microcontroller directly:

The typical microcontroller (TTL) switches between 0 and 5V, while 5V means a logical '1' or 'HIGH' and 0V a logical '0' or 'LOW'. Remember we need 30V and more than 15 mA at 30V? I mentioned the current because a microcontroller can only switch a very limited amount of current (typical: 20 mA @5V). Sometimes that's sufficient to switch a green LED but not a VFD segment. So we'll have to come up with a circuit that gives the desired 30V to our VFD segments when we use 'HIGH' to tell a segment to turn on and 0V to the segments when we go 'LOW'.

A Discrete Approach

But how exactly do we toggle the segments with just 5V? The initial circuit I came up with is, I believe, simple and intuitive. It builds upon an NPN-PNP bipolar transistor pair, where the NPN receives 0-5V in, and switches 30V over the PNP. See how it works:

  • Say we want to turn a tube segment off. So we apply 0V to the control input. The base voltage is 0V, so the NPN transistor is turned off, right? That means no current can flow through the path with R2, and the PNP transistor gets pulled up to 30V (VDD) over R3. Because of this we know that our PNP won't turn on either, and our segment is off since it doesn't get any current
  • Now let's see why 5V on 'CONTROL' will turn on the segment. With a positive voltage, Q1 will turn on. This makes R2 and R3 into a voltage divider where the base of Q2 will certainly receive a voltage (much) less than 30V. So Q2 will open up as well, switching 30V to the anode of the tube. The segment now lights up!

Together with port extending shift registers (I'll talk about them later), you can see the tube control prototype board with 48 of those NPN-PNP pairs on the picture above. I've shown this circuit to you since I believe that everyone has at least a few BC547 and BC557s lying around. So if you have some, don't hesitate to put this control circuit on breadboard using a few of them now!

Step 6: Fundamentals: Gaining Control - the Integrated Solution

If you're a bit familiar with soldering, you know that soldering more than 70 SMD transistors is no fun at all. So we have to modify our discrete circuit, moving towards higher integration. Simultaneously, I'm happy to tell you that we're getting closer to OpenVFD's final tube circuit.

The idea behind it is that we try to get a very similar NPN-PNP pair under the hood. Why? Because we still have to switch 30V to the segments. Found out that the UDN2981 8x TTL, so called high side switch is a good choice for this.

If that's on breadboard too, feel free to send TTL-level inputs to the UDN2981 you just got (TD62783 will do exactly the same thing). But be careful and don't short out any outputs. This will burn the internal transistors immediately since they have no protection at all.

Step 7: Fundamentals: Interfacing the Microcontroller

Awesome, we are almost done with fundamental stuff for the tube circuit. What you see in the picture is the completed tube circuit of OpenVFD as found in the final schematics.

And where's the magic? Right. All I did was to copy and paste the circuit in step 4 exactly six times, since we need six tubes. Now it's finally time to reveal the functionality of the 74HC595. Previously mentioned and seen, the 74HC595 is a shift register. We use it because the microcontroller only offers a very limited amount of I/O pins. Shift registers let you connect more stuff with just three pins: All of our data is shuttled through a serial pin into shift registers, controlling high side switches that we met before to turn the tube segments on and off.

Now if your tube circuit is sort of set up, get your microcontroller ready! We are going to microcontrol the six VFD tubes for the very first time. If you want to use an Arduino board, like I did, connect

  • clock pin of the 74HC595 (pin 11), SCK to pin D2 of the Arduino Uno
  • latch pin of the 74HC595 (pin 12), RCK to pin D3
  • and serial data pin of the 74HC595 (pin 14 of the first shift register), SER to pin D4 of the Uno

Have some fun with the little block of code I've written for a test drive. It's just a simple and stupid counter which starts at zero and counts up to 999,999. The top Fritzing picture shows how the first 74HC595 is supposed to be connected. All output pins will go to the UDN2981 except for pin 9 (serial out), which has to be connected to serial in of the next 74HC595.

Step 8: Adding Functionality: the Real Time Clock - DS1307 Vs DS3231

What else do we need for a VFD clock? Oh right... it's the clock. So finally we're adding a circuit that provides clock functionality. Our so called RTC (real time clock) is backed up with a battery so that the clock can tick on even if OpenVFD is turned off itself. That makes sense, right? Since we don't want to lose the time when turning on the next time. We choose between a DS1307 and a DS3231 module:

  • The DS1307 is an affordable RTC solution, simple to control but with trade-off in accuracy depending on the crystal used - which is in general pretty inaccurate due to temperature change. I had situations where the DS1307 was a minute or more off after a day. That wouldn't work in a commercial product at all
  • Luckily, the DS1307 module can easily be (almost) drop-in replaced by a DS3231 module. The DS3231 is a RTC with a TCXO (temperature compensated crystal oscillator) ensuring jaw-dropping accuracy of less than a minute error per year

After all, which one you want depends on how accurate you want it to be. Both are tested to be both pin and source code compatible to the OpenVFD schematics and firmware (software). We connect the I2C interface of the DS1307/DS3231 module to the I2C pins of Arduino (SDA -> SDA, SCL -> SCL).

Step 9: Adding Functionality: Light Up the Clock

Now let's add the most memorable characteristic of the OpenVFD clock: The LEDs that light up the tubes to create the effects and moods that we all love. It begins by finding the right RGB LED that is reliable and bright. Why RGB? Here's how beautiful colors work: We combine the three colors of RGB (red, green and blue) to get new colors. So, for instance, purple is just blue and red mixed together.

Meet the WS2812B digital LED. This LED acts like a shift register and is controlled by shuttling data through one single data pin.

What makes the WS2812B really lovely is that the exact same LED is found in NeoPixel by Adafruit. Even though the OpenVFD firmware does not rely on any Adafruit libraries (but on work done in this wonderful Instructable), Adafruit still provides brilliant documentation on this LED that help when working with them. Take a look at the connection diagram. OpenVFD chained up six WS2812Bs to light up the six tubes individually.

Just like the traditional Arduino-Hello-World uses Pin 13 for the 'blink' program, our LEDs are connected serially to Pin 13! Don't worry if they are SMD and not-so-breadboard-friendly. Something like this Adafruit breakout board will solve the problem . Or create a breakout board yourself!

Step 10: Adding Functionality: Everything Else & Putting It All Together

For the time OpenVFD is not connected to a PC, four tactile switches are used to set time, play with colors and do much more. The firmware OpenVFD makes them reacting to short and long presses.

A microphone module (MAX9812) makes your VFD clock dance to the tunes you enjoy. It measures sound as variations in air pressure and sends corresponding electric signals that are then evaluated by the microcontroller. Temperature measurement is done by a LM35 sensor that converts temperature into voltage levels. Our microcontroller translates this back to a temperature value that we all understand. While the RTC gets ridiculously accurate using DS3231, both LM35 and DS18B20 are somewhat like the German weather: moody.

---

And we're done with the complete VFD clock circuit design. You can download and see the complete prototyping circuit diagram below. If you got it on breadboard or prototype board by now, we're totally ready to upload the OpenVFD firmware to your microcontroller.

The latest firmware of OpenVFD is available on GitHub . When compiling, make sure the libraries RTClib, Wire and digitalWriteFast are ready. These are the only dependencies of OpenVFD. Everything about how the firmware works in detail is explained here.

Step 11: Building OpenVFD: the Circuit Board & Assembly

For the final prototype, I've designed a printed circuit board (PCB) which holds and interconnects the components. The design is as simple as it gets. It contains screw holes for a case mount, features buttons and plugs to be mounted to the back side of the clock.

Assembly begins from the circuit part with the lowest part profiles. In the last step, six of the IV-11 tubes are added to OpenVFD and we're done.

I decided not to publish PCB files as it is not suitable for home etching (hundreds of vias and thin traces). But the good news is that I will be working on a home-etching friendly PCB version that everyone can try out at home in the future. In the meantime... Why don't you design your very own PCB? I promise it's fun!

Step 12: Building OpenVFD: Acrylic Case

OpenVFD is about light and passion. To amplify this, the clock is designed to have its transparent enclosure made possible by acrylic. The aim is absolute simplicity at maximum color experience.

---

For your own clock, simply measure and create a case yourself using a laser cutter. I'm lucky to live next to FabLab Berlin, a place where crazy creative minds meet up. They got all the right tools. Otherwise, I'm pretty sure that there are a lot of services online that offer laser cutting.

Step 13: Building OpenVFD: Make It Shine!

When mounting the acrylic case and everything is done, it's time to light up the clock!

  • Find some exclusive place for the clock. Glass surfaces seem pretty ideal
  • Show it off to your friends. Celebrate how freakin' amazing you are!

And say thanks to me by voting for this Instructable, thank you for reading! <3

Step 14: Fluorescence by the VFD Collective

If my Instructable has inspired you to build your own VFD clock or you would like to have a complete one yourself, I'm excited to introduce Fluorescence by The VFD Collective to you. FLUORESCENCE is the commercial product based on the OpenVFD software and platform, using the second revision circuit board.

Feel free to check out www.thevfdcollective.com and build your own VFD clock using the DIY kit!

Technically, FLUORESCENCE builds upon all the strengths of OpenVFD like a flicker free display, full brightness and improves highly on design, energy efficiency and circuit protection. You can download the block diagram as well as the schematics of FLUORESCENCE right here:

Step 15: Appendix: OpenVFD Software

The stars of the appendix: OpenVFD Controller (myOpenVFD) and the firmware. With myOpenVFD, a simple to use Windows app that sends data over USB to the clock, you'll be able to

  • Set the OpenVFD time by synchronizing with your computer's clock
  • Set individual color for an LED in OpenVFD or choose a predefined pattern
  • Send some funny random messages to the clock display
  • Check the OpenVFD firmware version, check for updates Update or write new firmware to OpenVFD

OpenVFD Firmware is the software that controls and coordinates how things work on the clock. Written in Arduino C/C++ it sends clock or any data information to the tubes, sets different LED brightness levels, retrieves sensor data (temperature, sound) and gets in sync with the real time clock. It's just a single .ino file, handy to compile yourself.

Click here to see how the OpenVFD firmware works in detail with every function taken apart. That might be helpful if you want to write your modifications to the firmware!

Both myOpenVFD and the firmware can be downloaded from The VFD Collective. Also, find The VFD Collective on GitHub!

LED Contest 2017

Runner Up in the
LED Contest 2017

Share

    Recommendations

    • Water Contest

      Water Contest
    • Oil Contest

      Oil Contest
    • Creative Misuse Contest

      Creative Misuse Contest

    27 Discussions

    Good afternoon. I collected 2 versions of your project. Thank you for your support.

    001.jpg002.jpg003.JPG004.JPG005.JPG006.JPG007.JPG008.JPG009.JPG20180313_104514.jpg12rp3zngta.jpgIMG_0269.JPG001.JPG002.JPG003.JPG004.JPG005.JPG006.JPG007.JPGIMG_0138.JPGIMG_0143.JPGIMG_0144.JPGIMG_0146.JPGIMG_0161.JPGIMG_0163.JPG

    Your intro photo is stunning just as your project itself! congrats

    I do not know if I understand, but to feed the VFD, can you use only the "Boost Converter" mentioned above? Thank you

    1 reply

    Hello,

    it's important and essential here to have both a cathode (heater) voltage and a voltage for the anode (boost converter). For a single tube, a linear regulator might be ok for the cathode.

    Hello Kesselwagen,

    i'm trying to repeat your amazing project.
    To test the vu-meter i've buyed a MAX9812 module on Aliexpress, and it is not working... I've tryed 3 different module but when i select the vu-meter mode all the leds are turned off, also if i put the music so loud that my neighbour comes to dance on my sofa...

    Can you help me? Is ok that module or i've made some mistakes on the code? Currently i'm using the one found on the VFD collective.

    Thx.

    1 more answer

    Hey thanks and glad you're building a VFD clock.

    Sure. Did you get everything else to work? Try uploading the code using the Arduino IDE yourself here: https://github.com/hey-frnk/thevfdcollective/blob...

    which makes sure that you have the latest code. Also, use #define FIRSTCONFIG to configure the clock software for the first time. Hope that helps :)

    Good afternoon. I repeated your project. But all I have is "HELLO". Then stop. Please, you can help me.

    2 replies

    Thanks for reaching out and cool that you're building a VFD clock using OpenVFD. The error is because in void setup() the software tries to load all settings but there are no settings yet. So the thing you want to do to fix this problem is:

    Add the following code to the very beginning of void setup():

    firstConfig();
    saveConfig(1);

    This is to tell that the default settings should be loaded and saved. This only needs to be done once. If clock boots normally from now on, remove and upload the code again so that future settings can be saved correctly.

    Hope that works and good luck! Feel free to take some pictures of your working clock and share it with us, if everything's fine!

    Hello? dear Frank. Thank you very much for you help. I did this: firstConfig(); saveConfig();. Everything works for me now. Thank you for taking the time. Regards, Oleg.

    20180313_104514.jpg

    This will work but why not using a VFD driver chip that does the job of both 74HC595 and UDN2981, like MAX6921 or HV5812/HV518 ?

    1 more answer

    MAX6921 is quite expensive, so I never have considered it. Future designs will be created with a combination of HV5812 and MIC5891. They are also still more expensive than 6x 74HC595 + 6x UDN2981 at larger quantities, but of course unarguably have far less total footprint. When I started the project, I used parts that were available at my local supplier which was main reason why. Since that combination works fine, I didn't change a thing.

    Great looking project. What are the chances of using IV-22 tubes instead? I would wire connect them instead of board mount. Power supply have to be beefed up?

    It looks great! I wanted one right up till I saw your price. I suggest no more than $200 US and that is still a good profit but $313 is a bit much. Make the enclosure an option also. Most people that 'make' either own or have access to laser cutters and other ways to make there own. Having a sourced parts list and a completed PC board is the best way in my humble opinion.

    2 replies

    Thank you, Rick!

    Great idea, I'd love to make it cheaper. But I can tell you that building this in Germany with all the taxes, customs and everything 5 times more expensive than elsewhere, plus hard working time with hand soldering, there is really not much I'd make out of 313$ (250€). I can barely pay for my website.

    That is true, and I highly encourage designing and creating own versions of the VFD clock, that's what this Instructable is for. I tried to cover the theory and make it as universal as possible so that everyone can decide on their own what parts to use. The BOM at the beginning is just an orientation with parts that are greatly accessible and available everywhere. Also, I will be working on a complete home-etching friendly PCB and share it here to make this Instructable easier to reproduce :)

    Well, he designed it, made a PCB, case, etc. Unless it's a hobby, he wants to get paid for his work. I would forgo the PCB, wire wrap as in the "olde daze" and build it for under $100. But then I'm not into selling as a side line. I also think there is a lot of reducing in component count that could be done. I like the look and the idea, but it comes across as a clunky design, no dissing intended.

    hi I'm considering building your clock but cant find a eagle library for the tubes.

    can you help please

    1 reply

    Hi there,

    might want to try out the library found on this forum: https://www.elektroda.pl/rtvforum/topic1572077.ht...

    I'd love to share the library I'm using for the IV-11 tubes, but I can't seem to find the library on my current computer. Likely I lost it when my hard drive died last year. Will share the library here if I find it because it was a rather complete library with a lot of VFD and nixie tubes.

    I AM SO DISAPPOINTED IT WAS NOT A NIXIE TUBE PROJECT!

    VFD's are an OK sub.

    2 replies

    There was a gut in Honolulu that made a Nixie tube clock I wanted to buy so bad. Say. How long do VFD's last anyway? Longer than Nixies huh?

    Not as long in my experience. The cathode loses emission and the display gradually gets dimer and dimmer. I've read anywhere from 30k to 100k hours. I've had mine dim out after about ten years, long after you've lost interest.