Ein
16-stufiger Drehkodierschalter (0-9, A-F) mit 4-Bit-Binärausgabe wird an den
Eingängen E1-E4 der TPS HT46F47 angeschlossen.
Damit kann
man folgendes machen:
1. Ein
gespeichertes Programm bequem auswählen, ohne mit Drahtbrücken hantieren zu
müssen;
2. Im
Programmiermodus direkt den Code durch eine einzige Schalterstellung eingeben,
ohne x-mal die S1-Taste drücken zu müssen.
Voraussetzung:
Zwei TPS in Grundschaltung gem. Anleitung
Zu 1.: Verwendet wird der Kodierschalter DRS4016 der Fa. knitter-switch, der im Elektronikfachhandel (z.B. conrad) für wenige Euro erhältlich ist. Leider sind die Ausgänge des Schalters spiegelverkehrt zu den Eingängen des TPS-Controllers (siehe Datenblatt), so dass man sich mit ein paar Drahtbrücken behelfen muss (siehe Schaltungsaufbau). Der gemeinsame Anschluss (C) wird auf GND gelegt. Zur Auswahl eines im Controller gespeicherten Programms muss nur noch der entsprechende Binärcode eingestellt werden.
Zu2.:
Prinzip: Es wurde
ein kleines Programm für eine TPS mit Drehkodierschalter (siehe 1.)
geschrieben, dass den Zustand des Schalters an den Eingängen E1-E4 einliest, an
den LEDs der Ausgänge A1-A4 visualisiert und bei Druck auf die S1-Taste als
Impulsfolge am PMW-Ausgang ausgibt. Verbindet man nun diesen PMW-Ausgang mit
dem S1-Eingang einer zweiten TPS, so kann man im Programmiermodus der zweiten
TPS direkt den gewünschten Code einstellen. Das Drücken der S1-Taste wird somit
simuliert. Ein Nachteil soll nicht verschwiegen werden: Hat man am
Kodierschalter versehentlich eine falsche Zahl eingestellt und möchte diese
korrigieren, ist zu berücksichtigen, dass sich weitere Schalterstellungen
additiv auswirken, d.h. es wird nicht zurückgesetzt, sondern weiter gezählt.
Hardware: Der
PMW-Ausgang der mit dem Kodierschalter verbundenen TPS (TPS_Grundschaltung1, im
Bild unten) wird über einen Optokoppler mit dem Eingang S1 einer zweiten, zu
programmierenden TPS (TPS_Grundschaltung2, im Bild oben) verbunden (siehe
Schaltplan). Um aus dem PMW-Signal eine geglättete Gleichspannung zu erhalten,
wurde der RC-Tiefpassfilter aus der TPS-Anleitung verwendet. Das analoge Signal
wird an den Anoden-Eingang des Optokopplers TLP521 der Fa. ISOCOM (Elektronikfachhandel,
z.B. conrad) über einen Vorwiderstand (390 Ω) weitergeleitet. Der Typ 521 hat
bei typischer Eingangsspannung (1,15 V) eine besonders geringe Stromaufnahme
(IF = 10 mA, siehe Datenblatt) und schont damit den Ausgang des Controllers.
Der Collectorausgang wird direkt mit dem S1-Eingang der zu programmierenden
TPS2 verbunden, parallel zum Taster S1. Kathode und Emitter werden auf GND
gelegt.
Software:
Die Adressen
1A-1D entsprechen dem Urzustand des Controllers und müssen nur programmiert werden,
wenn sie verändert wurden. Bei E3, E4 an GND (entspricht Schalterstellung „C“
am Kodierschalter) wird nun beim Starten der TPS anstelle des Standardprogramms
„Stoppuhr Start/Stopp“ das Programm „Kodierschalter“ angesprungen. Für das
Programm wurde der Speicherplatz für das Unterprogramm „Tonausgabe“ geopfert.
Funktionsprinzip: In einer Endlosschleife wird der Zustand der Eingänge E1-E4
und des Tasters S1 abgefragt, ersterer invertiert und an die an den Ausgängen
A1-A4 angeschlossenen LEDs angezeigt. Sobald die Taste S1 gedrückt wird, verzweigt
das Programm und führt einmal die Befehle der Schleife (Adresse 56-5B) aus,
bevor diese Schleife A-mal durchlaufen wird (A= eingestellte Zahl am
Kodierschalter). Jeder Durchlauf schaltet die Spannung am PMW-Ausgang von 0
(minimal) auf F (maximal) und nach einer Wartezeit wieder zurück und erzeugt so
einen Impuls. Der zusätzliche Impuls (vor Betreten der Schleife) ist erforderlich,
da der erste Tastendruck S1 die Eingabe im Programmiermodus vorbereit, ohne
dass der Druck schon gezählt wird. Die Wartezeit nach einem Impuls bzw.
zwischen zwei Impulsen ist notwendig, da sie sonst nicht als einzelne Impulse,
sondern nur als ein Impuls erkannt werden. Nach meiner Erfahrung sind min. 200
ms und eine Impulsdauer von 500 ms bei Verwendung des RC-Tiefpassfilters
erforderlich.
Adresse |
Befehl |
Daten |
Kommentar |
*1A |
4 |
3 |
A = 0011 |
*1B |
8 |
2 |
Seite 2 |
*1C |
C |
3 |
A = B? |
*1D |
9 |
0 |
Springe 20 „Wechselblinker“;
voreingestelltes Programm, falls kein Programm über E1 bis E4 gewählt wurde |
1E |
8 |
5 |
Seite
5 |
1F |
9 |
0 |
Springe
50 „Kodierschalter“; wenn E4, E3 = 0 (an GND) |
50 |
6 |
4 |
A =
DIN |
51 |
7 |
A |
A =
NOT A |
52 |
5 |
4 |
Port
= A |
53 |
C |
C |
S1 =
0? |
54 |
3 |
4 |
Springe
- 4 |
55 |
5 |
2 |
C = A |
56 |
4 |
F |
A =
15 (maximale Amplitude Impuls) |
57 |
5 |
9 |
PMW =
A |
58 |
2 |
8 (5) |
Warte
500 (50) ms (Impulsdauer) |
59 |
4 |
0 |
A = 0
(minimale Amplitude Impuls) |
5A |
5 |
9 |
PMW =
A |
5B |
2 |
7 (6) |
Warte
200 (100) ms (Abstand zwischen zwei Impulsen) |
5C |
8 |
5 |
AdrHi
= 5 |
5D |
A |
6 |
C-mal
56 |
5E |
3 |
E |
Springe
- 14 |
*entspricht Urzustand des Controllers
Hinweis: Durch Weglassen des RC-Tiefpassfilters können
sowohl die Impulsdauer als auch der zeitliche Abstand zwischen zwei Impulsen
verkürzt werden (Daten bzw. Zeiten in Klammern)