Thursday, June 8, 2017

Salvage a VFD from a broken DVD

I had a broken DVD Player Philips DVP5960 so I thought to use the display with my other projects. The display is a Vacuum Fluorescent Display or VFD for short. This VFD is mounted on a front board alongside with an IR receiver and 4 tactile buttons and it is controlled by the ET16312N driver chip. You can use this front board for a digital clock or anything else that needs a display and a few buttons. The buttons can be desoldered and positioned elsewhere extended by wires.

To  create all this circuitry from scratch would be difficult. The ET16312N driver needs +5V, +12V and -24V. Also you would need to create an AC signal, multiplex the grids, drive the anodes, etc. but all this is already build for oyu on the front board. The power supply from the DVD Player can be used but I want to power the VFD from batteries so I will try to make a power supply myself.
The weird thing is that on the 12V line the VFD driver draws about 53 mA even if the display is off or dimmed. On -24V it draws about 6 mA. So yeah, it is not well suited for batteries unless you physically turn of the power using a transistor controlled by the MCU when the display is in standby.


Philips DVP5960 Front Board together with Crapduino
Philips DVP5960 Front Board together with Crapduino

Connecting the VFD to the DVD Player Powers Supply

I disconnected the front board from the main board and also the power supply from the main board, then I connected the power supply to the front board using breadboard jumper wires. You need to be careful that the wires are connected right so you don't blow the chip. For this a datasheet will be helpful and a lot of attention. You can download the datasheet for ET16312N chip down bellow.

Philips DVP5960 Main Board and Power Supply
Philips DVP5960 Main Board and Power Supply
DVP5960 Power Supply Connector Schematic
DVP5960 Power Supply Connector Schematic

This connector from the front board (image bellow) was connected to main board but now is connected to the power supply (image above) and microcontroller using jumper wires.
DVP5960 Front Board Connector Schematic
DVP5960 Front Board Connector Schematic

Connecting the VFD to an AVR Microcontroller

Front board connector pinout:
1 - MIC - microphone. Not available on DVP5960
2 - AGND - analog ground. Connected to GND on power supply
3 - +12V - connected to pin 5 on power supply
4 - -24V -  connected to pin 8 on power supply
5 - IR - signal from infrared receiver located on front board. I didn't need it so i left it disconnected
6 - DV33 - digital voltage 3.3V. Used by the IR receiver sensor and the standby LED. I left it disconnected
7 - GND -  connected to GND on power supply
8 - DATA - used to transmit and receive data between MCU and the VFD driver chip. Connect it to a MCU pin
9 - CS - connect it to a MCU pin
10 - SCLK -  connect it to a MCU pin
11 - LED- - ground for the Standby LED. I left it disconnected
12 - POWER_K - i think it activates the power through main board to front board but since I connected the front board directly to the power supply i didn't need it

Don't forget to connect the ground from the power supply that the MCU is powered on to the ground of the DVD Player's power supply.

Now that all the connections are set up you can test the VFD by sending something to be displayed. If you need the library to drive the VFD chip you can download it visiting this post Library for interfacing AVR microcontrollers with ET16312N VFD driver.


Communication protocol between a Vacuum Fluorescent Display (VFD) driver chip and a microcontroller

Here I will describe the ET16312N driver chip but almost all VFD drivers use the same protocol with few minor differences. The datasheet for the ET16312N can be downloaded down below.

This chips can control multiple types of displays like 11-segment & 11-digit to 16-segment & 4-digit. They require 5V to power themselves and -24V (-30V max) to drive the VFD. Apart from that they can also implement a 6 x 4 matrix key scanning, 8 steps dimmer circuit, 4 LED output ports and 4-bit general purpose input port.


The first thing to do is to initialize the display by telling the driver how many digits and segments the VFD has. In my case the VFD has 7 digits and 15 segments including the colon symbol. So each digit is formed by segments.

Vacuum Fluorescent Display (VFD) digits
Vacuum Fluorescent Display (VFD) digits


Sending commands and data to a VFD driver chip

If we look at the protocol diagram we can see that in order to send commands or data to the driver, the CS must be pulled LOW, then the SCLK is set to LOW and then HIGH after each bit is sent. The data is transmitted on the rising edge when the SCLK is HIGH. The bits are transmitted using the DATA pin - when DATA pin is HIGH for a 1 bit and LOW for a 0 bit. After all the bits are sent, the CS and SCLK are pulled HIGH.

Protocol for sending data to a VFD driver chip
Protocol for sending data to a VFD driver chip

Now that we know how to send commands, let's initialize the display by telling the driver what display we have.
Looking at the datasheet we can see that the first three bits describe the number of digits and segments. In example case (7 digits, 15 segments) the byte to be transmitted is 0b00000011. Since this is a command, after we transmit this byte the CS is set to HIGH again and that instructs the VFD driver chip that the transmission is over.

Sending a character to the VFD


To display characters you need to tell the VFD driver what segments needs to be turn on. On my particular DVD Player the segments have the following numbering.

VFD Segment Numbering
VFD Segment Numbering. Please excuse the crudity of this drawing, my cat drew it.
Since the driver support up to 16 segments, it expect 16 bits (or 2 bytes). The most significant byte must be sent first. Let's send the character 'A'. Is up to us what segments we choose to form the 'A' character. In this case the segments are 14, 2, 7, 3, 15, 1, 9, 16. The two bytes are:
0b11100001 - first byte to be transmitted. It includes segments 9, 14, 15, 16. So here the first bit represents segment 9 and bit 8 represents segment 16.
0b01000111 - the second byte to be transmitted. It includes segments 1, 2, 3, 7.

VFD driver chip data setting commands
VFD driver chip data setting commands
To send data first a command needs to be sent to tell the VFD driver chip what we are trying to do. In this case we want to display a character so we use the first 2 bits - write data to display memory. Notice that the bit 7 must always be 1.
Now the protocol is:
- CS is pulled LOW
- SCLK is pulled LOW and back HIGH for each 16 bits. The bits are transmitted using the DATA pin.
- after all the bits are sent, the CS and SCLK are pulled HIGH.


Reading data from a VFD driver chip

Reading data from a VFD driver chip
Reading data from a VFD driver chip
If we need to read key data or SW data first we send the command like when we chose to write data to display memory, then a delay time of 1 microsecond must be added and then we read the data from the driver but this time on the falling edge when SCLK is LOW.
The protocol is:
- send o command with instruction of what do you want to read
- add a delay time of 1 microsecond
- set DATA pin as input HIGH
- set SCLK HIGH
- set CS LOW
Now for every 8 bits to be received:
- set SCLK LOW
- check if DATA pin is HIGH or LOW and store the bits data
- set SCLK HIGH (repeat this steps 8 times)
After the loop when all bits are received:
- set DATA pin as OUTPUT
- set CS HIGH

Download section

Technical Manual - Philips - DVP5140, DVP5140K, DVP5142, DVP5965K, DVP5960
Datasheet - VFD Driver chip HT16512 similar to ET16312N

No comments:

Post a Comment