Einen sicher funktionierenden Impulsschalter lässt sich mit einem bistabilen Relais und einem Mikrocontroller
konstruieren. Dabei kann der Mikrocontroller, da er über weitere freie Ein- und Ausgänge verfügt,
gleichzeitig für andere Zwecke verwendet werden. Die Eigenschaft eines bistabilen
Relais, seine aktuelle Position beizubehalten, stellt sicher, dass der vorgewählte Zustand auch dann erhalten bleibt, wenn die
Versorgungsspannung abgeschaltet wird. Diese Eigenschaft besitzen die monostabilen Relais nicht. Mit einer Abfrage der aktuellen
Position, die ein Mikrocontroller problemlos bewältigen kann, kann zusätzlich garantiert werden, dass eine Umschaltung in andere
Position nach jedem Tastendruck erfolgt. Auch dann, wenn zwischenzeitlich die Versorgungsspannung abgeschaltet wurde.
Grundsätzlich besteht die Schaltung aus drei Komponenten. Das „Denken“ übernimmt der Mikrocontroller HT46F47E (TPS).
Die Schaltkontakte für eine Last, in diesem Fall zwei Leuchtdioden, stellt das bistabile Relais (K1) mit zwei Spulen HFD2/005 zur
Verfügung. Seine Betriebsspannung beträgt 5 VDC. Um die Ausgänge des Mikrocontrollers nicht zu stark zu belasten, wird der
Schaltung ein Optokoppler hinzugefügt. Bei dem Optokoppler handelt es sich um den Baustein ILD74, der zwei Kanäle zur Verfügung
stellt. Jeder Kanal ist jeweils für eine Spule des Relais K1 zuständig.
Das Programm besteht aus 12 Zeilen. Solange keine Ereignisse auftreten, pendelt das Programm zwischen den ersten zwei
Zeilen. Sobald der Taster S1 (PA2, Eingang 3=0) betätigt wird, spring das Programm in die dritte Zeile und prüft, in welcher
Stellung sich das Relais befindet. Hier wird einfach der Zustand des ersten Wechslers des Relais untersucht. Ist der Kontakt
geschlossen (Eingang 4 = 0, PA3) spring das Programm in die Zeile Nr. 4. Damit wird die erste Spule (A) des Relais angesprochen. Ist
der Kontakt geöffnet, spring das Programm in die Zeile 6 und schaltet die zweite Spule (B) des Relais ein. Danach wartet das Programm
ca. 50 ms (Zeile 7), schaltet die Ausgänge aus (Zeile 8) und prüft anschließend, ob der Taster S1 inzwischen losgelassen wurde.
Ist das der Fall, so erfolgt ein Sprung zum Anfang des Programms und das ganze Prozedere wiederholt sich
Programm mit Kommentaren
000 (00h) CA Überspringe den folgenden Befehl, wenn Taster S1 gedrückt wurde
001 (01h) 31 Springe eine Zeile zurück
002 (02h) CB Prüfe die Relais-Stellung, ggf. springe zur Adresse 04h
003 (03h) 96 Springe zur Adresse 06h
004 (04h) 11 Relaisspule A ein
005 (05h) 97 Sprung zur Adresse 07h
006 (06h) 12 Spule B ein
007 (07h) 25 Wartezeit 50 ms
008 (08h) 10 alles Aus
009 (09h) C6 Warte, bis Taster S1 losgelassen
010 (0Ah) 31 Springe eine Zeile zurück
011 (0Bh) 90 Zurück zum Programmanfang
CA 31 CB 96 11 97 12 25 10 C6 31 90