Skip to content
Roland van Leusden edited this page Oct 2, 2020 · 38 revisions

Welcome to the VFD7938 wiki!

The VFD7938 VFD display is sold on AliExpress, with the attached PCB the display is a gimmick, no actual use, light show only. Every segment of the VFD breaks out into a pin, total is 72 pins. This project will be PCB with drivers TPIC6B595 (9x) and the Arduino code to operate the display.

20-9-2020: Rewinding of the transformer and redesign of the power supply is finished.

7-9-2020: Assembly and testing have been finished, the PCB with the display works! Now it's time to start coding and write some useful software for this display.

3-9-2020: The PCB has arrived, I will start assembly soon.

25-8-2020: The PCB design for the VFD7938 display is currently in production at JLCPCB, after testing of the PCB the Gerber files will be made available so you can roll your own.

Design considerations:

VFD's work with high voltages up to 50V on the Anodes and Grids. Several companies make VFD driver ic's:

  • M66000 serial VFD controller IC, 16 digit 7×5 segment
  • LC75710 serial VFD controller IC, 16 digit 7×5 segment
  • MAX6921 serial VFD controller IC, 20 outputs
  • UDN6118 parallel VFD driver IC, 8 outputs

As the display has no grids, you need to drive all segments individually, 4x MAX6921 would do the trick. They do however not come in hobbyist-friendly packages and can be hard to obtain. With a price of around 6 Euro from reputable resellers like Farnell, RS, Mouser, Digikey it's not a cheap solution also. The TPIC6B595 is available in DIP package, and with a price around 1.5 Euro a lot more affordable, that's why this IC was used. In the Arduino Community, there are several projects with the TPIC6B595 and code which will speed up development for this project.

Another use for this PCB could be as a big I/O expander with 72 outputs, the TPIC6B595 could also be used to drive LEDs, lamps, relays, and small motors. When used with relays and small motors the pull-up resistors R1 ~ R72 should be replaced with freewheeling diodes. As I don't own an SMD reflow oven, I have designed the PCB to use mainly through-hole components.

TPIC6B595

These chips take a serial input (SPI) of 1 byte (8 bits) and then output those digital bits onto 8 pins. You can chain them together so putting three in a row with the serial output of one plugged into the serial input of another to make 3 x 8 = 24 digital outputs. You can chain pretty much as many as you want. This makes it easy to control a lot of outputs like LEDs from only 3 digital microcontroller pins.

alt text

The Arduino outputs the data to the serial input (SER IN) while clocking the shift register clock (SRCK). After the 8th clock, a pulse to the register clock (RCK) transfers the data to the storage registers. If output enable (G) is low, then the VFD segments are turned OFF corresponding to the status word with ones being OFF and zeros ON. Notice that this is inverted behavior compared when LEDs are used.

alt text

Power Supply

The display came with a small transformer, input 220V, output 28V & 5V. In Europe since 2005 the mains voltage is 230V, so the output voltages will be a bit higher.

alt text

The 5V output for the heater of the VFD is too high, you can see it glowing red which will shorten the lifespan of the VFD. A series resistor of 10 Ohm 2W is therefore highly recommended. To avoid random segments being turned-on during powerup the Arduino will switch the anode voltage (V++) after the shift-registers have been initialized. As the power supply has only a few components, I have not designed a PCB for it. The transistors are not critical and can be replaced but need to have a Vceo rating of at least 45V.

alt text

During testing, I found that some ghosting effect occurs with this power supply. It's mainly related to the fact that the VFD filament heating should be center tapped and the anode voltage (38Vdc) is too high for a static VFD.

alt text

Source: http://www.noritake-itron.com/SubPages/ApplicNotesE/vfdoperapn.htm

Rewinding the transformer

I have decided to rewind the transformer because of this issue. It's obvious the AliExpress seller just put some surplus things together which work more or less but are not optimal. It's a small transformer, and disassembly is straight forward. I didn't count the number of windings, I cut the wire of the 28V winding in half and wound it back. Same for the 5V winding were I made an additional connection in the middle.

alt text

PCB Assembly

Start with the SMD resistors and capacitors, R73 ~ R81 (10K 0805) and C1 ~ C9 (100nF 1206).

Then the through-hole resistors R1 ~ R72 (10K 1/8W)

The TPIC6B595 U1 ~ U9 and lastly the headers CONN3, CONN5 and CONN6

I didn't use IC sockets for U1 ~ U9, as removing an IC will stress the connections of the VFD display and is not advisable.

Before connecting the display it is wise to test the assembled PCB.

alt text

PCB Testing

As the display has two VU meters that should move realistically, speed is important. We need to update 9 shift registers continuously so it's a good idea to utilize the SPI hardware of the Arduino instead of "bit-banging" pins. Capturing the SPI communication with a Logic analyzer shows that it takes 35.5µs to update the 9 shift registers,

alt text

I have used an Arduino Pro Mini (5V 16Mhz) for testing. Load the VFD7938_PCB_Test.ino Arduino sketch for testing. and make the following connections:

Arduino Pro Mini VFD7938 PCB
Pin 10 RCK
Pin 11 SerIn
Pin 13 SRCK
+5V +5V
GND GND
GND G

Use a led with a 1K series resistor, connect the anode to +5V and check if the led is blinking on every output.

Clone this wiki locally