Montag, 11. Januar 2016

Aufzugsteuerung mit Arduino

Im Stummiforum wurde die Frage nach der Ansteuerung eines Aufzuges zur Verbindung von Anlage und Schattenbahnhof gestellt. Eine nette Herausforderung, dachte ich, und machte mich an die Arbeit.


Heraus kam eine Steuerung auf Basis eines Arduino Pro Mini. Dieser vielseitige und einsteigerfreundliche Mikrocontroller ist bei Ebay für wenige Euro erhältlich; mit ein wenig Peripherie ist er imstande, den Aufzug anzusteuern. Auch überwacht er mittels Lichtschranken und Kontaktgleis den Verkehr, um Unfälle zu verhindern.

Verdrahtung


Gespeist wird die Aufzuganlage von einem gewöhnlichen Märklintrafo. Die Fahrstromversorgung (B1-3) wird sowohl für den Aufzug als auch die Zufahrten über Relais gesteuert. Mit Kontaktgleisen (K1-3) werden Fahrzeuge erkannt. Der Motor (M1,2) wird nur dann eingeschaltet, wenn sich auf den Zufahrten kein Fahrzeug befindet.

Anschlussplan ohne Lichtschranken und Endschalter

Zusätzlich sind Lichtschranken vorhanden, die sicherstellen, dass kein Fahrzeug übersteht und während der Aufzugbewegung mit dem Aufzugschacht kollidiert. Mit zwei Schaltern wird geprüft, ob sich der Aufzug in Endlage befindet.

Anschluss der Lichtschranken und Endschalter

Es darf hier zu keinem Kurzschluss zwischen den Lichtschranken und Endschaltern und dem Rest der Anlage kommen, da hier die Anschlüsse des Arduino direkt nach außen geführt werden. Aus diesem Grund wurden unterschiedliche Klemmenreihen gewählt: Für den oberen Plan mit 5,08 mm Rastermaß, für den unteren mit 2,54 mm.

Funktionsweise


Sowohl der Motor als auch die Elektronik benötigen Gleichspannung. Daher sind Brückengleichrichter, Linearregler und Pufferkondensatoren nötig.

Klemmen und Gleichspannungsversorgung

Die Relais kann der Arduino nicht direkt ansteuern, da er dazu weder den nötigen Strom noch die nötige Spannung liefert. Also wurde ein ULN2803A eingesetzt. Dieser enthält acht Darlington-Transistoren mitsamt Basis-Vorwiderständen und Freilaufdioden. Der verwandte ULN2003A dient übrigens dem bekannten WeichEi-Decoder als Ausgangsstufe.

Es wurden monostabile Relais eingesetzt, da diese billiger sind als bistabile und bei einem Reset des Arduino von selbst abfallen und so Motor und Fahrspannung abschalten. Um seine Arbeit zu überwachen, wurde mit jedem Relais eine LED in Reihe geschaltet. Diese würde bei vollem Betriebsstrom heller leuchten als gewünscht, also wurde ein Widerstand parallel geschaltet, durch den ein Teil des Relaisstroms fließt. Ein weiterer Widerstand, diesmal in Reihe, begrenzt den Relaisstrom.

Relaistreiber ULN2803 (IC2). Die Pins 1-8 sind Eingänge, 11-18 sind Ausgänge.

Für den Fahrstrom dienen die Relais K1 und K2. Das erste schaltet im Fehlerfall oder während der Aufzug sich bewegt den Strom komplett ab, das zweite schaltet jeweils die Zufahrt, wo der Aufzug gerade nicht ist, stromlos.

Relaisausgänge für Fahrstrom

Den Motor versorgen K3 und K4 mit Strom. Im Ausgangszustand sind beide Motoranschlüsse mit dem Minuspol verbunden, so dass der Motor stillsteht. Es wird stets nur eines von beiden Relais eingeschaltet und somit die Drehrichtung vorgegeben. Freilaufdioden schützen die Relaiskontakte vor Abreißfunken.

Relaisausgänge für den Motor

Die Gleisbesetztmeldung wird mit LEDs und Optokopplern realisiert. Solange ein Fahrzeug in einer Zufahrt ist, darf sich der Aufzug nicht bewegen. Diese Sicherheitsmaßnahme wurde in Software umgesetzt. Dagegen dient die Gleisbesetztmeldung auf dem Aufzug nur der Information des Bedieners, es ist also kein Optokoppler notwendig. Die Dioden D4-6 dienen dem Diodentrick, D7 und D8 sind Sperrdioden.

Optokoppler mit LEDs und Sperrdioden

Mit zwei Schaltern wird geprüft, ob der Aufzug seine Endlage erreicht hat. Anders als bei Märklins Weichenantrieben fließt nicht der Motorstrom darüber, so dass mit einer langen Lebensdauer zu rechnen ist. Es werden die internen Pullup-Widerstände des Arduino verwendet.

Zwei Lichtschranken sind an den Enden des Aufzugs auf Pufferhöhe angebracht und warnen vor überstehenden Fahrzeugen. Bei einer Weiterentwicklung würde ich zwei getrennte Lichtschranken vorsehen, so dass der Bediener sehen kann, an welchem Ende ein Fahrzeug übersteht. Übrigens kann die Empfindlichkeit der Lichtschranken über ein Poti eingestellt werden.

Eingaben


Ein Taster zur Aufwärts- und einer zur Abwärtsfahrt. Nach dem Drücken bleiben die LEDs an, bis der Aufzug seine Endlage erreicht hat. Dies wird erreicht, indem die Tasterpins zunächst als Eingänge konfiguriert werden, nach Tastendruck aber zu Ausgängen umdeklariert werden.

Taster mit Kontroll-LEDs. Nach oben verlaufen die Anschlüsse zum Arduino.

Wenn es zu irgendeinem Problem kommt, hält ein Druck auf den Reset-Taster des Arduino den Aufzug an und lässt das Programm von vorne beginnen. Im Fehlerfall zeigt eine LED auf der Arduino-Platine durch ihr Blinken an, welcher Fehler eingetreten sind. Bislang sind vier Fehlermeldungen möglich:
  1. Beide Endschalter zugleich geschlossen - Verdrahtungsfehler.
  2. Fahrzeug auf der oberen Zufahrt
  3. Fahrzeug auf der unteren Zufahrt
  4. Lichtschranke unterbrochen
Im Fehlerfall stehen Aufzug und Fahrzeuge still. Die Gleisbesetztmeldung und die Lichtschranken bleiben jedoch weiterhin aktiv, um die Fehlersuche zu vereinfachen.

Nachbau


Da die Aufzugsteuerung ein wenig komplizierter ist als die übrigen hier vorgestellten Projekte und außerdem an ihren speziellen Einsatzfall angepasst werden muss, stelle ich heute einmal nichts zum Download zur Verfügung. Wer sich an einem Nachbau versuchen möchte, erreicht mich per E-Mail.

Keine Kommentare:

Kommentar veröffentlichen