Die
nachfolgende Schaltung basiert auf dem TPS-Modul aus dem Projekt „TPS steuert
Fischertechnik-Karussell“ und kann mit den unten stehenden Programmen z.B. das
Modell „Schiffschaukel“ aus dem Baukasten „Profi Electronics“ von
Fischertechnik steuern. Die erweiterte TPS übernimmt dabei die Steuerungsaufgaben
des electronics Modul aus dem Baukasten.
Hinweis: Die Programme sind 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“.
Beide
Modelle „Schiffschaukel ohne Blinklicht“ und „Schiffschaukel mit Blinklicht“:
An den Eingängen ID1 und ID3 werden Taster als Schließer angeschlossen, ID2 wird mit einem Fototransistor verbunden, ID4, IA1 und IA2 bleiben unbeschaltet. Der Schiebeschalter DIP2 wird in Stellung „ON“ gebracht. Am Ausgang M1 wird der Motor angeschlossen. Das Potentiometer wird nicht angeschlossen und hat daher keine Funktion, die Motordrehzahl ist konstant. Solange der Taster I3 geschlossen ist, bewegt sich die Schiffschaukel vor- und wieder zurück. Bei Maximalauslenkung (Wendepunkt) wird jeweils der Taster I1 kurz gedrückt und eine Richtungsänderung der Schaukel ausgelöst. Ist der Taster I3 geöffnet, fährt die Schaukel mit etwa halber Drehzahl in die Ausgangsposition zurück und bleibt dann stehen (Unterbrechung der Lichtschranke). Erneutes Drücken und Halten des Tasters I3 startet die Schaukel erneut.
a)
Modell „Schiffschaukel ohne Blinklicht“ (https://youtu.be/NLQtlLNxIDo):
Zusätzlich
wird am Ausgang M2 die LED2 für die Lichtschranke angeschlossen, sie leuchtet
ständig, sobald das Programm gestartet wird. Wer mag, kann das Modell um einen
separaten Wechselblinker ergänzen, wie im Fischertechnik-Baukasten vorgesehen.
b) Modell „Schiffschaukel mit Blinklicht“ (https://youtu.be/R6CirboiLco):
Am
Ausgang M2 werden zwei parallel mit umgekehrter Polarität geschaltete LEDs,
LED1 und LED2, für das Blinklicht angeschlossen. Die LED3 für die Lichtschranke
wird direkt mit der 9V-Spannungsversorgung verbunden. Die Blinkfrequenz ist
konstant und synchron zur Schaukelbewegung, das Potentiometer hat keine
Funktion. In der Ausgangsstellung ist das Blinklicht aus. Es ist eine
Erweiterung gegenüber dem Modell aus dem Fischertechnik-Baukasten und ersetzt
den separaten Wechselblinker.
Die nachfolgenden Schaltpläne zeigen den Anschluss
der Sensoren und Aktoren an das TPS-Modul sowie die Stellung der DIP-Schalter:
Schiffschaukel ohne Blinklicht:
Schiffschaukel
mit Blinklicht:
Hardware
TPS-Modul: siehe Projekt „TPS steuert Fischertechnik-Karussell“
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” |
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 |
X |
Springe
6X “Anderes Programm” |
0E |
F |
F |
leer |
0F |
F |
F |
leer |
Es
ist absehbar, dass nicht mehr als drei Programme für das TPS-Modul gleichzeitig
im Controller hinterlegt werden können. Der Einfachheit halber beginnen die
Programme für die Schiffschaukel ab Adresse 10 an der Position, die für das
Basisprogramm (siehe Projekt „TPS steuert Fischertechnik-Karussell“) vorgesehen
ist. Wer möchte, kann aber sowohl das Basisprogramm als auch ein
Schaukelprogramm gleichzeitig im Controller programmieren. Für diesen Fall
müssen beim Starten des TPS-Moduls oder nach einem Reset für die Auswahl des
Schiffschaukel-Programms die DIP-Schalter wie nachfolgend gestellt werden:
Programm |
DIP1 |
DIP2 |
DIP3 |
DIP4 |
DIP5 |
DIP6 |
Schiffschaukel |
0 |
0 |
0 |
1 |
X |
X |
Hinweis:
X: 0 oder 1 (ohne Einfluss)
Die
Schiffschaukel-Programme sind soweit kommentiert, dass es nicht schwer fallen
sollte, sie nachzuvollziehen, daher nachfolgend nur ein paar allgemeine
konzeptionelle Anmerkungen. Das Programm ohne Blinklicht kommt ohne
Einzel-Bit-Verarbeitung aus und ist daher deutlich kürzer und einfacher. Wird
zusätzlich eine Blinkfunktion programmiert, ist die Einzel-Bit-Verarbeitung
unumgänglich. Dadurch wird der Programmcode länger. Jeder möge für sich
entscheiden, welche Variante ihm besser gefällt.
Bei
Abfrage des Endschalters I1 für die Richtungsumkehr der Schaukel muss zuvor
sichergestellt sein, dass der Schalter nicht mehr gedrückt ist. Wegen der zeitverzögerten,
mechanischen Freigabe des Schalters wäre die Reaktion auf die Schaukel sonst
unvorhersehbar (in Endstellung verharren, über Endstellung hinaus fahren
(Looping) oder Richtung wechseln).
Programm1:
Schiffschaukel ohne Blinklicht
Adresse |
Befehl |
Daten |
Kommentar |
|
|
|
Programm
Schiffschaukel als Basisprogramm |
10 |
1 |
4 |
Port
= 4 (0100) “LED an” |
11 |
C |
A |
Skip if Din.2 = 0 (Falls gedrückt) |
12 |
3 |
1 |
Springe
-1 |
13 |
4 |
F |
A =
15 (maximale Geschwindigkeit) |
14 |
5 |
9 |
PWM.1
= A |
15 |
8 |
2 |
AdrHi
= 2 (Seite 2) |
16 |
1 |
6 |
Port
= 6 (0110) “LED an, Motor rechts an” |
17 |
C |
A |
Skip
if Din.2 = 0 |
18 |
9 |
5 |
Springe
25 (Fahre in Ausgangsposition) |
19 |
C |
4 |
Skip if Din.0 = 1 (Falls nicht
gedrückt) |
1A |
3 |
1 |
Springe -1 |
1B |
C |
8 |
Skip if Din.0 = 0 (Falls gedrückt) |
1C |
3 |
1 |
Springe
-1 |
1D |
1 |
5 |
Port
= 5 (0101) “LED an, Motor links an” |
1E |
C |
A |
Skip if Din.2 = 0 (Falls gedrückt) |
1F |
9 |
5 |
Springe
25 (Fahre in Ausgangsposition) |
20 |
C |
4 |
Skip if Din.0 = 1 (Falls nicht
gedrückt) |
21 |
3 |
1 |
Springe -1 |
22 |
C |
8 |
Skip if Din.0 = 0 (Falls gedrückt) |
23 |
3 |
1 |
Springe
-1 |
24 |
3 |
E |
Springe
-14 |
25 |
4 |
8 |
A = 9 (Fahre in Ausgangsposition,
halbe Geschwindigkeit) |
26 |
5 |
9 |
PWM.1
= A |
27 |
C |
9 |
Skip if Din.1 = 0 (Falls Lichtschranke
unterbrochen) |
28 |
3 |
1 |
Springe
-1 |
29 |
8 |
1 |
AdrHi
= 1 (Seite 1) |
2A |
9 |
0 |
Springe
10 |
Programm2:
Schiffschaukel mit Blinklicht
Adresse |
Befehl |
Daten |
Kommentar |
|
|
|
Programm Schiffschaukel als Basisprogramm |
10 |
C |
A |
Skip if Din.2 = 0
(Falls gedrückt) |
11 |
3 |
1 |
Springe -1 |
12 |
4 |
F |
A = 15 (Maximale Geschwindigkeit) |
13 |
5 |
9 |
PWM.1 = A |
14 |
8 |
2 |
AdrHi = 2 (Seite 2) |
15 |
4 |
0 |
A = 0 |
16 |
5 |
5 |
Dout.0 = A.0, “Motor links aus” |
17 |
5 |
8 |
Dout.3 = A.0, “Lampe an A4 aus” |
18 |
4 |
1 |
A = 1 |
19 |
5 |
6 |
Dout.1 = A.0, “Motor rechts an” |
1A |
5 |
7 |
Dout.2 = A.0, “Lampe an A3 an” |
1B |
C |
A |
Skip if Din.2 = 0 |
1C |
9 |
F |
Springe 2F (Fahre in Ausgangsposition) |
1D |
C |
4 |
Skip if Din.0 = 1
(Falls nicht gedrückt) |
1E |
3 |
1 |
Springe -1 |
1F |
C |
8 |
Skip if Din.0 = 0
(Falls gedrückt) |
20 |
3 |
1 |
Springe -1 |
21 |
4 |
1 |
A = 1 |
22 |
5 |
5 |
Dout.0 = A.0, “Motor links an” |
23 |
5 |
8 |
Dout.3 = A.0, “Lampe an A4 an” |
24 |
4 |
0 |
A = 0 |
25 |
5 |
6 |
Dout.1 = A.0, “Motor rechts aus” |
26 |
5 |
7 |
Dout.2 = A.0, "Lampe an A3 aus" |
27 |
C |
A |
Skip if Din.2 = 0 |
28 |
9 |
F |
Springe 2F (Fahre in
Ausgangsposition) |
29 |
C |
4 |
Skip if Din.0 = 1
(Falls nicht gedrückt) |
2A |
3 |
1 |
Springe -1 |
2B |
C |
8 |
Skip if Din.0 = 0
(Falls gedrückt) |
2C |
3 |
1 |
Springe -1 |
2D |
8 |
1 |
AdrHi = 1 (Seite 1) |
2E |
9 |
4 |
Springe 14 |
2F |
4 |
9 |
A = 9 (Fahre in
Ausgangsposition, halbe Geschwindigkeit) |
30 |
5 |
9 |
PWM.1 = A |
31 |
C |
9 |
Skip if Din.1 = 0
(Falls Lichtschranke unterbrochen) |
32 |
3 |
1 |
Springe -1 |
33 |
1 |
0 |
Port = 0 (LEDs aus,
Motor aus) |
34 |
8 |
1 |
AdrHi = 1 (Seite 1) |
35 |
9 |
0 |
Springe 10 |