FlipDot

Aus Fingers Wiki
Zur Navigation springen Zur Suche springen

Da ich auf dem letzten Treffen einige FlipDot-Panels verteilt habe, hier mal die Doku zu der Technik allgemein sowie den Brose-Panels im Speziellen.

Flipdot-Panel.jpg

Grundsätzliche Funktionsweise

In den Pixel-Plättchen befindet sich ein kleiner Permanentmagnet, Die Aufhängung enthält einen Elektromagneten, der einen magnetisierbaren Eisenkern hat (nähere Infos: http://www.flipdots.com/how-it-works.html). Um einen bestimmten Zustand einzuschreiben, muss ein Puls mit einer gewissen Mindestenergie auf die Spule im Stator gegeben werden. Die Dauer und der Strom des Pulses müssen begrenzt sein, damit die Spule nicht überhitzt und ausfällt.

Verschaltung

Die Pixel sind als Matrix verschaltet, allerdings gibt es hier eine besonderheit, wenn man das ganze mit z.B. LED-Matritzen vergleicht: Die Spulen leiten in beide Richtungen, sodass man bei einer einfachen Matrix keine einzelnen Pixel ansprechen könnte. Die Lösung sind zwei Dioden pro Pixel, typischerweise in den Zeilenleitungen. Hierdurch hat jede Zeile dann zwei Anschlüsse: einen zum Setzen und einen zum Rücksetzen. (Bild folgt)

Je nach Anwendungsbereich sind die Panels darauf ausgelegt, entweder immer komplette Zeilen/Spalten oder einen einzelnen Pixel pro Zyklus zu aktualisieren. Bei großen Displays wird gerne auf mehrere Matritzen und Zeilenweises Update zurückgegriffen, was dann aber potente Treiber und igormäßig Strom braucht. Man kann pro Pixel circa 350mA veranschlagen, was mit ULN2803 und Co. gerade noch so funktioniert, für die Sammelleitungen werden dann allerdings dicke Transistoren fällig, um die Ströme aufzubringen. Im ÖPNV und vielen anderen Anwendungen hat sich daher eine Einzelpixelsteuerung etabliert; der Strom bleibt also beim Einschreiben im Bereich einiger hundert Milliampere.

Der FP2800

Da man aber immer noch pro (zeilen + spalten) je einen High- und Lowsidetreiber braucht, nebst der entsprechenden Steuerlogik, findet man dort einen Chip, der ursprünglich für 7-Segmentanzeigen (Stichwort "Tankstellen") entwickelt wurde: den FP2800. Er enthält 28+1 Source/Sink-Treiber und eine Dekoderlogik um mittels 5 Adressleitungen und einem Enable den Ausgang zu wählen, die allerdings etwas tricky ist (gemacht für vierstellige 7-Segmentdisplays, daher "lustige" Dekodertabelle). Der +1te Ausgang gibt immer das entgegengesetzte Signal des aktuell gewählten Ausgangspins aus (original als Common-Treiber gedacht) und wird in den Matritzen nicht genutzt. Die großen Brose-Flipdots in den Bussen haben pro Panel einen FP2800 für die Spalten sowie zwei auf dem Controllerboard (für die Zeilen). Alternativ kommen da mit "BROSE" gelabelte Nachbauten(?) zum einsatz, die pinkompatibel, aber elektrisch (Sättigungsspannungen und Timing) leicht abweichend sind. Das fällt aber normalerweise niCht wirklich ins Gewicht. Ein einfaches Durchlaufen der Adressen mit sich änderndem Data-Signal funktioniert mit den Nachbauten, aber mit meinen "FP2800"-gelabelten Chips nicht; diese scheinen noch einen Latch im Eingang zu haben, der auf entweder die steigende Flanke von Enable triggert oder bei Enable=Low transparent ist.

Verfügbarkeit und Alternativen

Einen einzigen gravierenden Nachteil hat der CHip jedoch: er ist eher schwer zu beschaffen; hauptsächlich als Altteil. Ersetzen kann man ihn durch ULN2003 und UDN2981 oder auch ULN2003 sowie PNP-Transistoren (so ist es in den neueren Brose-Displays gelöst). Als Dekoder drängt sich dabei ein CPLD geradezu auf. Will man sich den PLD sparen, kann man das ganze auch recht elegant mit ein paar Schieberegistern lösen, zusammen mit gegenseitigem Lockout der Treiber kommt man dabei mit einem 74HC00, sechs 74HC595 sowie je drei ULN2003 sowie UDN2981 hin. Problem ist dabei nur, dass das Gattergrab Platz braucht, dafür aber auf einer einseitigen Europaplatine und fast ohne Drahtbrücken aufbaubar ist. Mit doppellagiger Leiterplatte und Verwendung von SMDs bekommt man ähnliche Baugrößen wie mit dem PLD hin, hat aber eine etwas aufwändigere Ansteuerung.

Interface der Brose-Panels

Das 60-polige Flachkabel der Brose-Panels führt folgende Signale:

* 5 Adressleitungen zu den FP2800 auf den Panel
* D-Leitung des FP2800
* 8 Modulauswahlleitungen (Low-Aktiv)
* +VS für die Panels (VS-Pin des FP2800, 24V strombegrenzt, zum Ansteuern der Dots)
* 2x20 Zeilenleitungen
* 5V-Logikspannung für die FP2800
* 24V für die Pullups auf den Boards
* Masse

Pinout

1	Set (Zeile 1)
2	Set (Zeile 2)
...
19	Set (Zeile 19)
20	Set (unbenutzt, Zeile 20)
21	Reset (Zeile 1)
22	Reset (Zeile 2)
...
39	Reset (Zeile 19)
40	Reset (unbenutzt, Zeile 20)
41	GND
42	+24V
43	+24V
44	+VS
45	+5V
46	NC (?)
47	Panel D
48	Panel A0
49	Panel A1
50	Panel A2
51	Panel B0
52	Panel B1
53	Module #select1
...
60	Module #select8


Die Adress- und Datensignale der FP2800 werden dabei mit 24V Logikpegel geführt und haben Pullups auf den Modulen, auf der originalen Controllerplatine kommen 74LS07 als Pegelwandler zum Einsatz. Der Enable-Pin der FP2800 wird auf Modulebene auf eine der Auswahlleitungen konfiguriert (Dipschalter). Durch den in einigen Varianten des FP2800 enthaltenen Latch auf der Datenleitung muss der Zyklus Adresse+Daten setzen, Enable High, warten, Enable Low, Adresse+Daten setzen... eingehalten werden. Ich habe dabei die Modulauswahl bei mir mit einem 74HC42 BCD-Decoder gelöst. Ich verwende dabei die Ausgänge #Y[0..7] für die Modulauswahl (mit jeweils einem Gate der 74LS07er als Pegelwandler). Damit kann ich an den Eingangsbits 0..2 die Modulnummer anlegen. A3 ist damit dann ein active-Low "Output-Enable" (A3 hat Wertigkeit von 8, also werden damit höchstens die ungenutzten Ausgänge Y8 und Y9 aktiviert). Damit braucht der Microcontroller nur noch einen Pin zu wackeln um den Module-select/Deselect durchzuführen.