Die
nachfolgende Schaltung basiert auf dem TPS-Modul aus dem Projekt „TPS steuert
Fischertechnik-Karussell“ und kann mit dem unten stehenden Programm z.B. das
Modell „Schiebetür“ aus dem Baukasten „Profi Electronics“ von Fischertechnik
steuern. Die erweiterte TPS übernimmt dabei die Steuerungsaufgaben des
electronics-Modul aus dem Baukasten.
Hinweis: Das Programm ist eine eigenständige Entwicklung, in Anlehnung an die
Funktionalität des electronics-Moduls. Das Fischertechnik-Modell wird nur als
Beispiel verwendet, um die Möglichkeiten des TPS-Moduls zu demonstrieren. Der
Hardware-Aufbau und die Software des Fischertechnik-Moduls sind dem Autor
unbekannt.
Allgemeine
Funktionsweise TPS-Modul: siehe Projekt „TPS steuert Fischertechnik-Karussell“
Allgemein
Funktionsweise Schaltung/Modell:
An
den Eingängen ID1 (I1: Endschalter Tür geschlossen) und ID2 (I2: Endschalter
Tür geöffnet) wird jeweils ein Taster als Schließer angeschlossen, ID3 wird mit
dem Fototransistor I3 und ID4 mit dem Ausgang des Berührungsschalters (Anforderung
zum Öffnen der Tür) verbunden, IA2 bleibt unbeschaltet. IA1 wird auf +9V
gelegt, um das Potentiometer am analogen Eingang des TPS-Moduls nutzen zu
können. Die Schiebeschalter DIP3 und DIP4 werden (nach dem Programmstart) in
Stellung „ON“ gebracht. Am Ausgang M1 wird der Motor angeschlossen, am Ausgang
M2 werden zwei parallel mit umgekehrter Polarität geschaltete LEDs, LED1 und
LED2, für die Türampel angeschlossen. Die LED3 für die Lichtschranke wird
direkt mit der 9V-Spannungsversorgung verbunden.
Sobald
das Programm gestartet wird, wird die LED1 (rote Leuchtkappe) eingeschaltet und
die Tür geschlossen. Berührt man die beiden Eingänge T1 und T2 des
Berührungsschalters (ggf. Finger etwas anfeuchten) gleichzeitig mit einem
Finger, öffnet die Tür, und in Endstellung wird die LED2 (grüne Leuchtkappe)
eingeschaltet. Mit dem Potentiometer kann man die Verzögerungszeit bis zum
automatischen Schließen der Tür im Bereich von 0,5 bis 8 s in 0,5 s-Inkrementen
einstellen. Wird während des Schließens die Lichtschranke unterbrochen, öffnet
die Tür wieder. Ggf. muss die Polarität am Motor umgekehrt werden.
Der nachfolgende Schaltplan zeigt den Anschluss der Sensoren und Aktoren an das TPS-Modul sowie die Stellung der DIP-Schalter nach Programmstart:
Hardware
TPS-Modul: siehe Projekt „TPS steuert Fischertechnik-Karussell“
Hardware
Berührungsschalter:
Statt
den Berührungsschalter aus den einzelnen Bauteilen (zwei Transistoren, zwei
Widerstände) wie im Fischertechnik-Baukasten vorgesehen aufzubauen, wurden alle
Bauteile auf eine Platine gelötet, die in das Fischertechnik-Elektronikgehäuse
passt. Die Verkabelung des Modells wird dadurch deutlich übersichtlicher. Das
Elektronikgehäuse ist bei Fischertechnik für einen Transistor auf einer Platine
vorgesehen. Da am Ausgang Out des Berührungsschalters ständig ein (+)-Signal
anliegt, welches beim gleichzeitigen Berühren der Punkte T1 und T2 auf GND
wechselt, muss die Funktion des Eingangs ID4 über seinen zugehörigen
DIP-Schalter DIP4 umgekehrt werden.
Schaltplan und Platinenlayout (von oben, Leiterbahnen auf der Unterseite) des Berührungsschalters:
Für J1 und J2 wurden Bundhülsen (erhältlich bei z.B. santjohanser.de oder fischerfriendswoman.de) eingelötet, die Fischertechnik-Stecker aufnehmen können, an J3 wurde direkt ein zweiadriges Kabel gelötet.
Software:
siehe nachfolgende Tabellen
Die im TPS-Mikrocontroller bereits programmierte Sprungtabelle (Adressen 00 bis
2F) mit sechs möglichen Programmen, die adressiert werden können, wurde auf
drei Programme gekürzt. Dadurch wurde eine zusätzliche Programmseite gewonnen,
der Programmcode kann bereits ab Adresse 10 hinterlegt werden:
Adresse |
Befehl |
Daten |
Kommentar |
00 |
6 |
4 |
A =
Din |
01 |
5 |
1 |
B =
A |
02 |
4 |
E |
A =
14 “1110” |
03 |
8 |
0 |
AdrHi
= 0 (Seite 0) |
04 |
C |
3 |
Skip
if A = B |
05 |
9 |
8 |
Springe
08 |
06 |
8 |
4 |
AdrHi
= 4 (Seite 4) |
07 |
9 |
5 |
Springe
45 “Schiffschaukel ohne Blinker” |
08 |
4 |
D |
A =
13 “1101” |
09 |
8 |
1 |
AdrHi
= 1 (Seite 1) |
0A |
C |
3 |
Skip
if A = B |
0B |
9 |
0 |
Springe
10 “Basisprogramm” |
0C |
8 |
6 |
AdrHi
= 6 (Seite 6) |
0D |
9 |
5 |
Springe
65 “Schiebetür” |
0E |
F |
F |
leer |
0F |
F |
F |
leer |
Der
Einfachheit halber beginnt das Programm für die Schiebetür ab Adresse 10 an der
Position, die für das Basisprogramm (siehe Projekt „TPS steuert
Fischertechnik-Karussell“) vorgesehen ist. Wer möchte, kann aber das
Basisprogramm, das Programm „Schiffschaukel ohne Blinker“ und das
Schiebetür-Programm gleichzeitig im Controller programmieren (sollte rechnerisch
gerade passen, alle Adressen sind dann belegt, wurde nicht getestet). Für
diesen Fall müssen beim Starten des TPS-Moduls oder nach einem Reset für die
Auswahl des Schiebetür-Programms die DIP-Schalter wie nachfolgend gestellt
werden:
Programm |
DIP1 |
DIP2 |
DIP3 |
DIP4 |
DIP5 |
DIP6 |
Schiffschaukel |
0 |
0 |
1 |
0 |
X |
X |
Hinweis:
X: 0 oder 1 (ohne Einfluss)
Das
Schiebetür-Programm ist soweit kommentiert, dass es nicht schwer fallen sollte,
es nachzuvollziehen. Es kommt ohne Einzel-Bit-Verarbeitung aus.
Programm
„Schiebetür“:
Adresse |
Befehl |
Daten |
Kommentar |
|
|
|
Programm Schiebetür als Basisprogramm |
10 |
4 |
F |
A = 15 |
11 |
5 |
9 |
PWM.1 = A |
12 |
8 |
2 |
AdrHi = 2 (Seite 2) |
13 |
C |
8 |
Skip if Din.0 = 0 |
14 |
9 |
3 |
Springe 23 |
15 |
1 |
4 |
Port = 4 (0100) “rote LED an” |
16 |
C |
B |
Skip if Din.3 = 0
“Warten auf Anforderung (Berührungsschalter)” |
17 |
3 |
1 |
Springe -1 |
18 |
1 |
6 |
Port = 6 (0110) “rote LED an, Motor an - öffnen” |
19 |
C |
9 |
Skip if Din.1 = 0
“Warten auf Endschalter I2 geschlossen“ |
1A |
3 |
1 |
Springe -1 |
1B |
1 |
8 |
Port = 8 (1000) “grüne LED an, Motor aus” |
1C |
8 |
2 |
AdrHi = 2 (Seite 2) |
1D |
C |
9 |
Skip if Din.1 = 0 |
1E |
9 |
3 |
Springe 23 |
1F |
6 |
9 |
A = ADC.1 “Poti einlesen” |
20 |
5 |
2 |
C = A |
21 |
2 |
8 |
Warte 500 ms “Inkrement Verzögerungszeit” |
22 |
A |
1 |
C-mal 21 |
23 |
1 |
5 |
Port = 5 (0101) “rote
LED an, Motor an - schließen“ |
24 |
8 |
1 |
AdrHi = 1 |
25 |
C |
4 |
Skip if Din.0 = 1 “Warten
auf Endschalter I1 geschlossen“ |
26 |
9 |
2 |
Springe 12 |
27 |
C |
A |
Skip if Din.2 = 0
“Lichtschranke unterbrochen?” |
28 |
3 |
3 |
Springe -3 |
29 |
9 |
8 |
Springe 18 “Tür wieder öffnen” |