Vacuum Fluorescent Display Watch

10,960

84

50

Introduction: Vacuum Fluorescent Display Watch

That whole project started a while back with an hackaday article from 2014 in which [Johngineer] build the 'ChronodeVFD', a wristwatch made from an old soviet vacuum fluorescent display. It kind of triggered the 'shut up and take my money' reflex in me, but as it wasn't for sale and didn't have any design details available I quickly had to scrap that.

Fast forward a bit, during a late night eBay shopping spree (as one usually does...), I stumbled upon a listing from an Ukrainian guy who sold an IVL2-7/5 VFD - the exact same model used for the ChronodeVFD. After a bit of back and forth with the seller I ended up with a box of these babies neatly wrapped in what seems like Russian newspaper - nice!
However, I now realised that I had no clue how to drive these things or even how they worked, so some googling was in order.

Step 1: What the Hell Is an VFD and How Does It Work?

Vacuum fluorescent displays work kind of like a CRTs where accelerated electrons are bombarded on a layer of phosphor which then emits this typical blue-greenish light. VFDs are driven with much lower voltages compared to CRTs which is why they are often found in small consumer equipment predating the LCD-era.

In order to create free electrons a filament is heated within the VFD, the cathode (at negative, or in our case ground potential). This creates an electron cloud around the filament, which will be accelerated towards any positively charged surface, here the plates of the anode. This on its own works already, but would require a separate pin for each segment on the display to drive it. To reduce the number of inputs, most VFDs are multiplexed with a matrix above each substructure like a 7-segment. Only when the plate and its matrix are at a positive voltage electrons will hit the phosphor surface.

The IVL2-7/5 is controlled with an anode voltage of around 24V for the matrix and plates. The filament is heated with 2.4V AC. The AC is needed to even out the voltage difference between the filament and the anode. If DC is used, the side closer to ground will be at a higher voltage difference (0-24V vs 2.4-24V) and may be brighter than the other side. In practice the difference is hardly noticeable.

Step 2: Testing

Initially I didn't have a datasheet for the display, so I had to resort to trial-and-error testing. The filament pins can easily be found by measuring the resistance between them as it should be in the order of tens of Ohms. All the other pins are either a short or open circuit.
In the end I found the original datasheet, so this wasn't really necessary...

Step 3: Circuit Design & PCB Layout

The watch was designed with the following specifications in mind:

  • Run (briefly) from a AA alkaline battery
  • Compact size
  • Wifi & Bluetooth
  • Easily programmable

The brain of the watch is an ESP32 (Wroom-32 module) as it can be programmed via Arduino and has build in Wifi/Bluetooth and a very low power sleep mode. To interface with the ESP32 a FTDI USB-Serial converter was used.

The most challenging part of this project was to get the different power supply correctly designed. The VFD needs 24V for its anode and ideally 2.4V AC for the filament. The ESP32 also need its share of 3.3V at more than 240mA when heavily using wireless communications. All that has to be squeezed out of a 1.5V AA alkaline cell.

Early on the 2.4V AC was replaced by just using 3.3V on the filament and modulating the output with an H-bridge to not burn up the filament. It actually can survive 3.3V for a bit, but quickly turns into a light bulb...

The 3.3V is generated using a MP3120 boost converter, that is specifically designed to work with single cell alkaline batteries. It can theoretically go down to 0.8V, but in practice only at very low currents. But it has a built in linear regulator, that allows the use of batteries with higher than 3.3V voltage like 14500 lithium cells.

24V for the VFD comes also from a boost converter MCP1663. This one is less efficient due to the high step-up from 3.3V to 24V. The display also works at lower voltages down to 16V, but loses much of its brightness.

To switch the 24V on the display anodes 2 high-side switching ICs TBD63783A with a 16 bit I2C expander (MCP23017) are used. This can also be done with discrete PNP & NPN transistors, but due to limited board area I opted for the more integrated solution.

The whole design and layout was done with KiCad5.

Step 4: Assembly and Some Troubleshooting

The PCB were ordered from JLCPCB with black solder mask and gold plating (because why not...). The assembly was done by hand.

Initially the USB-Serial converter didn't work, but after some troubleshooting this was due to mixed up data lines on the USB connector, that were fixed with some bodge wires as seen in the picture above.

Step 5: Code

The software was written with Arduino using PlatformIO.

The full source code and design files can be found on GitHub:

https://github.com/Pakue95/VFD_Watch

Thanks for reading!

Arduino Contest 2019

Participated in the
Arduino Contest 2019

Be the First to Share

    Recommendations

    • Battery Powered Contest

      Battery Powered Contest
    • Plywood Challenge

      Plywood Challenge
    • Plastic Contest

      Plastic Contest

    50 Discussions

    0
    Critters n Me
    Critters n Me

    Question 3 months ago

    Hello,
    Thank you for sharing your work. I'm almost ready to attempt making a version but wondering what component attributes should be acquired for the resistors, e.g., tolerance (1%, 5%, etc.) and, more so, the capacitors, e.g., voltage ratings (10V, 25V, 50V) and tolerance (2%, 5%, 10%)? Mouser/Digikey have quite a variety and I didn't want to presume that the most commonly stocked (highest inventory) would be suitable. Thank you again.

    1
    pakue
    pakue

    Answer 3 months ago

    Hey,

    Cool that you plan on making one! For the resistors, most of them should be fine with 5% tolerance, just the 3.3V Step-Up sense resistors should be 1% so the voltage output is within spec. The capacitors for the 24V rail should be 50V to give a little headroom and otherwise 20% (standard precision for X7R, X5R) on decoupling capacitors is more than enough. However the price difference for low quantity is not that large so it may be easier to just by 1% resistors and 50V caps if you're unsure.

    Hope that helps!

    Best wishes,
    Patrick

    0
    Critters n Me
    Critters n Me

    Reply 3 months ago

    Thank you - that is very helpful! I ordered 5 boards from PCBWay and there was an indication a modest 10% is provided to the author (yourself I hope). Mouser had everything needed so, other than the ESP32, the components are sourced from them. Lastly, the VFDs are from an honorable seller on ebay (they replaced a damaged IN-13). Looking forward to building the project and any challenges ahead.

    Kind regards,

    Don

    0
    pakue
    pakue

    Reply 3 months ago

    Hey Don,

    The page on PCBWay is unfortunately not from me. I hope they use the recent Gerber files from GitHub.
    Nevertheless, let be know if you run into any trouble.

    Best wishes,
    Patrick

    1
    Fierymonkey
    Fierymonkey

    6 months ago

    can i have the bom and cpl file.\thanks

    0
    Coopertrooper52
    Coopertrooper52

    Question 7 months ago

    Hi there,

    I love this project and have started to attempt to create it myself but JLC PCB have had some trouble with the file. It sounds like they can't machine the holes for the strap while keeping the hole plated. After looking at the file it looks like those areas have to be plated for electronic aswell as aesthetic reasons so I am not sure what to do? It looks like someone else here has managed to get the holes drilled and plated so I still have hope.

    I would really appreciate some advice thanks :')

    Capture.PNG
    0
    pakue
    pakue

    Answer 7 months ago

    Hey!

    They are just for aesthetics so NPTH is just fine for mounting a strap or similar. I haven't been able to get slot plating with JLCPCB to work, but if you find out what changes need to be made I'd be happy to update the files.

    Best wishes
    Patrick

    0
    bksachsen
    bksachsen

    Question 10 months ago

    Hi, what are the three buttons on the bottom for? They don't seem to have any function.

    1
    pakue
    pakue

    Answer 10 months ago

    Yes, I initially designed them to set the time or start functions, however opted to do it via NTP. Nevertheless, you can program them to do anything else.

    0
    bksachsen
    bksachsen

    Reply 10 months ago

    OK, thanks.

    0
    eburman
    eburman

    Question 12 months ago

    I'm nearly ready to solder the ESP-32 module onto the board. I'm using a hot air reworking station and a standard soldering iron. What would you recommend for the thermal pad on the underside of the module? Ignore it? Try to solder it from the underside of the PCB with a soldering iron? Use the hot air gun and solder paste (might overheat the module) or maybe use thermal paste instead of solder. Not sure how to proceed. How did you do it?

    1
    pakue
    pakue

    Answer 12 months ago

    Nice!
    I used to add a bit of solder on both the sides of the ground pad and heat it from the bottom with a soldering iron. However, in the datasheet of the wroom module it says, that the ground pad is not needed, so I'd suggest to just ignore it.
    I haven't had any issues on boards without the ground pad connected.

    0
    leoo13
    leoo13

    1 year ago

    "collect2.exe: error: ld returned 1 exit status"

    I don’t know how to fix this error.
    Help somebody

    error.jpg
    0
    pakue
    pakue

    Reply 12 months ago

    Try moving the "Vfd_Display.h" and "Vfd_Display.cpp" files into a folder called "Vfd_Display" where the Arduino libraries are. Otherwise the Arduino IDE may have trouble loading the files in the correct order.
    Let me know if that works.

    0
    leoo13
    leoo13

    1 year ago

    Hi, I am Alexander and I am from Ukraine!
    I repeated your project, please explain to me how can I program the U6 ESP32-WROOM module?
    How can I check if the "Battery voltage regulation" and the "VFD driver" are working correctly, at what control point should be 24V? How can I measure it?
    Thank you waiting for an answer from you ...

    IMG_20191126_215056.jpgIMG_20191126_215035.jpg
    0
    verbijvlad4
    verbijvlad4

    Reply 1 year ago

    Здравствуйте, Александр, хочу задать вам вопрос - как вы нашли перечень компонентов с нужными обозначения и?

    0
    leoo13
    leoo13

    Reply 1 year ago

    1;"R19,R18,R5,R6,R9,R12,R13,R14,R15,R16,R17";"R_0805_2012Metric";11;"10k";;;
    2;"C19";"C_1206_3216Metric";1;"10uF";;;
    3;"U10";"ILV2-5_7";1;"IVL2-7_5";;;
    4;"REF**,REF**,REF**,REF**";"Strap_Holes";4;"Strap_Holes";;;
    5;"U6";"ESP32-WROOM";1;"ESP32-WROOM";;;
    6;"U8,U9";"SOP-18_7.0x12.5mm_P1.27mm";2;"TBD62783A";;;
    7;"U4";"SSOP-20_3.9x8.7mm_P0.635mm";1;"FT231XS";;;
    8;"J2";"PinHeader_1x04_P1.27mm_Vertical";1;"I2C_Con";;;
    9;"U7";"SSOP-28_5.3x10.2mm_P0.65mm";1;"MCP23017_SS";;;
    10;"REF**,REF**,REF**,REF**";"Wire_Holes";4;"Wire_Holes";;;
    11;"U1";"SOT-23-5";1;"MIC5219-3.3YM5";;;
    12;"L2,L1";"L_Taiyo-Yuden_MD-5050";2;"10uH";;;
    13;"BT1";"BK-92";1;"AA BK-92";;;
    14;"C1,C2,C5,C6,C8,C11,C12,C14,C15,C16,C17";"C_0805_2012Metric";11;"4.7uF";;;
    15;"C3,C4";"C_0805_2012Metric";2;"47pF";;;
    16;"C9,C10,C18";"C_0805_2012Metric";3;"100nF";;;
    17;"C13";"C_0805_2012Metric";1;"1uF";;;
    18;"D1";"D_SOD-323";1;"D_Schottky 40V 1A";;;
    19;"J1";"USB_Micro-B_Molex_47346-0001";1;"USB_B_Micro";;;
    20;"Q1";"SOT-363_SC-70-6";1;"MBT3904DW1";;;
    21;"R1,R2";"R_1206_3216Metric";2;"0R";;;
    22;"R3,R4";"R_0805_2012Metric";2;"27";;;
    23;"R7";"R_0805_2012Metric";1;"1M";;;
    24;"R8";"R_0805_2012Metric";1;"640k";;;
    25;"R10";"R_0805_2012Metric";1;"1.05M";;;
    26;"R11";"R_0805_2012Metric";1;"56k";;;
    27;"SW1";"SW_SPST_EVQP7A";1;"B1";;;
    28;"SW2";"SW_SPST_EVQP7A";1;"B2";;;
    29;"SW3";"SW_SPST_EVQP7A";1;"B_RES";;;
    30;"SW4";"SW_SPST_EVQP7A";1;"B_0";;;
    31;"U2";"WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm";1;"DRV8837C";;;
    32;"U3";"TSOT-23-6";1;"MP3120";;;
    33;"U5";"TSOT-23-5";1;"MCP1663";;;
    34;"C7";"C_0805_2012Metric";1;"470pF";;;

    0
    pakue
    pakue

    Reply 1 year ago

    Hey Alexander,

    Sorry for the late reply!
    I answered your PM. Let me know if you have any problems.

    0
    leoo13
    leoo13

    Reply 1 year ago

    Hi, I figured out how to add firmware to the Arduino IDE platform.
    How should I choose a module? What parameters should I set?
    Thank you, I look forward to hearing from you ...

    esp32.jpg