Driving VFD panels with PT6311 controller

User avatar
dmitryp
Site Admin
Posts: 45
Joined: Sun Aug 04, 2013 1:16 am
Location: Sydney, Australia
Contact:

Re: Driving VFD panels with PT6311 controller

Postby dmitryp » Mon Jul 14, 2014 11:48 pm

Hi Rafael,

Ok, I'll prepare a simple driver for you today when I am back home from work. So you can conduct a few experiments to do a little bit of reverse engineering to get understanding on how the VFD glass is connected to PT6311 (I am not asking for circuit diagram as most probably you don't have it). Then we will be in a position to tailor the existing library to suit your particular case. I've seen so many VFD panels and not a single one is the same although they look alike :)

Thank you,
Dmitry

Rafael
Posts: 12
Joined: Tue Mar 25, 2014 4:23 pm

Re: Driving VFD panels with PT6311 controller

Postby Rafael » Tue Jul 15, 2014 12:05 am

Thanks for your help Dmitry.

You´re the doc, Doc.

User avatar
dmitryp
Site Admin
Posts: 45
Joined: Sun Aug 04, 2013 1:16 am
Location: Sydney, Australia
Contact:

Re: Driving VFD panels with PT6311 controller

Postby dmitryp » Tue Jul 15, 2014 1:10 pm

Hi Rafael,

As a first step try to run the test attached, there is an Arduino library and a sketch. Before compiling specify correct values for VFD_CS_PIN, VFD_CLK_PIN and VFD_DATA_PIN.
As for the mode, try to use VFD_DISP_MODE_12D16S first. If it doesn't work try VFD_DISP_MODE_9D19S, VFD_DISP_MODE_10D18S, VFD_DISP_MODE_11D17S - these are the only possible modes for your display type.

What you should observe is a 'running digit' effect - all symbols of a specific digit are lit up while the remaining digits are dark, then one second delay and then the next digit should glow. Finally, as a last step, all digits should become dark and all special symbols are lit up at the same time and then eventually the display should be switched off.

Thank you,
Dmitry
Attachments
PT6311_Test_2014_07_15.zip
(9.79 KiB) Downloaded 999 times

Rafael
Posts: 12
Joined: Tue Mar 25, 2014 4:23 pm

Re: Driving VFD panels with PT6311 controller

Postby Rafael » Fri Jul 18, 2014 7:47 pm

Hi Dmitry,

Sorry for delay... My power supply is damaged, when I fix it, I will start to test your code.

Many Thanks.

Rafael

User avatar
dmitryp
Site Admin
Posts: 45
Joined: Sun Aug 04, 2013 1:16 am
Location: Sydney, Australia
Contact:

Re: Driving VFD panels with PT6311 controller

Postby dmitryp » Sun Jul 20, 2014 10:31 pm

Hi Rafael,

No worries, take your time.

Thank you,
Dmitry

Rafael
Posts: 12
Joined: Tue Mar 25, 2014 4:23 pm

Re: Driving VFD panels with PT6311 controller

Postby Rafael » Sun Apr 10, 2016 1:19 pm

Hello Dmitry,

How long? Finally I put the old power supply to run again...

We had success with the mode VFD_DISP_MODE_8D20S.

Image

My question is: How to control each extra segment? I mean, extra segments with symbols, not to display a character.

Or is there a library:

VFDPanel_20S8D.cpp
VFDPanel_20S8D.h
Charset20S.h

?

Image

Thanks a lot!!!!

Rafael
Posts: 12
Joined: Tue Mar 25, 2014 4:23 pm

Re: Driving VFD panels with PT6311 controller

Postby Rafael » Sun Apr 10, 2016 9:47 pm

A small step...

I am trying to maping each segment, we need 3 bytes to lit up all segments including symbols.

Image

Code: Select all

  fill_mem(0b00000000, 1, 0); // First Byte RED
  fill_mem(0b00000000, 1, 1); // Second Byte YELLOW
  fill_mem(0b11111111, 1, 2); // Third Byte for Symbols and anything else.


Reading your charset file, we need at least two bytes for a simple character and a special mapping for symbols.

For example, is there a way to build a function that contains two bytes to display a character?

Code: Select all

{0x53, 0x77}


Mapped Symbols:

Code: Select all

  fill_mem(0b00000000, 1, 0);
  fill_mem(0b00000000, 1, 1); 
  fill_mem(0b00000010, 1, 2);  // 0b00000010 "POWER"   
 
  fill_mem(0b00000000, 1, 3);
  fill_mem(0b00000000, 1, 4); 
  fill_mem(0b00000010, 1, 5);  // 0b00000010 "STOP"
 
  fill_mem(0b00000000, 1, 6);
  fill_mem(0b00000000, 1, 7); 
  fill_mem(0b00000010, 1, 8);  // 0b00000010 "REC"
 
  fill_mem(0b00000000, 1, 9);
  fill_mem(0b00000000, 1, 10); 
  fill_mem(0b00000011, 1, 11); // 0b00000001 ":" and 00000010 "PLAY"
 
  fill_mem(0b00000000, 1, 12);
  fill_mem(0b00000000, 1, 13); 
  fill_mem(0b00000110, 1, 14); // 0b00000010 "PAUSE" and 0b00000100 "CLOCK"
 
  fill_mem(0b00000000, 1, 15);
  fill_mem(0b00000000, 1, 16); 
  fill_mem(0b00000101, 1, 17); // 0b00000001 ":" e  0b00000100 "$"
 
  fill_mem(0b00000000, 1, 18);
  fill_mem(0b00000000, 1, 19); 
  fill_mem(0b00000010, 1, 20); // 0b00000010 "DOLBY"

  fill_mem(0b00000000, 1, 21);
  fill_mem(0b10000000, 1, 22); // 0b10000000 "USB"
  fill_mem(0b00001111, 1, 23); // 0b00000001 "TXT" and 0b00000010 "HD" and 0b00000100 "EPG" and 0b00001000 "SUB"


Image

This VFD board has buttons and leds linked to the controller, it´s possible to use them?

Thanks a lot for your great work!

I like too much VFD, Crt and Nixie tubes... :)

User avatar
dmitryp
Site Admin
Posts: 45
Joined: Sun Aug 04, 2013 1:16 am
Location: Sydney, Australia
Contact:

Re: Driving VFD panels with PT6311 controller

Postby dmitryp » Tue Apr 19, 2016 11:16 pm

Hi Rafael,

Sorry for the delay.

One step a time, special symbols and button events should be looked at much later, when you can display meaninful characters.
Given that by the look of things you already know segment mapping, you should be able to generate charset for your VFD panel. Have a look at this code, especially at Charset16S.h - there are two bytes per one character, it should be relatively easy to merge this code with what you have now:

http://magictale.com/wp-content/uploads ... _16S8D.zip

Thank you,
Dmitry

Rafael
Posts: 12
Joined: Tue Mar 25, 2014 4:23 pm

Re: Driving VFD panels with PT6311 controller

Postby Rafael » Wed Apr 20, 2016 12:12 am

Hi Dmitry,

I hope all is well with you and thanks for your reply.

Trying to adapt your code, I don't have any signal in display.

Based in other example posted here: PT6311_Test_2014_03_15, I Have:

Sketch:

Code: Select all

#include <util/delay.h>
#include <VFDPanel_20S8D.h>

#define VFD_CS_PIN 2   //Just an example, specify your own correct pin number! This is STB in PT6311 datasheet notation.
#define VFD_CLK_PIN 3  //Just an example, specify your own correct pin number! This is CLK in PT6311 datasheet notation.
#define VFD_DATA_PIN 4 //Just an example, specify your own correct pin number! This is DIN in PT6311 datasheet notation.

VFD_20S8D vfd(VFD_CS_PIN, VFD_CLK_PIN, VFD_DATA_PIN);

void setup()
{
  vfd.reset();
  vfd.displayOnCmd(VFD_DIMMING_MAX);
  vfd.print_f_p(PSTR("HELLO"));
}

void loop()


}


And modified files are attached.

My question is: Maybe PT6311 driver needs to change too?

Thanks a lot.

Rafael
Attachments
VFDPanel_20S8D.zip
(6.59 KiB) Downloaded 252 times

User avatar
dmitryp
Site Admin
Posts: 45
Joined: Sun Aug 04, 2013 1:16 am
Location: Sydney, Australia
Contact:

Re: Driving VFD panels with PT6311 controller

Postby dmitryp » Wed Apr 20, 2016 10:40 pm

Hi Rafael,

The code that you experimented with before already works on a low level based on the pictures you have uploaded. So PT6311 driver works for your VFD panel. All you need to do is to replace Charset16S.h and functions that refer to FONT_PGM which are:

Code: Select all

size_t MVFD_16S8D::write(uint8_t value);
void MVFD_16S8D::write_f(uint8_t value, uint8_t dstIndex, uint8_t dispColumn);


Thank you,
Dmitry


Return to “General Technical Discussions”

Who is online

Users browsing this forum: No registered users and 1 guest