Geschwindigkeitsmessung mit dem C64

Neulich hat mich mal jemand angemailt, ob es möglich sei mit dem C64 die Geschwindigkeiten von Seifenkisten zu messen. Ferner sollte eine Sirene angehen wenn eine bestimmte Geschwindigkeit überschritten wird. Dabei ist nun folgendes herausgekommen:


diese Seite beinhaltet:

Beschreibung

Es werden potentialfreie Kontakte von zwei Lichtschranken benutzt, die an den Userport des C64 angeschlossen werden. Optional wird der dritte Userportanschluss für eine Sirene benötigt. Die Schaltung ist nicht schwer nachzubauen. Jenachdem WAS für Lichtschranken benutzt werden braucht man noch eine externe Spannung. In der Regel 24 V Gleichspannung wenn man Lichtschranken aus der Industrie verwenden möchte. Je weiter man die beiden Lichtschranken auseinander postiert, desto genauer wird das Messergebnis, weil mit dem nachstehenden Programm nur auf Zehntel Sekunden gemessen werden kann. Zu beachten ist dabei, dass die Geschwindigkeit zwischen den beiden Messpunkten konstant gehalten werden muss.


Das Meßprogramm

Hier das dazugehörige Programm welches ich auf die schnelle zusammengeklatscht habe:

10 POKE 56576+3,252 : REM Bit 2-7 vom Userport auf Ausgang geschaltet
20 POKE 56576+1 , PEEK (56576+1) AND 3 : REM Ausgang 2-7 auf "0"
30 POKE 56328+3,0 : REM Stoppuhr H auf "00"
40 POKE 56328+2,0 : REM Stoppuhr M auf "00"
50 POKE 56328+1,0 : REM Stoppuhr S auf "00"
55 POKE 56328+6, PEEK (56328+6) OR 128 : REM 50Hz Flag für Uhr setzen
60 A = PEEK (56576+1) AND 1 : REM Lichtschranke 1
70 IF A = 1 THEN 60 : REM Lichtschranke 1 passiert ?
80 POKE 56328,0 : REM Zehntel Sekunden auf "00" - Stoppuhr starten
100 A = PEEK (56576+1) AND 2 : REM Lichtschranke 2
110 IF A = 1 THEN 100 : REM Lichtschranke 2 passiert ?
200 H = PEEK (56328+3) AND 127
210 M = PEEK (56328+2)
220 S = PEEK (56328+1)
230 Z = PEEK (56328)
240 A=S : GOSUB 400 : S$ = STR$(A) : REM Sekunden
250 A=M : GOSUB 400 : M$ = STR$(A) : REM Minuten
260 A=H : GOSUB 400 : H$ = STR$(A) : REM Stunden
270 A=Z : GOSUB 400 : Z$ = STR$(A) : REM Zehntel
280 T = (H*3600) + (M*60) + S + (Z/10)
285 AB = 10 : V = (AB/T)*3,6 : REM Geschwindigkeit in Km/h - AB = Lichtschrankenabstand in Metern
290 V$ = LEFT$(STR$(V),6)
300 PRINT S;",";Z;"Sekunden"
310 PRINT V$;"Km/h"
350 HU = 20 : IF V > HU THEN POKE 56576+1,PEEK (56576+1) OR 4 : REM Sirene/Hupe an - HU = Vergleichsgeschwindigk. in Km/h
360 FOR A = 1 TO 3000 : NEXT A
370 POKE 56576+1, PEEK (56576+1) AND 3 : REM Alle Ausgänge = "0" - Sirene/Hupe aus
380 END
400 D = INT(A/16)*10+(A AND 15) : A = D : RETURN : REM BCD > Dezimal


Bildliche Darstellung

Schaltplan für km/h-Messung


Hucky 23.08.2005

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

I Hardware-Hauptseite I Startseite I