Ein guter Vereinskollege der Eisenbahnfreunde Bietigheim-Bissingen e.V. kam an einem unserer Bastel-Nachmittage auf mich zu und fragte mich, ob ich ihm eine elektronische Steuerung für seinen neu erworbenen, aber gebrauchten WIAD-Kran bauen könnte. Das klang verlockend und sofort schwirrten mir erste Ideen im Kopf herum; so schwer kann das ja nicht sein – weit gefehlt!
Auf dieser Seite möchte ich das WIAD-Kran Projekt mit Joystick-Steuerung vorstellen und die großen (und kleinen) Stolpersteine, welche mir der Kran immer wieder in den Weg gelegt hat, vorstellen. Das Projekt konnte nämlich erst mit der dritten Version der Elektronik-Steuerung abgeschlossen werden – auf Kosten meiner Nerven…
Erste Version
Zu aller erst musste ich die originale und antiquierte Steuerung verstehen. Diese ist in einem kleinen Stellpult integriert und ermöglicht es jeden der vier Kran-Motoren zur gleichen Zeit in unterschiedliche Richtungen zu bewegen. Dies sollte natürlich auch die neue Steuerung können, also fiel recht schnell die Idee, anstatt den Tastern der Steuerung einfach Relais zu verwenden. Diese Relais sollten einfach die gleiche Logik abbilden, sodass am Kran keine Umbauten nötig werden würden.
Die Ingenieure waren nicht doof und haben sich den Wechselstrom zu nutze gemacht um Kabel bzw. Schleifer im Kran einsparen zu können. Kurz und knapp gesagt geht ein gemeinsamer Leiter an alle Motoren und der jeweils zweite Anschluss geht über Taster selektiert an die Anschlüsse eines Brücken-Gleichrichters. Diese sind so angeschlossen, dass jeweils einmal die halbe Sinuswelle oberhalb von 0 Volt (also positives Potential) an den Motor geht oder die halbe Sinuswelle unterhalb der 0 Volt (also negatives Potential). Immer im Bezug zum anderen Potential des zweiten Leiters dreht der Motor dann rechts oder links.
Neu sollte auch die Steuerung über eine Art Joystick möglich sein. Das ist nicht nur super bequem und intuitiv, sondern sieht in einem entsprechenden Gehäuse auch schick aus. Günstige und geeignete Joystick-Elemente mit X/Y-Achse waren auf eBay schnell gefunden – im Grunde genommen haben wir uns für Ersatzteile von PlayStation Controller entschieden. Die jeweils in jeder Achse eingebauten Potentiometer könnte man ja mit einem ADC eines ATMEL Mikrocontroller auswerten und darauf basierend die Relais ansteuern – ein altmodischer, aber ganz pragmatischer Ansatz eigentlich.
Diese Logik habe ich auf eine Platine gebannt, gefräst, bestückt und getestet. Das ernüchternde Resultat: nichts tut, ständig gibt es Kurzschlüsse und dadurch bedingt auch Controller-Resets. Zum Teil liefen Motoren auch ohne ersichtlichen Grund einfach weiter, sodass Teile des Kran beschädigt wurden. Sehr schlecht!
Trotz viel Nachmessen und herum probieren konnte keine Lösung bzw. genaue Ursache des Problems gefunden werden. Also noch einmal zurück auf Null und von vorne beginnen!
Zweite Version
Für die zweite Version habe ich mich mit meinem Vereinskollegen darauf geeinigt die bisherige Verkabelung des Kran aufzugeben und jeden Motor einzeln mit jeweils zwei Anschlüssen auszustatten. Dies war einfacher gesagt als getan, da neue Leiter in Form von Messingleisten und Schleifern in den filigranen Aufbau integriert werden mussten.
Diverse neue Anschlüsse mussten in das Krangehäuse bzw. die Katze geführt werden – hierzu fräste ich meinem Kollegen für den Umbau folgende Platine für weitere Schleifkontakte. Der Durchmesser beträgt ca. 30mm.
Auch auf Seiten der Elektronik musste sich etwas tun – raus mit den alten und doofen Relais und rein mit geeigneten Motortreibern!
- Ich entschied mich in diesem Fall für zwei Allegro A4990 Dual-Motortreiber (diese sind auf Breakout-Boards von Pololu bestückt)
- Rein aus eigenem Interesse wechselte ich auch den Mikrocontroller auf einen Cortex-M0 von ST Microelectronics, damit ich in die Welt der ARM Controller weiter eintauchen kann
- Neu war auch die Verwendung eines DC/DC Step-Down Schaltreglers für die Bereitstellung von permanenten 12 Volt für die Motoren, da der bisherige LDO sehr heiß wurde
- Die 3,3 Volt für den neuen Mikrocontroller stellte ich mit einem Standard LDO aus den bereits vorhandenen 12 Volt zur Verfügung (Wärme war hier nicht das Thema, da kaum Leistung gebraucht wird)
- Neue Status LED für eine optische Zustandsrückmeldung wurden vorgesehen
- Der Magnet für den optional anzuschließenden Greifer schalte ich nun mit einem MOSFET ein
Nachfolgend ist der Schaltplan, das Layout sowie die bestückte Platinen von beiden Seiten zu sehen.
Diese zweite Version hat leider auch nicht das getan, was ich mir eigentlich ausgemalt hatte. Die Motoren haben sich zwar wie vorgesehen langsam wie schnell bewegt, aber immer wieder quittierten die Motortreiber ihren Dienst – einzelne Motoren blieben einfach nach unterschiedlicher Zeit aus nicht erklärbaren Gründen stehen.
Eine genaue Analyse mit dem Oszilloskop sowie der Error-Pins der Treiber brachte dann die nötige Klarheit:
Die Bürsten-Motoren stören unheimlich stark und das sogar zurück auf die Masse der Platine. Auch hier kam es in seltenen Fällen zu Controller-Resets, jedoch weitaus weniger als noch bei der ersten Version. Eine weitere Erkenntnis lag auch darin, dass die starken Störungen der Motoren die Strom- und Spannungsbegrenzung der Treiber mächtig durcheinander gebracht haben – was letztendlich zum Abschalten der Endstufen geführt hat.
Der Einbau von Kondensatoren und Spulen zur Entstörung der Motoren brachte zwar eine deutliche Verbesserung der Signale, jedoch stiegen die Treiber trotzdem noch nach gewisser Zeit aus – vermutlich weil diese nicht genug Leistung abhaben können oder zu empfindlich sind.
Nach dem Ab- und wieder Einschalten der Versorgungsspannung konnte man wieder für kurze Zeit den Kran steuern, da dann die Treiber wieder auf den Ausgangszustand zurück gesetzt wurden. Via Software konnte ich solche Resets nicht weiter in den Controllern beeinflussen ohne die Platine modifizieren zu müssen, also war der Anstoß für die dritte Version gegeben.
Dritte und letzte Version
Bei der nächsten Variante wollte ich auf Nummer sicher, dass auch alles funktionieren würde und habe mir Rat bei meinen Elektronik-Kollegen auf der Arbeit eingeholt. Verändert wurden:
- mehr Kondensatoren verbauen, um eine saubere und stabile Versorgung aller Komponenten gewährleisten zu können
- Verbreiterung relevanter Leiterbahnen auf der Platine – ebenfalls für bessere Signale
- Verwendung neuer Motortreiber, welche speziell für Bürstenmotoren gemacht sind, mehr Leistung abhaben können und darüber hinaus eine Auto-Retry Option im Fehlerfall haben (die Entscheidung fiel auf MAX 14870 Breakout-Boards von Pololu)
Diese Änderungen habe ich auf eine weitere Platine gebannt und diese bestückt. Leider ging beim Auslöten der Teile von der alten Platine eine LED kaputt, aber darüber kann ich hinweg sehen.
Nachfolgend nun die neuen Komponenten:
Nachdem diese Variante aufgebaut war und zum ersten Funktionstest sollte, wurde es spannend! Tatsächlich funktionieren alle Funktionen – ganz ohne Störungen seitens Elektronik und das auch noch über längere Zeit! Damit konnte ein weiteres Projekt erfolgreich abgeschlossen werden.