Flipdot Spielereien von Rainer Radow

Ich habe 2016 ein paar neue und überarbeitete Flipdotmodule aus dem letzten Jahrhundert erworben, weil mir diese Technik einfach große Freude bereitet. 2017 habe ich nun endlich Zeit gefunden, dafür eine Platine zu entwickeln und den notwendigen Arduino Programmcode fertig zu stellen. Wer mag kann bei mir Flipdot Module inclusive Arduino-Ansteuerung und Uhrenmodul erwerben.

Wie funktioniert ein Flipdot?

Jedes einzelne Flipdot besteht aus einer magnetischen Platte die auf einer Seite gelb und auf der anderen Seite schwarz gefärbt ist. Die Platte ist über zwei kleine Plastikachsen in der Mitte frei drehbar gelagert. Unterhalb des Dots sind zwei Spulen mit Eisenkern angeordnet. Die Spulen sind als Doppelspule in Reihe geschaltet. Für jedes Dot gibt es somit zwei elektrische Anschlüsse. Durch einen Stromstoß von weniger als 1/1000 sec werden die Eisenkerne dauerhaft in eine Richtung magnetisiert und halten das Plättchen entsprechend der Kernpolung fest in einer Position. Gibt man danach einen zweiten Stromstoß mit umgekehrter Polung in die Doppelspule, wird das Magnetfeld der Eisenkerne umgekehrt und das Dot flippt in die entgegengesetzte Position

Flipdot Basics
Flipdot Basics (Radow © 2017-03-27)

Die Flipdottechnik ist sehr robust und störungssicher, solange man das Timing und den Spulenstrom beim Flippen im Griff hat. So weit mir bekannt ist, können diese Spulen dauerhaft an 5 Volt betrieben werden. Die kleinen 10 mm Dots haben beispielsweise einen Innenwiederstand von 16 Ohm, was an 5 Volt einem Strom von ca. 300 mA entspricht. Bei dieser Spannung flippen die Dots aber noch nicht betriebssicher. Die mir vorliegenden Flipdotmodule wurden früher in Bussen mit 24 Volt angesteuert, was einem Spulenstrom von 1,5 A ergibt. Diesen hohen Strom halten die Spulen der Dots nur für kurze Zeit aus und flippen sonst ihr letztes mal ;-)

Ich baue die Ansteuerelektronik meiner Module so um, dass die Logik komplett mit 5 Volt betrieben wird und eine Flipspannung von 9,5 - 12 Volt ausreichend ist. Die Flipspannung generiere ich mit einem Step Up Wandler aus den 5 Volt der USB Leitung. An einem moderne PC mit 1A USB-Strom kann das Modul direkt betrieben werden. Mag Euer USB-Ausgang das nicht, muss man einen USB Hub mit Netzteil oder ein Steckernetzteil mit mindestens 1A Leistungsabgabe verwenden.

Mit diesen Modulen "spiele" ich

Meine Flipdotmodule stammen von der Firma Brose. Die Module werden alle nach dem gleichen Prinzip und über die gleiche elektrischen Schnittstelle angesteuert. Das größte mir bekannte Brose Modul ist mit 19x28 Flipdots ausgestattet.

Flipdot Modul Aufbau
Flipdot Modul Aufbau (Radow © 2017-03-27)

Die Flipdots sind in einer Matrix verschaltet. Die Ansteuerung funktioniert ähnlich einer LED Matrix. Da Spulen im Gegensatz zu Leucht-DIODEN keine Sperrichtung aufweisen, ist jedes Flipdot in der Zeilensteuerung mit einer Doppeldiode versehen worden (z.B. BAV99LT). Ohne diese Dioden würden sich die Dots gegenseitig den Schaltstrom "weiterreichen".

Flipdot Matrix Doppeldiode
Flipdot Matrix Doppeldiode (Radow © 2017-03-28)

Die Steuerung ist so dimensioniert, dass immer nur ein Dot gleichzeitig geschaltet werden darf. Das X/Y Koordinatensystem hat seinen Nullpunkt oben links - von vorne gesehen. Die bis zu 28 Spalten (x) werden über den auf dem Flipdot-Modul befindelichen Chip direkt mit dem Schaltstrom versorgt. Der Zeilenstrom muss über den großen 60-poligen Stecker eingespeist werden. Über diesen Stecker bekommt auch der Spaltenchip seine Logikinformationen und seine Betriebsspannung.

Wenn für ein großes Display mehrere Module in Reihe geschaltet werden sollen, kann man die Module über die Dipschalter kodieren und dann über den Busstecker einzeln ansprechen. Da heutige Mikrocontroller sehr preiswert sind, empfehle ich allerdings jedes Modul mit einem eigenen Controller auszustatten. Dadurch kann man die Gesamtdarstellung auf den Modulen viel reaktionsschneller gesatalten.

Flipdot Spaltentreiber IC

Der große Chip auf meinen BROSE Modulen ist unterschiedlich gelabelt (z.B. BROSE oder ALCATEL) und trägt meist irgendwo die Nummer 2840. Unter diesem Link findet ihr das Datenblatt eines FP2800A, der elektrisch mit meinen "BROSE" Chips identisch zu sein scheint. Da dieser Chip direkt den Flipdot Strom schaltet, brennt er bei einer falschen Beschaltung auch mal durch. Wer meine Arduinoplatine und meine Library verwendet muss davor keine Angst haben! Bei ersten eigenen Experimenten mit solchen Modulen sollte man diesen Chip aber besser entfernern. Hergestellt wird dieser Chip angeblich nicht mehr? Er ist manchmal für ca. 5 bis 10 Euro bei Aliexpress.com als Ersatzteil zu finden - mir ist zum Glück noch keiner kaputt gegangen...

Flipdot Brose2840 = FP2800A, dieses Schaltbild habe ich aus dem Datenblatt kopiert
Flipdot Brose2840 = FP2800A, dieses Schaltbild habe ich aus dem Datenblatt kopiert (Radow © 2017-03-27)

Über die 5 Adresspins A0, A1, A2, B0 und B1 wählt man einen der 28 Ausgänge 0A bis 3G aus. Die Wahrheitstabelle dazu steht in obigem Datenblatt. Die Ausgänge treiben direkt die Spalten 1 bis 28 der Flipdotmatrix. Über DATA legt man fest ob die Ausgänge mit GROUND oder der Spaltenspannung VS beschaltet werden sollen. Damit es flippt, müssen wir gleichzeitig die "Gegenspannung" auf dem Kreuzpunkt der Matrix durch den Busstecker auf die richtige Zeile schicken - siehe unten.

Brose Flipdotmodule - 60-poliger Stecker

Die Logikeingänge A0 bis ENABLE und die Modulauswahl Modul 1 bis Modul 8 sind auf der Originalplatine über Spannungsteiler und Trenndioden sowie einen 8-bit comparator zur Modulauswahl auf den Busstecker geführt. Ich habe diesen Schaltungsteil auf meinen Modulen so modifiziert, dass ich sie direkt mit einer Logikspannung von 5 Volt schalten kann. Die Möglichkeit einer Modulauswahl habe ich dabei ganz entfernt. Mehrere Module betreibe ich mit mehreren Mikrocontrollern.

Original-Belegung des 60-poligen Flipdot Steckers auf den BROSE Modulen
Original-Belegung des 60-poligen Flipdot Steckers auf den BROSE Modulen "12V" muss im Original mit 24 Volt versorgt werden (Radow © 2017-03-27)

Erste Hilfe für ausgeflipte Dots

Beim Transport und beim Handling der Module kann es schon mal vorkommen, dass ein Dot aus dem Rahmen flipt. Das macht überhaut nichts - man kann sie einfach wieder einclipsen - dabei geht nichts kaputt. Achtung! Dots nur mit sauberen und fettfreien Fingern einsetzen, damit es keine Abdrücke auf der mattschwarzen Dotfläche gibt.

Wenn die Module lange nicht benutzt wurden, einen langen Transport hinter sich hatten oder im Liegen betrieben werden haben manchmal einige Dots keine Lust mit zu flippen. Da ist dann nichts wirklich defekt, sondern es sitzt mechanisch etwas schief. Zunächst sollte man das ganze Modul oder das betroffene Dot ein paar mal hin und her flippen lassen und ggf. mit den Fingern nachhelfen. Nützt das nichts, kann man das Dot vorsichtig in den Achsen ein wenig hin und her drücken. Bleibt das Dot störrisch nimmt man es heraus, richtet die Achsen neu aus und flippt es wieder in die Halterung. Bei ganz störrischen Dots könnte man es im Programmcode 2x hintereinander in die gleiche Richtung flippen lassen - das war bei meinen Modulen bisher aber noch nicht nötig.

Ausgeflipte Dots können einfach wieder eingesetzt werden.
Ausgeflipte Dots können einfach wieder eingesetzt werden. (Radow © 2017-03-27)

LED-Treiber

Auf einigen meiner Module ist jedem Flipdot auch eine Leuchtdiode zugeordnet. Diese sind in einer gesonderten Matrix miteinander verschaltet und werden über zwei zusätzliche Steckverbinder angesteuert. Eine dafür passende Ansteuerelektronik baue ich gerade auf.

Arduino Library für Flipdot Module

Zu meiner Arduino Flipdot Platine habe ich eine eigene Library geschrieben. Sie ist universell für alle meine Brose Module einsetzbar. Dieses Codebeispiel erläutert alle bisher implementierten Befehle: dotSetup(), dotPowerOn(), setAll(), resetAll() sowie setDot(x,y) und resetDot(x,y).
	   
// **************************************************************************
// wwFlipdot-basic-test
// 2017-03-27
// **************************************************************************
#include "wwFlipdot.h"
// ==========================================================================
void setup() {
  //Hier wählt man das Layout seines Moduls aus - dabei helfe ich gerne
  //dotSetup( 1, 28, 2, 15, 0);  //28x15 Startspalte (x), Anzahl Spalten, Startzeile (y), Anzahl Zeilen, Platinenversion
  //dotSetup( 8, 21, 6, 11, 0);  //21x11
  //dotSetup( 8, 21, 7, 13, 0);  //21x13
  //dotSetup( 8, 21, 1, 19, 0);  //21x19
    dotSetup( 1, 28, 1, 19, 0);  //28x19

  dotPowerOn();    //schaltet den DC/DC Wandler für die Flipspannung ein               
  delay(50);       //kurze Wartezeit, um den Spannungswandler auf Touren kommen zu lassen

  setAll(20);      //setze alle Dots mit einer Verzögerungszeit von 20 Millisekunden zwischen den Dots
  delay(100);      //warte 100 Millisekunden
  resetAll(0);     //lösche alle Dots so schnell es geht, also ohne Verzögerung
                   //da diese Funktion recht schnell arbeitet, schaffen es bei 0 oft nicht alle Dots korrekt zu flippen!
				   //das ist auch von der Spannungsversorgung abhängig...
  delay(100);
}
// ==========================================================================
void loop() {
  setDot(1, 1);     //setze das Dot X=1, Y=1
  resetDot(10, 1);  //lösche das Dot X=10, Y=1 
  delay(200);
  resetDot(1, 1);
  setDot(10, 1);
  delay(200);
}
// ===========================================================================
// ===========================================================================
	   
	 

Mit diesem Code kann man müde Kameraden wieder mobilisieren bzw. sehen, welche Dots ein wenig Nachhilfe benötigen. Zum optimalen Flippen sollten die Module senkrecht aufgestellt werden.

	   	
// **************************************************************************
// wwFlipdot-debug-test
// 2017-03-27
// **************************************************************************
#include "wwFlipdot.h"
// ==========================================================================
void setup() {
  //Hier wählt man das Layout seines Moduls aus - dabei helfe ich gerne
  //dotSetup( 1, 28, 2, 15, 0);  //15x28 Startspalte (x), Anzahl Spalten, Startzeile (y), Anzahl Zeilen, Platinenversion
  //dotSetup( 8, 21, 6, 11, 0);  //11x21
  //dotSetup( 8, 21, 7, 13, 0);  //13x21
  //dotSetup( 8, 21, 1, 19, 0);  //19x21
    dotSetup( 1, 28, 1, 19, 0);  //15x28

  dotPowerOn();    //schaltet den DC/DC Wandler für die Flipspannung ein               
  delay(50);       //kurze Wartezeit, um den Spannungswandler auf Touren kommen zu lassen
}
// ==========================================================================
void loop() {

  for (int i = 15; i>=0; i-=3) {
  setAll(i);       //setze alle Dots mit einer Verzögerungszeit von i Milisekunden zwischen den Dots
  delay(100);      //warte 100 Millisekunden
  resetAll(i);     //lösche alle Dots mit i ms Verzögerung
  delay(100);
  }
  delay(2000);
}
// ===========================================================================
// ===========================================================================
	   
	 
Dieses Video zeigt den oben gelisteten Debug Code in Aktion.

Flipdot Module mit Arduinoansteuerung zu verkaufen

Ein paar Module habe ich noch zu verkaufen. Ich schreibe Dir/Ihnen gerne welche Module zu welchem Preis verfügbar sind. Am besten ist es, wenn Du Dein Modul bei mir in Hannover abholst. Für den Postweg muss ich besoners die großen 21x19 Module sehr aufwändig = kostenintensiv verpacken - aber auch das ist natürlich möglich!

Flipdot Beispiel auf einem 21x19 Modul: