Für meine Weichenantriebe bestand die Aufgabe, das PWM-Signal für den Servomotor zu erzeugen. Dafür sind zwar im Handel diverse Geräte erhältlich, aber man hat ja auch seinen Stolz...
Außerdem habe ich nicht beliebig viel Platz unter der Anlage für die teils doch recht großen Kästen. Daher war auch hier Selbstbau angesagt.
Folgende Anforderungen waren zu erfüllen:
Abgesehen vom Teach-In ist das ziemlich überschaubar: Einen PWM-Ausgang haben die meisten Mikrocontroller, ein integriertes EEPROM für die letzte angefahrene Stellung auch. Zwei Digitaleingänge werden für die Steuertasten programmiert, werden beide gleichzeitig betätigt, wird die gegenüberliegende Position angefahren. Und schließlich gibt ein Digitalausgang entweder 1 (rechts) oder 0 (links) als Rückmeldung aus. Auf Grund meiner Erfahrungen und der vorhandenen Infrastruktur wird hier ein Controller vom Typ PIC16F18313 von Microchip verwendet.
Fehlt nur noch das Anlernen des Stellweges. Um möglichst wenige Pins zu belegen, werden die bestehenden Steuereingänge so programmiert, dass sie zwischen kurzen und langen Tastendrücken unterscheiden können. Außerdem kommt eine zusätzliche Taste für das Teachen dazu. Damit ergibt sich dann folgendes Verhalten (kurz: < 1s, lang: > 3s):
Taste | Zeit | Effekt | Rückmeldung |
---|---|---|---|
normal | |||
rechts/links | egal | fahre auf rechte/linke Endposition | blinkt, bis Position erreicht |
Teach | kurz/mittel | fahre auf Mittelposition | blinkt, bis Position erreicht |
lang | gehe in Lernmodus | blinkt 2x | |
Lernmodus | |||
rechts/links | kurz | ein Schritt nach rechts/links | - |
mittel | fahre langsam auf rechte/linke Endposition | blinkt, bis Position erreicht | |
lang | neue Endposition speichern und Lernmodus verlassen | blinkt 3x | |
Teach | kurz/mittel | fahre langsam auf Mittelposition | - |
lang | Lernmodus verlassen ohne zu speichern | blinkt 3x |
Im Lernmodus stoppt außerdem ein kurzes Drücken einer Taste jede laufende Bewegung.
Das Programm selbst ist in Assembler geschrieben. Mit der Tastenentprellung, der Unterscheidung zwischen kurzen und langen Tastendrücken und der EEPROM-Nutzung ist es schon etwas anspruchsvoller. Außerdem besteht es zu einem großen Teil aus prozessorspezifischem Setup und ist daher wohl nicht allgemein nachvollziehbar.
Der hierzu erforderliche Schaltplan ist recht einfach: Außer dem Mikrocontroller wird nur noch ein Ausgangstreiber für den Servomotor und diverse Anschlussstecker benötigt. Oben wird der Servo und die Beleuchtung angesteckt, unten gehen drei Anschlüsse an die Taster und die Rückmeldung, darüber kann vorübergehend ein Tastenbaustein für das Teach-in angesteckt werden.
Die komplette Elektronik beinhaltet hiervon vier Kopien, zusätzlich getrennte Spannungsregler für die Prozessoren und die Motoren mit Beleuchtung, einen Stecker für das Programmieren und Entlausen des Mikrokontrollers auf Platz 1 und einen (optionalen) fünften Prozessor, mit dem die Helligkeit der Laternenbeleuchtung eingestellt werden kann.
Das Ganze wird auf einer kleinen Platine aufgebaut. Die Controller-ICs sitzen dabei in Stecksockeln, da nur der erste Platz an den Programmierer/Debugger angeschlossen ist. So kann jeweils der im ersten Sockel programmierte Baustein in den nächsten gesteckt werden, wobei auch Mischbestückungen (verschiedene Versionen oder Varianten) möglich sind.
Auf dem Foto ist die Beleuchtungsregelung (5. Controller) noch nicht vorhanden.
Programmierstecker (links) und Platz 3 und 4 sind nicht bestückt.
Ohne Änderungen an der Hardware wären folgende weiteren Varianten möglich: