Tankanzeige

Anzeigen mit mechanischen Elementen sind immer eine tolle Sache, besonders wenn man sie hacken kann. So auch ein Anzeigemodul einer Zapfsäule mit elektromechanischen 7-Segment-Anzeigen in „Flip-Dot“-Technik, das unerwartet zu einem guten Preis aufgetaucht ist. :-)

Genau genommen handelt es sich um das Modul EC2000-FP6 des Herstellers Salzkotten (mittlerweile Gilbarco) in der Konfiguration 5/5/4. Das bedeutet: 3 Zeilen mit 5, 5 und 4 Dezimalstellen. Die Maximalkonfiguration wäre 6/6/5, erkennbar an den nicht belegten Plätzen auf der Platine. Erworben wurde das komplette Modul mit Metallgehäuse und bedruckter Plexiglasscheibe, aber ohne jegliche Doku.

Technische Daten

TL;DR

  • Logikspannung: 5V
  • Steuerspannung: 24V
  • max. Stromaufnahme: 500mA

Da keine Doku vorhanden war, mussten die Datenblätter der verwendeten Bauteile herhalten. Einen ersten Hinweis auf die verwendete Spannung liefert der Abwärtswander 8401L mit einer Eingangsspannung von 7-30V und einer Ausgangsspannung von 5V. Wir haben es also mit zwei Spannungen zu tun.

Die 5V als Logikspannung werden durch die Datenblätter des Mikrocontrollers Philips P87C52EBPN und der Treiber-ICs FP2800A bestätigt. Letzteres Datenblatt zeigt auch, dass die Steuerspannung der Segmentanzeigen nicht über 27V liegt und die Stromaufnahme max. 370mA beträgt. Im Nachhinein tauchten dann noch Fotos des Original-Netzteils auf, auf denen 24V Steuerspannung erkennbar sind.

Funktionsweise

TL;DR

  • Ansteuerung über 5 Bit Spalten- und Zeilenadressen, jeweils über ein FP2800A
  • Unterscheidung zwischen an/aus eines Segments über Zeilenadresse
  • Setzen eines Segments über kurzen Puls am ENABLE-Eingang der FP2800A

Da keine Zapfsäule aufgebaut werden sollte sondern nur die Anzeigeelemente angesteuert werden wollten, war der verwendete Mikrocontroller und die vorhandenen Wannenstecker nur von begrenztem Nutzen. Die Idee war daher, den Philips-Controller durch einen Arduino zu ersetzen, insbesondere da dieser freundlicherweise nur in einen Sockel gesteckt war.

Der FP2800A wird auch bei Flip-Dot-Matrixanzeigen eingesetzt, daher gibt es im Netz viele Infos zur generellen Funktionsweise: Mit 5 Bit Adressen werden 28 Ausgänge angesteuert, durch Anlegen der Logikspannung an den Enable-Pin wird das digitale Signal am Data-Pin (HIGH/LOW) als Steuerspannung an den adressierten Ausgangs-Pin gelegt. Damit war schnell die Vorgehensweise klar: Mittels Multimeter prüfen, welche Pins des Mikrocontrollers an die jeweiligen Pins der FP2800A gehen.

Erkenntnisse:

  • 5V Steuerspannung wurden durch Messung an Pin 40 (zu GND an Pin 20) verifiziert. Genau genommen waren es 4,85V, aber bei dem verwendeten Multimeter sehen wir das mal nicht so genau.
  • Die Pins 1 bis 5 adressieren den unteren FP2800A, der die Spalte dekodiert (Auswahl des Anzeigeelements, von oben nach unten und rechts nach links durchnummeriert, beginnend bei 1, die Adressen 8 und 16 sind nicht belegt)
  • Die Pins 39 bis 37 und 35 bis 34 adressieren den oberen FP2800A, der die Zeile dekodiert (Auswahl des Segments und ob es an- oder ausgeschaltet werden soll, beginnend von oben gegen den Uhrzeigersinn durchnummeriert, das mittlere Segment als letztes, beginnend bei 1). Pin 34 setzt zusätzlich den Data-Pin des oberen FP2800A und das invertierte Signal am Data-Pin des unteren FP2800A. Die Data-Pins werden also je nach Zeilenadresse passend gesetzt, sehr praktisch.
  • Der Pin 7 ist über weitere Bauteile (Buffer, Kondensatur, invertierender Schmitt-Trigger) an Enable des unteren FP2800A angeschlossen und wird auf 5V (0V am FP2800A) gehalten. Pulse zum Setzen müssen also auf LOW erfolgen, Ruhezustand ist HIGH.
  • Der Pin 33 ist analog Pin 7 an Enable des oberen FP2800A angeschlossen.

Welche Pins der Wannenstecker für die Stromversorgung zuständig sind war dann nur noch eine Kleinigkeit. Diese liegen nur am Wannenstecker der nach außen führt, der größere innerhalb des Gehäuses wird wahrscheinlich nur zur Programmierung des Mikrocontrollers verwendet.

  • Pin 2 und 6 sind GND
  • Pin 8 und 9 sind +24V

Ansteuerung

Jetzt aber schnell das Labornetzteil angeschlossen, auf 24V und 200mA eingestellt und den Arduino angeschlossen. Und siehe da: Es zappelt!

Also ein paar Pendel-Zugfahrten zum coden genutzt und eine kleine Demo implementiert (Pulslänge 5ms, 10ms Pause zwischen Pulsen): https://youtu.be/IuOBPjW_csM

Funktioniert schonmal ganz gut. Merkpunkte aus den ersten Versuchen:

  • Die mittleren Segmente bleiben beim „aus“-Schalten bei manchen Segmenten öfters auf halbem Weg liegen. Mit der Pulslänge oder der verfügbaren Stromstärke hat das nichts zu tun.
  • Deutliche Beschleunigung der Ansteuerung durch Speichern der Segmentzustände im Arduino-Sketch und begrenzen der Ansteuerung auf die Segmente, die auch wirklich geändert werden müssen.

FIXME ESP-Anbindung und Ansteuerung über MQTT beschreiben.

Nächste Schritte:

  • Breadboard-Schaltung auf Platine (Lochraster?) bringen
  • Hübsches Gehäuse bauen (mit Beleuchtung?)