www.radonmaster.de/dancingwater/slave/         Stand: 29.10.2016

home             Details des Slave-Controllers

Der Notebook-PC oder Eventplayer legt die Wasser-Choreographie fest und sendet seine Anweisungen in einem unendlichen Datenstrom gleichzeitig an alle Slave-Controller. Jeder Slave sucht sich aus dem Datenstrom die für ihn bestimmten Informationen heraus. Die wichtigsten sind Fontänenhöhen und Helligkeiten, das sind zusammen sechs für jeden Slave-Controller. Es sind sechs, weil jeder Chip sechs Logikeinheiten für PWM-Ausgabe (siehe unten) besitzt. Zusätzlich gibt es Kommandos, die für jeweils eine Gruppe von Pumpen gelten. Sie gleichen die Fontänenhöhen einander an, die sich von Pumpe zu Pumpe unterscheiden.

Die Controller-Schaltkreise entsprechen dem Arduino Uno (8 Bit, 16 MHz, 32 KB Programmspeicher, 2 KB Arbeitsspeicher). Eine vollständige Slave-Einheit bestehen aus einem Controller-Schaltkreis zusammen mit Leistungstransistoren und Funkentstörgliedern für Pumpenmotoren oder LED-Beleuchtungen. Von denen sind immer drei Einheiten auf einer Leiterplatte/Platine im Europa-Format (16 cm x 10 cm) untergebracht. Die Bilder zeigen die Vorder- und Rückseite einer Platine. Der untere Bereich ist für die Beleuchtung verdrahtet, der obere für Pumpen. Dort sind die Widerstände durch Drahtbrücken ersetzt. Weil verschiedene Leiterbahnen für die recht hohen Ströme zu dünn wären, sind sie durch aufgelötete Drähte verstärkt.



Beim Arduino-System handelt es sich um Schaltkreise des Herstellers Atmel, für die Atmel auch eine eigene Entwicklungsumgebung liefert. Weil diese sehr hohe Einstiegshürden aufweist, hat eine Anwendergemeinschaft unter dem Namen Arduino ein wesentlich leichter zu handhabendes System aus betriebsbereiten Platinen und einer eigenen Entwicklungsumgebung (Integrated Development Environment, IDE) zusammengestellt.

Alle Arduino-Controller werden von der in einem PC laufenden IDE durch den USB-Anschluss der Platine programmiert. Die Programmsprache ist abgespecktes C, angereichert durch umfangreiche Bibliotheken für viele Anwendungsmöglichkeiten eines Controllers. Zum Empfangen von DMX-Signalen verwende ich die Bibliothek DMXserial von www.mathertel.de. Die verwendet die USART-Logik des Controller-Chips und ist so trickreich programmiert, dass wir zur Kommunikation kein zusätzliches intelligentes Interface benötigen. Sofern der Logik-Pegel stimmt (ca. 5 Volt), können wir die seriellen Anschlüsse eines DMX-Masters direkt mit allen Slaves verbinden.

Zur Programmierung der Arduino-Chips habe ich einen Arduino Uno mit einem Programmiersockel zum leichten Einsetzen und Entnehmen des Schaltkreises versehen.



Bei den Controller-Schaltkreisen handelt es sich um vorbereitete Atmel Chips, die ein spezielles Arduino Ladeprogramm (Bootloader) fest einprogrammiert haben. Sie werden zum Programmieren in den Sockel gesetzt und später auf eine der Slave-Platinen gesteckt. In meiner Anwendung benötigt jeder Slave außer der internen Logik nur seinen seriellen Eingang RXD und die PWM-Ausgänge (Pulsweiten-Modulation). Die Betriebsspannungen für Pumpe und LED werden damit periodisch ein- und ausgeschaltet. Der hier gezeigte Experimentieraufbau eines Slaves besteht nur aus den wichtigsten Bauteilen und kann eine Pumpe oder Lampe vollständig steuern. Hinzugefügt ist die Anordnung aller Anschluss-Stifte des Schaltkreises.



Die Hardware der Arduinos kann die von Oase verwendete PWM-Periodendauer von ca. 6 ms nicht liefern. Sonst hätte ich sie kritiklos übernommen. Stattdessen sind 8 ms, 4 ms und 2 ms möglich. 8 ms haben sich nicht bewährt, weil sich die Drehzahl der Pumpe häufig mit dem 8-ms-Takt synchronisiert. Damit verändert sich die Fontänenhöhe in deutlichen Stufen, obwohl das PWM-Signal sich stetig verändert. Mit Periodendauern von 4 ms und 2 ms funktioniert die Steuerung besser. Beim Nachmessen mit dem Oszilloskop sind auch bei 6 ms und 4 ms von mir unerwünschte Synchronisationen zu beobachten. Erst bei 2 ms sind diese von untergeordneter Bedeutung. Deshalb habe ich 2 ms für die Pumpen vorgesehen (Arduino-typische 490,2 Hz).
In der Praxis bedeutet das, dass die zunächst konstante Gleichspannung aus den Netzgeräten alle 2 ms ein und ausgeschaltet wird. Durch Verändern der Einschaltdauer ändern sich die mittlere Spannung einer Pumpe und deren Drehzahl. Die interne PWM-Logik des Controllers unterteilt eine PWM-Periode (hier 2 ms) in 256 Zeitschritte. Das im Controller laufende Programm teilt der Logik mit, nach wie vielen Zeitschritten die Spannung jeweils ausgeschaltet werden soll. 0 bedeutet ständig aus, 255 bedeutet ständig ein. Ab 10 Schritten (Einschaltzeit = 10 * 2ms/256 = 0.078 ms) laufen die Pumpen zuverlässig an mit einer Fontänenhöhe von 25 bis 30 cm.

Außer den weißen LEDs um die Düsen, will ich einen Ring farbiger Strahler im äußeren Brunnenbereich installieren. Es gibt preisgünstige RGB-Strahler im wasserdichten Alu-Gehäuse, die ursprünglich durch Infrarot-Fernbedienungen gesteuert werden. Die hier verwendeten sind umgerüstet auf externe PWM-Steuerungen der drei Farbkanäle Rot, Grün und Blau.

Die Zuordnung der PWM-Einheiten eines Controllers zu bestimmten Brunnenelementen kann nicht beliebig erfolgen. Wir müssen dabei immer die möglichen Taktfrequenzen der insgesamt sechs PWM-Ausgänge (in der Anschlussbelegung mit zusätzlichem /P bezeichnet) im Kopf behalten:

IC-Pins 11 und 12 (entsprechen Uno Platinen-Pins D5 und D6): Mögliche Frequenzen 61,04 Hz; 244,14 Hz; 976,56 Hz
Sinnvoll erscheint hier allein 976 Hz, weil für die anderen Frequenzen der interne Timer 0 verändert werden müsste. Das hat auch Einfluss auf andere Anweisungen des Arduino wie seine Zeitgeber-Funktion. Das PWM-Signal mit 976 Hz ist zur Helligkeits- oder Farbregelung von LED-Strahlern geeignet.

IC-Pins 15 und 16 (entsprechen Uno Platinen-Pins D9 und D10): Mögliche Frequenzen 30,64 Hz; 122,55 Hz; 490,20 Hz
122 Hz sind zur Erzeugung der Impulse für Modellbauservos geeignet. Das sind Motorantriebe, die nicht konkret zur Diskussion stehen. Ich behalte sie aber in Erinnerung, um damit eventuell die Düsen zu schwenken.
490 Hz bieten sich ebenso wie 976 Hz für Lampen an, 490 Hz zusätzlich für die Pumpen (siehe weiter oben).

IC-Pins 5 und 17 (entsprechen Uno Platinen-Pins D3 und D11): Mögliche Frequenzen 30,64 Hz; 122,55 Hz; 245,10; 490,20 Hz; 980,93 Hz
122 Hz sind wiederum für Modelbauservos geeignet.
490 Hz bieten sich ebenso wie 976 Hz für Lampen an, 490 Hz zusätzlich für die Pumpen (siehe weiter oben).

Insgesamt lassen sich mit einem Arduino-Schaltkreis maximal 6 Elemente steuern:
Bis zu 4 Motoren/Pumpen (490 Hz)
Bis zu 6 LEDs/Lampen, das wären 6 weiße Lampen oder 2 farbige RGB-Strahler mit jeweils roten, grünen und blauen LEDs (976 und 490 Hz)
Bis zu 2 Modellbauservos (122 Hz)
Aus praktischen Gründen werden wir das aber nicht immer vollständig ausnutzen.

Das Layout der Slave-Platinen sieht für alle PWM-Ausgänge LEDs vor. Das ist die aufwendigste Schaltungsvariante. Der Schaltstrom der LEDs beträgt max. 0,5 A. Für Pumpenmotoren werden einige Teile durch Drahtbrücken ersetzt. Hier ist ein max. Strom von 1,5 A vorgesehen. Die folgenden Schaltbilder zeigen die Leistungselektronik. Dabei handelt es sich um Verstärker der PWM-Signale aus den Controller-Chips mit Filtern gegen hochfrequente Störungen.



Der Widerstand R1 schließt den Eingang ab, für den Fall, dass kein Controller-Chip eingesetzt ist. R2 ist mit 470 Ohm recht hoch dimensioniert. Zusammen mit der Eingangskapazität Cin des Transistors wird so die Schaltgeschwindigkeit reduziert (Teil der Störschutzmaßnahmen). R4 sorgt zusammen mit den Widerständen in den LED-Strahlern für eine Begrenzung des LED-Stroms. Die anfallende Leistung wird auf zwei Widerstände verteilt, um Widerstände kleiner Bauform zu verwenden. Die Drosselspule L1 filtert gemeinsam mit dem Kondensator C1 hochfrequente Signalanteile heraus, um Radiostörungen zu vermeiden. Damit der Kreis L1 und C1 nicht schwingt, wird er durch die Diode D1 und den Widerstand R3 bedämpft. D1 ist auch erforderlich, wenn eine induktive Last (Elektromagnet, Motor mit klassischem Kollektor) geschaltet werden soll. Die Schaltung für die Pumpe ist einfacher, weil Strombegrenzung und Funkentstörung unkritisch sind.

Das folgende Bild zeigt die vollständige Schaltung einer Slave-Einheit in der aufwendigsten Version, wie sie z.B. zur Steuerung zweier RGB-Strahler geeignet ist. Die versorgten Lampen oder Pumpen sind jeweils zwischen den Anschlüssen Vu-.. und OUTu-D.. angeschlossen. Entsprechend der Verwendung lässt sich durch Drahtbrücken die Betriebsspannung von 12 V für Lampen oder 15 bis 16 Volt für Pumpen auswählen. Neben den sechs PWM-Verstärkern entsprechend des Detailbildes weiter oben sind auch weitere zum Betrieb nötige Bauteile eingezeichnet. Das sind die externen Teile eines Quarzoszillators und die Widerstände Ru2, Ru3 zur Versorgung der Reset- und Dateneingänge mit +5 V. Cu1 und Cu4 mit Ru4 sind sehr wichtig, weil sie Störungen vom Controller-Chip fernhalten, die die Schaltung selbst erzeugt. Der Controller erhält seine DMX-Kommandos durch die serielle Datenleitung RXD. Wie weiter oben beschrieben gibt es auf jeder Slave-Platine drei dieser Einheiten.



home