C 64
Anwendung des Monats

Vollautomatisches Blumengießen

Sie kennen sicher auch das leidige Problem: Der Urlaub steht vor der Tür und keiner der Nachbarn will die Blumen versorgen, da sie just in der gleichen Zeit Urlaubsgefühle verspüren. Der Computer schafft Abhilfe.

Die Idee war, mit einer kleinen Tauchpumpe (Campingartikelbedarf) und einem verzweigten Schlauchsystem die Blumen täglich mit dem kostbaren Naß zu versorgen (Bild 1). Diese kleinen Pumpen haben eine Förderleistung von etwa 14 l/min., was für die minimalen Ein- und Ausschaltzeiten mechanischer Schaltuhren von 30 Minuten viel zu viel ist. Elektronische Schaltuhren, die individuelle Schaltzyklen zulassen, waren wiederum viel zu teuer.

Bild 1. Das Interface steht links neben dem Commodore. Die Pumpe liegt im Eimer, der mit Wasser gefüllt ist. Durch die unterschiedlichen Schlauchdurchmesser kann jede Blume individuell mit der für sie notwendigen Wassermenge beliefert werden.

Die Idee, meinen 64er zum Blumengießen herzunehmen, reifte. Denn schließlich besitzt er einen User-Port, der für solche Aufgaben wie geschaffen ist.

Der User-Port, eine Verbindung zur Außenwelt

Der User-Port ist eine Schnittstelle, mit der der Anwender auf einfache Art und Weise Kontakt zwischen dem Commodore und der Außenwelt herstellen kann. Mit ihm ist es unter anderem möglich, Geräte an- und auszuschalten. Da der User-Port eine 8 Bit breite Datenleitung besitzt (PB0-PB7, siehe Bild 2), können ohne weiteres Klimmzüge bis zu 8 Verbraucher geschaltet werden. Dazu ist jedoch etwas zusätzliche Hardware nötig. Um einen Stromverbraucher zu steuern (in unserem Fall eine kleine Pumpe), benötigt man ein Schaltinterface. Denn die Pumpe braucht mehr Strom als der User-Port zur Verfügung stellt. In meinem Fall baute ich mir ein Interface, das direkt an das normale 220-Volt-Netz angeschlossen werden kann. Mit ihm lassen sich grundsätzlich alle Elektrogeräte schalten. Den Aufbau dieses einfachen Schaltinterfaces zeigt Bild 3. Zusätzlich benötigt man noch eine Verbindung vom Interface zum User-Port. Ein geeigneter Stecker zum Anschluß an den User-Port ist der Cardcon-Stecker von TRW (Nr. 251-12-50-170) (Bild 4).

Pin Signal Bemerkung
1 GND
2 +5V MAX. 100 mA
3 RESET
4 CNT1
5 SP1
6 CNT2
7 SP2
8 PC2
9 SER. ATN IN
10 9 VAC MAX. 100 mA
11 9 VAC MAX. 100 mA
12 GND
A
B FLAG2
C PBO
D PB1
E PB2
F PB3
H PB4
J PB5
K PB6
L PB7
M PA2
N GND
Bild 2. Pinbelegung des User-Ports. Benötigt wurden nur die Anschlüsse 2, A und C.
Bild 3. Der Aufbau des einfachen Schaltinterfaces. Die Bauteile entnehmen Sie der Tabelle.
Bild 4. Dieser Stecker ist im Elektronikfachversand oder -handel erhältlich.
Bauteile Bezeichnung
Tauchpumpe und dazu passende Schläuche Campingartikel
Stecker zum Anschluß an den User-Port Cardcon-Stecker der Firma TRW (Nr. 251-12-50-170)
elektronische Bauteile:
IC 6fach-Inverter ITT 7404
R1 Widerstand 1 kOhm
T1 Transistor BC 337
D1 Diode 1N 4001
Rel Relais 12 V
C1 Kondensator 470 mikro Farad
Gleichrichter 8027
Kosten:
Tauchpumpe und Schläuche zirka 20 Mark
Interface und Stecker zirka 50 Mark

Zur Absicherung des User-Ports wurde zwischen der eigentlichen Schaltung und dem Port ein 6fach-Inverter eingefügt.

Das Programm: eine Uhr

Das Gießprogramm besteht im wesentlichen aus der Programmierung der Echtzeituhr im CIA 1. Dieses Programm entstammt dem Data Becker-Buch 64-intern.

In Zeile 100 bis 270 wird die Uhr gestellt, in Zeile 280 bis 480 die laufende Uhr programmiert. In Zeile 440 wird abgefragt, ob der Zeitpunkt zum Gießen erreicht ist. Wenn dies der Fall ist, wird in die Subroutine 1000 verzweigt. In diesem Unterprogramm wird das Datenrichtungsregister auf Ausgang geschaltet und mit POKE 56577,1 die PB0-Leitung auf High gelegt. In Zeile 1030 schließlich wartet das Programm 20 Sekunden und schaltet in Zeile 1050 die Pumpe wieder aus. Die Warteschleife in Zeile 1030 kann dem jeweiligen Anwendungsfall angepaßt werden.

Das Programm läßt sich natürlich für beliebige Schaltzyklen und Schaltzeiten abändern.

(Klaus Michael)
Klaus Michael gönnt seinem C 64 keinen Urlaub
100 rem ***** uhr stellen *****
110 c=56328:rem basisadresse  der uhr in cia 1
120 pokec+7,peek(c+7)and 127
130 pokec+6,peek(c+6)or 128
140 input"zeit im format hhmmss eingeben";a$
150 if len(a$)<>6 then 140
160 h=val(left$(a$,2))
170 m=val(mid$(a$,3,2))
180 s=val(right$(a$,2))
190 if h>23 then 140
200 if h>11 then h=h+68
210 pokec+3,16*int(h/10)+h-int(h/10)*10
220 if m>59 then 140
230 pokec+2,16*int(m/10)+m-int(m/10)*10
240 ifs>59 then 140
250 pokec+1,16*int(s/10)+s-int(s/10)*10
260 pokec,0
270 print""
280 rem ***** uhr laeuft *****
290 h=peek(c+3):m=peek(c+2):s=peek(c+1):t=peek(c)
300 fl=1
310 if h>32 then h=h-128:fl=0
320 h=int(h/16)*10+h-int(h/16)*16:on fl goto 350
330 if h=12 then 360
340 h=h+12
350 if h=12 then h=0
360 m=int(m/16)*10+m-int(m/16)*16
370 s=int(s/16)*10+s-int(s/16)*16
380 t$=str$(t)
390 h$=str$(h):if len(h$)=2 then h$=" 0"+right$(h$,1)
400 m$=str$(m):if len(m$)=2 then m$=" 0"+right$(m$,1)
410 s$=str$(s):if len(s$)=2 then s$=" 0"+right$(s$,1)
420 gi$=right$(h$,2)+right$(m$,2)+right$(s$,2)
430 rem **** zeitpunkt zum giessen erreicht? ****
440 ifval(gi$)=205500thengosub1000
450 print"";
460 print right$(h$,2)":"right$(m$,2)":"right$(s$,2)":0";
470 print right$(t$,1)
480 goto 290
1000 rem ***** schaltunterprogramm *****
1010 rem **** pumpe einschalten ****
1020 poke56579,1:poke56577,1
1030 fori=1to17500:next:rem pumpe 20 sec eingeschaltet
1040 rem **** pumpe ausschalten ****
1050 poke56577,0
1060 return
Das Listing zu Blumengießen
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →