VFD Alarm Clock




About: Now retired but have a passion for robot design and construction. Also enjoy programming, my career was largely commercial programming and design work using Cobol, Fortan, and industrial automation and integ...

IV-27M Alarm Clock

Project date: March 2019 – May 2019


After the successful completion of the XIV Nixie Clock which was Direct/Static Driven, I was keen to start work on a new clock which was based on the Multiplexing(Dynamic) or “MUX” principle of operation, known also as “Muxing”. The new clock would be based on the USSR manufactured IV-27V VFD, 13 element, 7 segment tube. This tube requires a 24V common anode DC supply, which dictates what type of IC chip(s) are needed to support the multiplexing operation. To further understand multiplexing the following Wikipedia articles where of great help:



To understand how VFD displays work and what is involved in driving the display using either Direct or Multiplexed driver the following article was very useful:


The clock would have a simple function of displaying Time, Date, Humidity, Temperature, Pressure and an Alarm feature..

Here is a brief summary of how the IV-27M tube works:

The tube is evacuated (vacuum). In the tube is a substrate (anode) (usually based on phosphorus), which begins to shine when "bombarded" with electrons.The electrons come from a heater (cathode), which are in the form of very thin tungsten wires. Between the substrate (anode) and the heater (cathode) a control grid is mounted which is used to turn on and off the individual elements. The tube used here consists of 13 seven-segment displays.

The tube was manufactured in Russia in 1985 and carries the Russian Quality production mark on the rear of the tube. Both tubes I purchased came from an Ebay supplier "nixiestore" who I would highly recommend.


1. Arduino Mega 2560

2. MAX6921AWI Chip

3. TSSOP28 PCB board, 28 pin connection

4. IV-27M Russian 13 grid, 7 segment tube

5. BME280 sensor

6. 3W speaker

7. 16x2 LCD display with IC2 connection board

8. Green LED with 330 ohm resistor

9. RTC clock with battery backup

10. 12V to 3.5V Step Down DC-DC Adapter

11. 12V to 24V Boost DC-DC Adapter

12. 12V, 1A power Adapter

13. Two pole switch

14. 16 key keypad

15. Hot Glue, wood for box, felt feet, clear gloss varnish.

16. 30 AWG multi-coloured wire, heat shrink, PCB female connections.

17. Dupont connection wires

18. Plastic stand-offs for support of components

19. Arduino Board two pin Power Input plug

20. Small PCB board and two sets of header pins

Step 1: Pin Assignment of IV-27M

Cathode Heater Voltage

It is very important to use 3.5V. There have been some references to using 5V on the internet. While this could be used it will over-heat the grid heaters. To see this in operation view the IV-27M tube, while it is working, in a darkened room, the two heater lines can clearly be seen glowing red!


The first part of the project was to determine the pinouts on the IV-27M tube. There are Russian language-based datasheets and numerous Internet based descriptions of the left and right pinouts. Looking at the tube with the digits facing you, the left hand end has 15 pins and the right hand end has 11 pins. I simply soldered coloured 30 Gauge wires to both ends terminating in Dupont breadboard pins. Six of the left hand wires and one of the right hand wires had black heat shrink bands added to each end in order to differentiate them from the other solid colour wires.

The above chart details the 15 pin connections on the left hand end of the tube, and the 11 pins connections on the right hand end of the tube. Note that pins 1 and 2 on the right hand side are not used, pins 4 and 5 also on the right hand side are for the heater.To help wire up the correct tube wire to the appropriate MAX6921AWI connection I have added these connection details in brackets alongside the coloured wire for each of the pin connections.

Step 2: MAX6921 AWI Pinouts


There are 28 pin-outs on the MAX6921AWI chip all expect "DOUT" and "BLANK" are used in this project. It was not possible to support all 13 grids on the IV-27M with this chip, however for use with a "standard" Hours, Minutes, and Seconds clock it is the chip to use. I purchased this chip rather than the MAX6921AUI version as the solder points on the AUI version of the chip where just too small for me to solder while the larger 1.27mm solder points on the AWI chip where larger. You should check out "You Tube" to see examples of how to solder this chip. Put simply, I added flux to the PCB board, with a small amount of solder on the end of the soldering iron ran the edge of the iron along each of the 28 solder pads.I positioned the chip with all 28 legs over the 28 soldering pads and held in place with tape, I then pressed the soldering iron down onto the edge of each leg until I could see the solder run, (using a magnifying glass helps greatly here). Once complete for all 28 legs I used a continuity meter and tested between the top of each chip leg, as it goes into the chip, and the bottom of each PCB pin which I had previously soldered onto the reverse side of the CB board.I have a new set of chips and boards arriving shortly and will do a video of this soldering and place it here and on "You tube".

Firstly, my great thanks to Kevin Rye for all his help with the understanding and help with how this IC chip works. The attached Fritzing MAX6921 schematic details the connections required to power the 10 grids and 7 segments within each grid. In brief each grid is displayed one at a time with the remainder blank. This is repeated for each of the 10 grids, upwards of 40 times a second. Based on the principal employed in the film industry where 35 frames are displayed per second. Each of the frames is a single still image, however as 35 of these images are displayed every second the human eye cannot distinguish any individual image so these images blur into a moving image. This can be best seen using an iPhone camera to film the displayed characters, the recorded film shows the characters fading in and out.


It is necessary to purchase a TSSOP28 PCB pin converter board, this allows the 28 pins of the MAX6921AWI to be soldered to a PCB board which has 28 traces which in turn attach to 28 header pins, these pins are what are used to attach the wires from the tube, power supply and Arduino Mega board.

NOTE: Use a bread board to accurately position the two sets of 14 header pins under the PCB board, prior to soldering them to the PCB board.

The attached PDF file is the datasheet for the MAX6921 chip, very useful in its details of the chip, how the data is loaded into the chip, and what are its electrical characteristics.

Step 3: Construction


The clock can be housed in any simple box with the necessary rear cutouts for the power adapter, LCD display, power LED, and BME280. A side cutout is also made to allow for the speaker.

The entire project was bread boarded to start to test connections, once complete the Dupont wires are hot glued to the Arduino Mega 2560 to ensure that there is a solid connection between the wire and the board.

The attached Fritzing diagrams show how the various components are attached to the Arduino Mega and just as importantly how the IV-27M is attached to the MAX6921AWI chip. Each wire attached to the IV-27M was colour coded with similar coloured wires having a black heat shrink band applied to both ends. It is very important to also heat shrink the connections to each of the wires coming out of the IV-27M. Each of the connection wires are terminated with a PCB female pin and heat shrink is applied. I added a small power distribution board which was fed with 12V from the power adapter, which is turn powered the 12V to 24V DC-DC boast converter and a 12V to 5V DC-DC step down converter. This 5V supplied the Arduino Mega board, LCD screen, and speaker. The BME280 and MAX6921AWI both required 3.5V so were powered via the 3.5V output of the Mega board. A single LED lamp was powered via 12V.

Alarm Clock Schematic

(Incorrect MAXIUM chip diagram used, Fritzing system does not have a suitable MAX6921AWI diagram)

MAX6921AWI Schematic

Tube Enclosure

To limit the amount of dust and possible damage to the IV-27M tube I decided to use a glass test tube 20mm in diameter with the bottom removed using a diamond cutting wheel. This must be done with care and wearing the proper protective glasses. The IV-27M tube was placed inside the test tube and sealed at both ends with hot glue before being inserted into the 20mm copper pipes. Again hot glue was used to secure both ends of the test tube, finally the open end of the copper tube was pushed through a 20mm hole made in the top of the box lid.

Finishing Up

The box lid was attached to the box, with wood glue, and the base plate was attached to the bottom of the box using four small wood screws, thus allowing access to the components should the need arise in the future. Felt pads where added to the base plate.



The software was primarily developed during the Nixie Trilateral Clock project. The new part of the software deals with the generation and display of the characters and numbers. All characters are held in a 10-character array which represents the 10 characters that are displayed on the IV-27M. The software populates a 20-character array which is loaded into the MAX6921 chip one character at a time. Once loaded the MAX6921 uses these 20 characters to determine which of the 7 segments and 10 grids are illuminated.

I have attached two INO Arduino files, the first is the full program file and the second is a calibration / testing program that I used to ensure that the Mega/Chip/IV-27M interface was working correctly.The series of photos showing the back face of the clock show the sequence of displayed values which are used to adjust the RTC clock and to set the Alarm activation time. A WEMOS version of the Arduino board could have been used so that the time and date could be set remotely however I decided that this project should concentrate of the display multiplexing.

It is very important that the software works quickly without any delays, as this effects the resultant display.

The most important parts of the software are as follows:

int dataPinRegister[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

void write_loadPin(){

digitalWrite(loadPin, HIGH);

digitalWrite(loadPin, LOW);


void write_clockPin(){

digitalWrite(clockPin, HIGH);

digitalWrite(clockPin, LOW);


void process_display(){

for (offset = 9; offset >= 0; offset--){



for (i = 19; i >= 0; i--){ // It is very important to write the values in reverse order into the register

if (i >= 12)


dataPinRegister[i] = segmentArray[index][i-12];


digitalWrite(dinPin, dataPinRegister[i]);




dataPinRegister[offset] = 0;

if (offset != 0)

dataPinRegister[offset-1] = 1;


dataPinRegister[9] = 1;




Step 5: Project Overview

Project Overview

The main reason for this project was to work with and understand the Multiplexing of the IV-27M tube. While this tube has 13 Grids inside it, it can be considered the same as 13 individual VFD tubes such as the IV-11 Russian tubes which will part of my next project. In addition it was necessary to develop software to control the IV-27M tube with its 13 grids and 7 segments per grid. The MAX6921AWI allowed me to use 10 out of the 13 grids which was enough for this project, this was due to the 20 pinouts that where available for use on the chip. Multiplexing was the next step after working with Direct connected tubes as found in my previous Nixie clock projects. This method allows for a significant reduction in the number of connections required and components. There is a lot of miss-information on the net regarding the connections and powering of the IV-27M. For example which end of the tube is considered left or right when viewed from the front or back, and for each end the numbering of the pins. However the main contradiction is the heater voltage, 5V is suggested in some articles, this is definitely wrong, 3.5V is the absolute maximum, anything greater will make the two heater wires glow red!

The following You Tube video shows the clock's construction and video of it in action, (any flickering of the characters is due simply to the camera I was using, the actual characters displayed do not flicker at all).



    • Fandom Contest

      Fandom Contest
    • 1 Hour Challenge

      1 Hour Challenge
    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest

    12 Discussions


    Question 7 days ago

    Guess the 24V goes to Vbb of the MAX6921. It's missing from your schematic. Nice project!


    7 days ago

    Thanks for this great video


    12 days ago



    15 days ago

    Note: Code does not compile using the DS3231 library that the Arduino library manager links to. Rather, I found that this library from Henning Karlsen http://www.rinkydinkelectronics.com/library.php?id... does compile. For more details see Instructables https://www.instructables.com/id/Real-time-clock-u... This library at least does compile but I don't know if it's the same one used by the author so I cannot confirm that it will be fully compatible with this project. Hopefully ChristineNZ will confirm. By the way I find that one of the most frustrating issues with these projects is trying to source all the libraries that people use. It sure would be helpful to provide links to the non-standard libraries that are essential to get the code running. Otherwise, this is a fantastic project! Very creative. I've got several of these VFD tubes so I'm very glad that you took the time to share this.

    4 replies

    Reply 14 days ago

    Hi, thanks for the comment regarding driver libraries, something that I have not included in my project details, I will ensure that I do include links to any non-standard driver libraries I use from now on. The DS3231 driver can be found at: https://github.com/NorthernWidget/DS3231 I think I am using Version 1.0.2


    Reply 14 days ago

    Hi. Thanks for looking into this. I'm using the Arduino v1.8.9 IDE. The library manager does include the DS3231.h library that you used. There are two versions and I tried both but neither will compile with your code. Oddly the library that I found and mentioned above seems to work well in your code and it does compile with that. But, since it's not the library that you used I can't be sure it will work as intended. Maybe there's something else wrong on my end. Also I googled the SparkFunBME280.h library and downloaded a library that came up. Hopefully it's the same one you used.


    Reply 14 days ago

    Hi, I am also using Arduino v1.8.9 IDE, I use DS3231 with a standard RTC module purchased off Trade Me, Listing #: 2183390247, not sure why it does not compile, is it the driver line 27, or another line in the program?


    Reply 13 days ago

    I haven't actually tried programming the hardware yet. I'm just checking for errors using verify. It hitches up on line 28 where the SDA and SCL pins are assigned. I get the error message "no matching function for call to 'DS3231::DS3231(const unit8_t&, const unit8_t&)." There are a multitude of other error messages all related to the DS32331 RTC library. It's helpful to know that it works on your system. That implies that the problem is on my end. Maybe I have another conflicting library? I did try making a new Arduino library folder which contains only the essential libraries. That pretty much rules out the possibility of a conflicting library. But the same problem persists. I guess I'll just have to keep working through it.


    14 days ago

    I really enjoyed this instructable! Thank you for including so much detail of the analysis you used while developing this. It really helped me follow along with the development of the project.


    Question 14 days ago on Step 5

    It's a very fin project. I'v somone done with Arduino Nano and other Driverchips. So I have a IV-18 from Russia. Can I use this for this clock?