Fluoreszenzanzeigen (VFD) mit PT6311 betreiben

Cassio

Aktives Mitglied
29. Okt. 2008
4.027
17
38
Region Hannover
Sprachen
  1. BascomAVR
Halllo zusammen!

Vor einiger Zeit hatte ich hier ja mal nach einem IC zur Ansteuerung einer Fluoreszenz-Anzeige (VFD) gefragt.

User Pirx hatte mir dann auch gleich den PT6315 genannt, über den ich auf den PT6311 aufmerksam geworden bin.
Als mir User Holli dann noch das vollständige Datenblatt zur Verfügung stellte, war ich beim Durchblättern schon begeistert.

Da ich inzwischen alles betriebsfertig (Testbetrieb) hergestellt habe, möchte ich euch meinen Testaufbau natürlich nicht vorenthalten. :wink:

Wie eben schon erwähnt, bin ich vom PT6311 völlig begeistert!
Wer sich die Möglichkeiten der Beschaltung einmal ansieht weiß bestimmt wo von ich rede. :D
Aus dem Grunde, hier mal das Anschlussschema aus dem Datenblatt:
PT6311_Anschluss.gif


Wie man sehr gut erkennt, kann man den PT6311 für folgendes verwenden:
  • Multiplexansteuerung einer VFD (oder Matrix-Anzeige) mit bis zu 12x16 Segmente (einstellbar)
  • Auswertung einer Matrixtastatur mit bis zu 48 Tasten
  • 5 separat ansteuerbare LED-Ausgänge (je 20mA)
  • Auswertung von 4 separaten Schaltern
  • 8 fertig integrierte Dimmstufen für die Anzeigenausgänge
  • Extern einstellbare Frequenz des internen Oszillators
  • Einfache Anbindung an den AVR via SPI

Wenn man sich die Liste so ansieht, dann grenzt der Chip ja schon fast an eine Eierlegende-Wollmilchsau. :D


Bevor ich aber Bilder vom Testaufbau und der softwareseitigen Ansteuerung hier einstelle, noch mal ein paar interessante Auszüge aus dem Datenblatt.

Die Pin-Config des IC`s:
PT6311_Pin-Konfig.gif


Das Block-Diagramm des IC`s:
PT6311-Blockdiagramm.gif


Die möglichen Modi`s, je nach Digits und Segmente:
PT6311_MODE.gif


Nun noch ein Foto von meinem Testaufbau:
PT6311_Betriebsaufbau.jpg


Details zum Chip und zum Testprogramm folgenden dann in den nächsten Beiträgen. :ciao:

Grüße,
Cassio
 
Hallo !

Nun möchte ich aber erst mal etwas zu meinem Testaufbau schreiben......
schließlich befinden wir uns hier im Bereich "Hardware". :wink:


Um den Chip auf einem Steckbrett (Breadboard) testen zu können, habe ich mir erst mal eine Adapterplatine erstellt.
Auf die Platine passt dann der PT6311 und der externe Widerstand für den internen Oszillator (entweder als SMD, oder Print).
Natürlich habe ich auch die drei Vdd-Pins gleich mit Spannung versorgt, welche aber auch jederzeit wieder getrennt werden können.
Obendrein befindet sich noch ein 100nF Kondensator und eine blaue "Betriebs-LED" auf der Platine.
Das Ganze sieht dann so aus:
PT6311_Platine.jpg


Damit ich nun auch alle Möglichkeiten mal ausprobieren kann die dieser Chip bietet, habe ich zusätzlich noch eine "AddOn"-Platine entworfen.
Diese AddOn-Platine ist so ausgelegt, dass sie direkt auf die PT6311-Platine gesteckt werden kann.
Mit dem AddOn kann ich nun folgende Möglichkeiten testen:
  • Auslesen der 48-Tasten Matrix
  • Ansteuern der separaten fünf LED-Ausgänge
  • Abfragen der vier separaten Taster (Schalter)-Eingänge

Die Platine dazu sieht so aus:
PT6311-AddOn.jpg

Natürlich werden nur die Pins des PT6311 mit der AddOn-Platine verbunden die auch benötigt werden!
Alle andere Pins wurden einfach ausgelassen.
Die Anordnung und Anzahl der Pins kann man auf der Unterseite recht gut erkennen:
PT6311-AddOn_Backside.jpg


Anschließend muss ich nur noch die beiden Platinen aufeinander setzen und schon ist der Testaufbau komplett. :D
PT6311_mit_AddOn.jpg
PT6311_Sandwich1.jpg


Soweit also erst mal zum reinen Hardware-Aufbau meiner "Testumgebung".

Grüße,
Cassio
 
Hallo !

Um das Thema nun abschließen zu können, möchte ich noch kurz mein Testprogramm und ein paar Bilder hier einstellen.

Das Testprogramm ist vom Prinzip her nur eine DCF77-Uhrenprogramm, dass alle 20 Sekunden auch das Datum anzeigt.
Es wird also einmal pro Sekunde die VFD aktualisiert und der LED-Ausgang Nr. 5 wird im Sekundentakt getogglet.
PT6311_Datum.jpg

Mit Schalter 1 und 2 kann man die DCF-Zeit und das DCF-Datum anzeigen lassen.
Zusätzlich werden die LED-Ausgänge 1 und 2 aktiviert, so dass die LED`s dann zur Info leuchten.

Mit Schalter 3 und Schalter 4 kann man die Anzeige beispielhaft in drei Stufen dimmen bzw. wenn beide Schalter auf GND liegen die Anzeige auch komplett ausschalten.
Beide Schalterpositionen werden wieder mit den LED`s 3 und 4 signalisiert.
Hier mal ein Foto von den Platinen im Betrieb:
PT6311_Betrieb_1.jpg

Zum Test der 48er Matrix dient die erste serielle Schnittstelle.
Die drei 4x4 Matrix-Tastaturen kann ich zum Testen einfach in die vorgesehenen Buchsen stecken:
PT6311_Matrixaufsatz.jpg
Jede Sekunde wird der Zustand der Matrix binär darüber ausgegeben.
Die Ausgabe sieht dann so aus:
Code:
Jedes der 48-bit entspricht einer Taste!
Mehrfachauswahl ist ebenfalls möglich!
Matrix-Key 1=00000000  (Matrix 1, Tasten 1-8)
Matrix-Key 2=00000000  (Matrix 1, Tasten 9-16)
Matrix-Key 3=00000000   (Matrix 2, Tasten 1-8)
Matrix-Key 4=00000000   (Matrix 2, Tasten 9-16)
Matrix-Key 5=00000000    (Matrix 3, Tasten 1-8)
Matrix-Key 6=00000000    (Matrix 3, Tasten 9-16)

Vorteilhaft ist auch, dass die Matrix noch bei ausgeschalteter Anzeige funktioniert. :)



Nun aber mal zum Programm......
Damit der Programmcode etwas übersichtlicher ist, habe ich die Routinen für den PT6311 in separate Dateien gepackt.
Diese Dateien werden zu Beginn und am Ende des Programms mit $INCLUDE einfach hinzugeladen.

Einmal die Declare-Datei für die Sub`s und Variablen: Anhang anzeigen _declare.zip

dann noch die Sub-Datei mit den Subroutinen und der Anzeigetabelle: Anhang anzeigen _subs.zip

Das eben beschriebene Beispielprogramm sieht dann so aus.
Code:
$regfile = "m1284pdef.dat"
$crystal = 16000000                                         'extern

$hwstack = 128
$swstack = 128
$framesize = 128

$baud = 38400

'(
       ----------------------------
       -------AVR44MDL-Modul-------
       ----------------------------
       o--PD0/RxD   |    SCK/PB7--o VFD-SCK
       o--PD1/TxD   |   MISO/PB6--o VFD-DA
       o--PD2/INT0  |   MOSI/PB5--o VFD-DI
       o--PD3/INT1  |        PB4--o VFD-STB
       o--PD4       |        PB3--o
       o--PD5       |        PB2--o
       o--PD6       |        PB1--o
LED--- o--PD7       |        PB0--o
       o--SCL/PC0---|--------PA0--o 
       o--SDA/PC1   |        PA1--o 
       o--PC2       |        PA2--o 
       o--PC3       |        PA3--o 
       o--PC4       |        PA4--o
       o--PC5       |        PA5--o
       o--PC6   --16MHz--    PA6--o
       o--PC7   Resonator    PA7--o DCF77-Input
       o--Vcc       |       ARef--o
       o--GND       |        GND--o
       ----------------------------
')


' ==============================================================================

' Bestimme die Ein und Ausgänge
Ddra = &B_0000_0000                                         '1 ist Ausgang 0 ist Eingang
Porta = &B1111_1111                                         'auf Hi oder Low setzen

Ddrb = &B_1011_1111                                         '1 ist Ausgang 0 ist Eingang
Portb = &B0100_0000                                         'auf Hi oder Low setzen

Ddrc = &B_0000_0111                                         '1 ist Ausgang 0 ist Eingang
Portc = &B1111_1000                                         'auf Hi oder Low setzen

Ddrd = &B_1000_1101                                         '1 ist Ausgang 0 ist Eingang
Portd = &B0111_0010                                         'auf Hi oder Low setzen

' #############################################################################

Stb Alias Portb.4
Set Stb

Led Alias Portd.7
Set Led

'------------------------------------------------------------------------------
' SPI Definition
'------------------------------------------------------------------------------
Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 64 , Noss = 1
'Clockrate = 4|16|64|128 (Teiler für XTAL)
'SPI-Speed = 16MHz / 64 = 250kHz
Spiinit


'######################## Pollin Modul : Inverted = 1 ##########################
Config Dcf77 = Pina.7 , Timer = 1 , Timer1sec = 1 , Debug = 1 , Update = 0 , Check = 0 , Inverted = 1 , Gosub = Sectic

Config Date = Dmy , Separator = .

Enable Interrupts

Date$ = "01.01.07"
Time$ = "12:00:00"

' #############################################################################
$include "_declare.inc"


' #############################################################################
Dim Sync As Bit                                             'Sync-Bir für DCF77
Dim Merker As Bit                                           'Temporärer Zustandsmerker
Dim Neu As Bit                                              'Merker für neue Daten ausgeben oder laden

Dim I As Byte                                               'Indexzähler
Dim Led_port As Byte                                        'Variable zum Steuern der LED`s
Dim Dimmer As Byte                                          'Variable für den Dimmerwert
Dim Dimmer_stufe As Byte                                    'gewählte Dimmerstufe
Dim Sw_merker As Byte                                       'VFD-Switch Merker

' #############################################################################
Dimmer = &B1000_1111                                        'Voreinstellung Dimmer
Vfd_init                                                    'VFD initialisieren
Print "VFD Init erfolgt..."

Do


   Vfd_switch                                               'VFD Schalter auslesen
   Vfd_matrix

If Neu = 0 Then
   Neu = 1
   Print "Switche=" ; Bin(vfd_sw)
   Print "Matrix-Key 1=" ; Bin(vfd_key(1))
   Print "Matrix-Key 2=" ; Bin(vfd_key(2))
   Print "Matrix-Key 3=" ; Bin(vfd_key(3))
   Print "Matrix-Key 4=" ; Bin(vfd_key(4))
   Print "Matrix-Key 5=" ; Bin(vfd_key(5))
   Print "Matrix-Key 6=" ; Bin(vfd_key(6))
Else
End If

'(
Die Matrix funktioniert auch bei "Display-OFF" !
Jedes der 48-bit entspricht einer Taste!
Mehrfachauswahl ist ebenfalls möglich!
Matrix-Key 1=00000000  (Matrix 1, Tasten 1-8)
Matrix-Key 2=00000000  (Matrix 1, Tasten 9-16)
Matrix-Key 3=00000000   (Matrix 2, Tasten 1-8)
Matrix-Key 4=00000000   (Matrix 2, Tasten 9-16)
Matrix-Key 5=00000000    (Matrix 3, Tasten 1-8)
Matrix-Key 6=00000000    (Matrix 3, Tasten 9-16)
')
   ' ----------------------------------------
   If Vfd_sw.3 = 0 Then                                     'VFD-Schalter 4 auf GND, dann.....
      Text = Time(dcf_sec) : Vfd_ 2 , Text                  'DCF77-Zeit anzeigen
      Vfd_bin 11 , 0 , 4 , 0                                'dcc-Segment leuchtet als Hinweis
      Merker = 1                                            'Merker zur Anzeige des 11. Digits
   Elseif Vfd_sw.2 = 0 Then                                 'VFD-Schalter 3 auf GND, dann.....
      Text = Date(dcf_day) : Vfd_ 2 , Text                  'DCF77-Datum anzeigen
      Vfd_bin 11 , 0 , 4 , 0                                'dcc-Segment leuchtet als Hinweis
      Merker = 1                                            'Merker zur Anzeige des 11. Digits
   Else
      Merker = 0                                            'Merker zur Anzeige des 11. Digits
   Select Case _sec
      Case 10
         Vfd_ 2 , Date$                                     'Datum anzeigen
      Case 30
         Vfd_ 2 , Date$                                     'Datum anzeigen
      Case 50
         Vfd_ 2 , Date$                                     'Datum anzeigen
      Case Else
         Vfd_ 2 , Time$                                     'Uhrzeit anzeigen
   End Select
   End If


' ----------------------------------------
   If Led = 0 Then
      I = Vfd_sw + 16                                       'Zustand der ext.LED auf VFD-LED Nr.5 ausgeben
      Vfd_leds I                                            'VFD-LED`s ansteuern
   Else
      I = Vfd_sw                                            'Zustand der ext.LED auf VFD-LED Nr.5 ausgeben
      Vfd_leds I                                            'VFD-LED`s ansteuern
   End If


' ----------------------------------------
   If Sync = 1 Then                                         'Wenn ein DCF-Sync erfolgte, dann....
      Vfd_ 1 , " "                                          'Digit 1 leer
      Vfd_ 10 , " "                                         'Digit 10 leer
      If Merker = 0 Then Vfd_bin 11 , 0 , 0 , 1             'digital-Segment als Hinweis (Sync erfolgt)
   Else
      Vfd_ 1 , "<"                                          'Digit 1 füllen
      Vfd_ 10 , ">"                                         'Digit 10 füllen
      If Merker = 0 Then Vfd_bin 11 , 0 , 128 , 0           'analog-Segment als Hinweis (kein Sync)
   End If



' ----------------------------------------
If Sw_merker <> Vfd_sw Then
   Sw_merker = Vfd_sw
   Dimmer_stufe = Vfd_sw And &B0000_0011
   Select Case Dimmer_stufe
      Case 0
            Dimmer = &B1000_0000
               Reset Stb
               Waitus 4
                  Spiout Dimmer , 1
               Waitus 4
               Set Stb
      Case 1
            Dimmer = &B1000_1000
               Reset Stb
               Waitus 4
                  Spiout Dimmer , 1
               Waitus 4
               Set Stb
      Case 2
            Dimmer = &B1000_1011
               Reset Stb
               Waitus 4
                  Spiout Dimmer , 1
               Waitus 4
               Set Stb
      Case 3
            Dimmer = &B1000_1111
               Reset Stb
               Waitus 4
                  Spiout Dimmer , 1
               Waitus 4
               Set Stb
   End Select
Else
End If




' ----------------------------------------
If _sec > 1 Then Reset Dcf_status.7                         'Sync-Bit der Softclock zurücksetzen

If _sec = 1 Then
   If Dcf_status.7 = 1 Then                                 'Beim Sync der Softclock......
      Sync = 1                                              'Sync merken
   Else
      Sync = 0                                              'Kein Sync der Softclock
   End If                                                   'kein Sync merken
Else
End If



Loop


End


' #############################################################################
Sectic:
Toggle Led
Neu = 0

Return


' #############################################################################
$include "_subs.inc"


Das war es dann auch schon!
Wenn sonst noch einer Fragen haben sollte........
einfach raus damit. :D

Grüße,
Cassio
 
Hi Cassio,

nicht schlecht Herr Specht. :cool:

Verwendest du hier eine neue VFD oder hast du irgendein Gerät ausgeschlachtet ?
Wieviel Strom braucht denn diese Anzeige ?

Ich habe gerade nochmal eine Runde gesucht und VFD's gibt's ja sogar als DOT-Matrix Display :
http://www.noritake-itron.com/pages/

Gruß
Pirx
 
Hallo Pirx!

Die VFD hatte ich mir irgendwann mal bei Pollin mitbestellt, weil sie nett anzusehen war...... :wink:
Die Anzeige haben die schon seit Jahren im Programm.

G120120.JPG

Ist zwar keine Dot-Matrix-Anzeige aber doch recht brauchbar und zum rumspielen dazu noch sehr günstig.


Ich finde aber den PT6311 viiiiel interessanter, als die VFD. :cool:
Das IC müsste ja auch für 8x8-LED-Matrixanzeigen zu gebrauchen sein.
Im Modus 8x20 könnte man dann mal eben 2,5 LED-Matrixen an nur einem Chip betreiben!
Müsste ich doch mal ausprobieren...... :D


Grüße,
Cassio
 
Guten Tag,

habe durch Google diesen netten Thread hier entdeckt. Und zwar habe ich ein VFD mit einer Tastenmatrix und einer LED die ich erst per µC ansteuern wollte. Jetzt bin ich aber durch diesen Thread auf den PT6113 aufmerksam geworden. Dieser erledigt ja alle meine geforderten aufgaben von selber. Der einzige Punkt an dem ich momentan nicht weiterkomme ist die Spannungsversorgung. Zur Verfügung habe ich nur 12V. Habe dazu schon mehrer Möglichkeiten im Netz gefunden (DC/DC-Wandler, Spannungsverdopplung etc...).

Allerdings wollte ich hier einmal Fragen, wie du die Spannungsversorgung realisiert hast (Schaltplan?). :confused:

Vielen dank schon mal.

MfG

Mr.Martin
 
Hallo,

die Stromversorgung von nem VFD ist schon eine echte Herausforderung.

Die Heizung sollte auf jeden Fall mit einer Wechselspannung betrieben werden.

Bei der Wechselspannung für die Heizung muß in der Mitte die Kathodenspannung anliegen. Also entweder bei einem Trafo für die Heizspannung einen Mittelabgriff verwenden oder über ein Widerstandsnetzwerk die Kathodenspannung auf die Heizspannung aufaddieren.

So eine VFD ist ja eigentlich nur eine "normale" Elektronenröhre. Allerdings direkt geheizt. Und genau da liegt das Problem. Durch diese Direktheizung hat man bei falscher Spannungsversorgung Probleme mit einer ungleichmäßigen Ausleuchtung der Segmente.

Gruß
Dino
 
Hallo Martin!

Ja, der PT6311 ist qausi ein "Tausendsasser" und wäre für deine Anwendung genau das richtige Treiber-IC!

In Bezug auf die Spannungsversorgung....
Da experimentiere ich hier gerade noch ein bisschen. :wink:

Momentan versorge ich die Heizung mit einem ausgebauten DC/DC-Wandler von einer alten Netzwerkkarte mit BNC-Anschluss.
Danach muss ich die 9V zwar wieder mit einem Schaltregler auf 3V runter bringen, aber ich habe sie wenigstens von der Eingangsspannung isoliert. :D
Die negative Spannung für das IC (-24V) erstelle ich mir aus der 5V Versorgungsspannung mit einem Spannungsinverter.

Aktuell verwende ich für beide Aufgaben (StepDown für die Heizung und Invertierung auf -24V)
das günstige Allroundtalent MC34063
K100904.JPG
.


Ich suche also momentan noch nach einer eleganteren Lösung für die "isolierte" Heizspannung.
Die aktuelle Methode mit dem DC/DC-Wandler ist mir einfach zu groß und zu teuer. :wink:

Grüße,
Cassio
 
Vielen Dang für die Antwort :D

Auf den MC34063A bin auch bei meiner Suche auch schon mal drüber gestolpert. Werd mir den jetzt aber mal genauer anschauen.

Werde diesen Thread hier mal im Auge behalten. Wenn ich was gefunden habe, werde ich es natürlich hier auch teilen.

MfG

Mr.Martin :ciao:
 
Hallo Martin!

Wenn man bedenkt was der MC34063A so alles kann, hat er ein super Preis/Leistungsverhältnis. :wink:
Ich kann ja die Tage mal einen Schaltplan von meinem derzeitigen Aufbau incl. Spannungsversorgung hier einstellen.

Solltest du in Punkto isolierte (hochohmige) Heizspannung etwas Kleines und Günstiges finden, dann sag mal bescheid.
Natürlich kannst du hier auch deinen Aufbau nebst Erfahrungen einstellen...... dafür ist der Thread ja da. :wink:


Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)