PDF-Datei zum - Realschule Rheinhausen

Transcription

PDF-Datei zum - Realschule Rheinhausen
Messen-Steuern-Regeln mit dem Computer
Erste Schritte
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-1-
Inhaltsverzeichnis
0.
Vorwort: Schülerversuche mit dem Computer
3
1.
Aufbau eines Computer-Systems
4
2.
Speicher-Modell
5
3.
Binärzahlen
6
4.
Ports/Schnittstellen
7
5.
Computer-Befehle
8
6.
Gewöhnung an den Comal Editor
9
7.
Serieller Port
10
8.
Serielles Interface
11
9.
Die Ausgabe-Leitungen
12
1.
2.
3.
4.
10.
15
Die Eingabe-Leitungen
1.
2.
3.
4.
5.
6.
11.
12
12
13
14
Ersatzschaltbild
Befehle zum Ansprechen der Ausgabe-Leitungen
Beispiel: Blinklicht
Weitere Beispiele zur Ansteuerung von Geräten
15
15
16
17
18
19
Ersatzschaltbild
Computer-Befehle zum Ansprechen der Eingabe-Leitungen
Beispiel: Schalter auf/zu
If ... then ... else - der Computer kann Entscheidungen treffen
Elektronische Schalter für unser Interface
Kurzüberblick über einfache Experimente
20
Einfache Experimente mit unserem seriellen Interface
20
21
22
23
24
1. Der Computer kann hell und dunkel unterscheiden
2. Helligkeitssteuerung
3. Geschwindigkeitsmessung
4. Der Computer gibt Alarm
5. Der Computer als Zähler 1
(Schalterbetätigungen)
6. Der Computer als Zähler 2
(Schalterbetätigungen pro 10 Sekunden)
7. Impulsrate eines Geigerzählers
8. Wir bestimmen elektrische Widerstände
9. Musterlösung zur Widerstandsmessung 1 (mit Funktion "RC")
10. Musterlösung zur Widerstandsmessung 2 (mit Funktion "RC2" )
11. Wir bestimmen die Temperatur
12. Musterlösung zur Temperaturmessung
13. Aufnahme einer Temperatur/Zeit-Kurve
14. Heizungsregelung in einem Modellhaus
Bretschneider, Messen, Steuern, Regeln mit dem Computer
25
26
27
28
29
30
31
32
33
-2-
Schülerversuche mit dem Computer
Prof. H. Harreis ,
Universität - GH - Duisburg ,
Sektion Didaktik der Physik, 47057 Duisburg
E-Mail: [email protected]
U. Bretschneider ,
Realschule Rheinhausen ,
Körner Platz 2 , 47226 Duisburg
E-Mail: [email protected]
Zielsetzung:
Der Einsatz des Computers im Physikunterricht wird oft mit teueren Versuchsaufbauten und
komplizierten Programmen erkauft. Das dies nicht sein muß, soll folgende kleine Auswahl
von Versuchen zeigen, die für den Einsatz in der Sekundarstufe I konzipiert wurde.
An sie wurden folgende Kriterien gestellt:
1.
2.
3.
4.
5.
Sie sollten extrem preiswert sein.
Der Nachbau muß für Schüler möglich sein.
(Förderung der Schülerselbsttätigkeit)
Die Verwendbarkeit in anderem Zusammenhang sollte gegeben sein.
Eine Beschädigung des Computers durch Fehlbedienung muß ausgeschlossen sein.
- Kurzschlußfest !
- Geräte dürfen bei angeschaltetem Computer angeschlossen und getrennt werden !
- Kontakte am Interface dürfen beliebig miteinander verbunden werden!
Die Versuche sollten rechnerunabhängig sein.
( geeignet für alle Rechner mit Serial- , Centronics- , Joystick- oder Game- Port ! )
Versuchsbeschreibungen:
Die Versuche sind nach Art der Messung , und dort in etwa nach dem Grad der Schwierigkeit
geordnet. Bei den im Text angegebenen Programmen handelt es sich um Minimalprogramme,
die auf jedem X86 unter COMAL laufen.
Unterprogramme:
Eine Diskette mit den Unter-Programmen für die hier beschriebenen Versuche können Sie für
IBM PC/AT (TurboPascal 6.0 und COMAL) erhalten
mit der Post gegen eine Schutzgebühr von 5.-€
kostenlos via download unter http://www.duesseldorf.ddn.de/physik
Es ist ausdrücklich erwünscht, daß die Programme, speziell hier die
Physikunterprogramme, weitergegeben werden !
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-3-
1. Aufbau eines Computer Systems
Computer sind Maschinen, die Infomationen in Form von Zahlen lesen, bearbeiten und
schreiben können.
Am einfachsten läßt sich ihr Aufbau mit dem EVA-Modell beschreiben. Danach besteht jeder
Computer aus drei Baugruppen:
E:
Eingabe-Teile
V:
Verarbeitungs-Teile
A:
Ausgabe-Teile
Eingabe-Teile:
hierzu gehören alle Teile aus denen der Computer (genauer: der Mikroprozessor)
Informationen lesen kann.
Dies sind z.B.:
Tastatur, Floppy, Festplatte, CD-ROM, Maus, RAM (Speicher) ,...
Verarbeitungs-Teile:
Mikroprozessor und Coprozessor(en) kann man als die Teile beschreiben,
die für die Bearbeitung und Verwaltung der Daten zuständig sind. Sie
können Zahlen aus dem Speicher lesen, bearbeiten und in den Speicher
zurückschreiben.
Die Verarbeitungs-Teile werden auch häufig als Zentraleinheit oder
Rechenbereich bezeichnet. Sie bestehen beim PC/AT aus einer CPU80x86
und oft einem mathematischen Coprozessor 80X87. Ab 80486DX ist der
Coprozessor in den CPU-Chip integriert.
Ausgabe-Teile:
hierzu gehören alle Teile an die der Mikroprozessor Informationen
schicken kann.
Das sind z.B. : Drucker, Monitor, Floppy, Festplatte, RAM, Modem ...
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-4-
2. Speicher - Modell
Den Mikroprozessor kann man sich als Verwalter von Informationen vorstellen. Diese
Informationen werden im Computer als Zahlen gespeichert.
Dabei kann man sich vorstellen, daß es im Computer ganz viele "Schubladen" gibt. In diese Schubladen kann
der Mikroprozessor Zahlen hineinlegen, sie lesen, mit ihnen rechnen (sie bearbeiten) .
In der Fachsprache nennt man die "Schubladen" Computer-Speicher. Damit wir die Schubladen unterscheiden
können, sind sie durchnummeriert. Zu der Nummer einer Schublade sagt man auch "Adresse" .
Im PC/AT`s gibt es drei verschiedene Arten von Speicher :
1. ROM
=
Read Only Memory
dies ist Speicher aus dem nur gelesen werden kann.
Hier steht z.B. was der Mikroprozessor beim Einschalten tun soll !
2. RAM
=
Read And write Memory
Schreib- / Lese - Speicher
In diesen Speicher kann nur der Mikroprozessor Zahlen hineinschreiben, bzw.
herauslesen.
8MB RAM heißt z.B. es stehen 8 Mega Byte = 8 * 106 "Schubladen" zur
Verfügung .
3. I/O
=
Input / Output
Ein- / Ausgabe - Speicher
Diesen Speicher können der Mikroprozessor und die externen Geräte benutzen. Über
diesen Bereich werden Informationen von der Außenwelt in den Computer geschickt,
bzw. Informationen aus dem Computer an die Außenwelt geschickt.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-5-
3. Binärzahlen
Im Computer werden die Zahlen (Informationen) durch elektrische Signale realisiert.
Speicherstelle vergrößert :
In jede „Schublade“ (Speicherstelle) münden 8 elektrische Leitungen. Jede Leitung kann die
Zustände "high" und "low" annehmen:
high
->
hohe elektrische Spannung, z.B. +5Volt oder +12 Volt .
low
->
tiefe elektrische Spannung, z.B. 0 Volt oder -12 Volt .
Die einzelne Stelle einer Zahl heißt "Bit", 8 Bit nennt man ein "Byte". Da jedes Bit nur zwei verschiedene
Zustände annehmen kann, nennt man diese Zahlen auch Binärzahlen (von bi = zwei ) . Jede Stelle einer
Binärzahl hat den doppelten Wert ihres Vorgängers.
Hat eine Leitung den Zustand "high", so schreibt man eine "1" in das dazugehörige Kästchen, bei "low" eine "0"
.
Beispiel:
Bei der Dezimalzahl 70 werden drei Leitungen auf +5Volt geschaltet, die anderen
haben 0Volt
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-6-
4. Ports / Schnittstellen
Die elektrischen Leitungen einiger Speicherstellen enden nicht im Computer, sondern an der
Computer - Außenwand.
Die Stellen, an der diese Leitungen aus dem Computer herauskommen, nennt man
"Schnittstellen" oder "Ports" , weil sie die Verbindung zwischen dem Computer und der
Außenwelt sind.
An diese Ports kann der Mikroprozessor Informationen
(Zahlen) schicken, und wir können sie von Außen als
elektrische Spannungen "sehen" .
(Ausgabe - Leitungen)
Wir können aber auch Infomationen
(elektrische Spannungen: high / low )
an die Leitungen der Ports schicken.
Der Mikroprozessor kann diese Informationen
als Zahlen lesen.
( Eingabe - Leitungen )
Die Namen der Ports orientieren sich
a)
an der Art der Informationsübertragung,
z.B. :
serieller Port
parallel Port
b)
am angeschlossenen Gerät,
z.B. :
Drucker Port --> Kabel für den Drucker
Maus Port
--> Kabel für die Maus
Tastatur Port --> Kabel für die Tastatur usw.
-->
-->
Zahlen werden Bit für Bit übertragen
8-Bit werden gleichzeitig (parallel) übertragen
...
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-7-
5. Computer - Befehle
Wie können wir den Computer dazu bringen für uns zu arbeiten ?
Um mit dem Mikroprozessor zu kommunizieren, benötigt man eine Computer-Sprache. Wir
werden die Sprache COMAL benutzen, sie ist weit verbreitet und ihre Grundlagen sind leicht
zu erlernen !
Die wichtigsten "Vokabeln" der Sprache COMAL:
Weil man dabei dem Computer immer sagt, was er tun soll, werden diese Vokabeln auch
Computer-Befehle genannt.
Computer - Befehle
in der Sprache Deutsch
in der Sprache COMAL
einfache Anweisungen
Bildschirm löschen
page
einer Variablen einen Wert zuweisen
x:=235 ; input x
einen Text auf den Monitor schreiben
Print „Text“
den Wert einer Variablen schreiben
Print x
Zahl in eine I/O-Schublade schreiben
Out ( adresse, wert)
Zahl aus einer I/O-Schublade lesen
x := inp# ( adresse )
Wiederholungen
wiederhole folgendes
{ Anweisungen }
bis folgende Bedingung erfüllt ist ;
repeat
solange die Bedingung erfüllt ist, tue folgendes
while
{ Anweisungen }
Endemarke;
endwhile
{ Anweisungen }
until Bedingung = true ;
Bedingung = true do
{ Anweisungen }
Bedingungen
wenn die Bedingung b erfüllt ist, dann tue folgendes
if b = true then
{ Anweisungen }
{ Anweisungen }
andernfalls
{ Anweisungen } ;
else
{ Anweisungen }
endif
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-8-
6. Gewöhnung an den COMAL - Editor
Aufgaben:
1.
2.
3.
Tippe das Programm ab.
Speichere das Programm mit save "name ab (Achtung nur 8 Buchstaben erlaubt)
Starte das Programm mit "run"
(Programme für Comal Version 3.11)
Programm 1:
0010 // Aufgabe 1
0020
0030 USE turtle
0040 graphicscreen(7)
0050 window(0,640,0,400)
0060
0070 FOR i:=1 TO 200 DO
0080 forward(i)
0090 right(i)
0100 ENDFOR
Programm 2:
0010 // Aufgabe 2
0020
0030 USE turtle
0040 graphicscreen(7)
0050 window(0,320,0,200)
0060
0070 a:=250; b:=150; c:=70; d:=50
0080
0090 FOR i:=0 TO 1.01 STEP 0.05 DO
0100 moveto(c*i,200-(d+b)*(1-i))
0110 drawto(a+c*i,200-d-(b-d)*i)
0120 pencolor(RND(0,15))
0130 ENDFOR i
0140
0150 FOR i:=0 TO 1.01 STEP 0.05 DO
0160 moveto(a*i,b*i)
0170 drawto(c+a*i,199-b*i)
0180 pencolor(RND(0,15))
0190 ENDFOR i
0200
0210 WHILE KEY$="" DO NULL
Bretschneider, Messen, Steuern, Regeln mit dem Computer
-9-
7. Serieller Port
Jeder PC besitzt eine oder mehrere serielle Schnittstellen. Sie haben die Bezeichnung
"serial_1" , "serial_2" bzw. "COM1" , "COM2" usw.
An der seriellen Schnittstelle haben wir drei Ausgänge und vier Eingänge.
Es gibt zwei gebräuchliche Formen der seriellen Schnittstelle, 25 polig und 9 polig. Als
Anschlußstecker benötigt man am PC immer Sub-D-Buchsen:
Die folgende Tabelle zeigt alle Leitungen mit den Pinbelegungen bei 9poligen und 25poligen
seriellen Schnittstellen:
Besonderheiten des seriellen Ports:
- Die Schnittstelle ist kurzschlußfest.
- Geräte dürfen bei angeschaltetem Computer angeschlossen und getrennt werden.
- Die Stromversorgung einfacher Geräte kann über die serielle Schnittstelle erfolgen.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 10 -
8. Serielles Interface
Die elektrischen Leitungen der Ports liegen sehr dicht nebeneinander. Damit wir mit ihnen
arbeiten können, müssen wir sie so anordnen, daß wir an sie problemlos Krokodilklemmen
anbringen können.
Dazu brauchen wir eine 9polige (bzw. 25polige) Sub-D-Buchse, 8 Kabel, ein Brettchen als
Unterlage, 8 Reiszwecken und 8 Lötnägel.
Die Reiszwecken und Lötnägel werden entsprechend der Skizze auf dem Brettchen
angebracht, und über die Kabel mit den Pins der Sub-D-Buchse verbunden.
Unser Interface:
Besonderheiten:
- Unser Interface ist kurzschlussfest,
d.h. jedes Kabel kann mit jedem verbunden werden, ohne den Computer zu
beschädigen!
- Der Strom der Ausgangsleitungen ist auf ca. 10 mA beschränkt !
- Der Eingangswiderstand der Eingabeleitungen beträgt ca. 10 kOhm gegen Masse !
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 11 -
9. Die Ausgabe - Leitungen
An der seriellen Schnittstelle haben wir drei Ausgabe-Leitungen !
Die Ausgabeleitungen unserer Schnittstelle kann der Computer auf high bzw. low setzen.
Dabei bedeutet :
- high : U = +12 Volt
- low : U = -12 Volt
9.1 Ersatzschaltbild:
Besonderheit:
Durch den internen Widerstand von 1kOhm ist der Strom auf ca. 10mA begrenzt !
D.h. kleine Lasten bis 10mA können direkt angesteuert werden (siehe Blinklicht !) .
9.2 Computer-Befehle zum Ansprechen der Ausgabe-Leitungen
Um eine Ausgabe-Leitung auf "high" oder "low" zu setzen, müssen wir eigentlich wissen, zu welcher Schublade
sie gehört, und welche Bitnummer sie hat. Dazu gibt es die Befehle
Out ( Adresse, Zahl ) .
Um nicht jedesmal Adresse und Bitnummer nachschauen zu müssen, gibt es in der Physik-Unit für den seriellen
Port eine Vereinfachung:
Ausgabe-Leitung 1 auf high : Ausgang_1(high) , bzw. A1(1) ;
Ausgabe-Leitung 1 auf low : Ausgang_1(low) , bzw A1(0) ;
(Ausgänge 2 und 3 entsprechend)
Wird ein anderer Port als COM1 benutzt (hier ist oft eine Maus angeschlossen) , so muß dies am Anfang des
Programms stehen:
Z.B.
serial Port 2
serial Port 3
--> COM2;
--> COM3;
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 12 -
9.3 Blinklicht
Aufbau:
Programm in Deutsch
Programm in COMAL
Programm - Name: Blinklicht ;
10 / / Blinklicht
benutze System- , Physik - Befehle;
20 use system
30 use physik
lösche den Bildschirm;
wir benutzen COM1 ;
40 page
50 com1
wiederhole
60 repeat
Ausgang_1 auf high setzen ;
warte 1 Sekunde ;
Ausgang_1 auf low setzen ;
warte 1 Sekunde ;
70
80
90
100
ausgang_1(high)
warte(1)
ausgang_1(low)
warte(1)
bis eine Taste gedrückt wird ;
110 until keypressed
Programm -Ende .
120 end
Ergänzung:
Befehle:
1.
Jedesmal wenn die Lampe angeht,
soll kurz ein Alarmton zu hören sein.
Ton an :
2.
Schließe 2 LEDs an und laß sie im Wechsel blinken.
play_tone (Frequenz,Dauer), z.B.
play_tone( 444 , 0.5 )
vorher: use sound einfügen!
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 13 -
9.4 Weitere Beispiele zur Ansteuerung von Geräten
Ansteuerung von Relais
Ansteuerung von vielen kleine Lasten
Werden viele Ausgangsleitungen mit großer
Leistung gebraucht, läßt sich z.B. ein ULN 2803
einsetzen. Er besteht intern aus acht
Verstärkerstufen, die mit jeweils 500mA belastbar
sind. Alle Ausgänge sind intern mit einer
Schutzdiode ausgerüstet:
Ansteuerung: Transistor mit kleiner Last
Treiber für große Lasten
Ansteuerung mit Optokoppler
(Galvanische Trennung von Computer und
Steuerelektronik)
Liegen die anzusteuernden Geräte weit weg vom
Computer, so gibt es Ics mit denen man über eine
Zweidrahtleitung 8 Daten übermitteln kann. Eines
dieser Pärchen besteht aus den Bausteinen U 6050
(Sender) und U 6052 (Empfänger) :
Steuern eines 220Volt - Verbrauchers
(Nur für den Lehrer ! )
Optokoppler mit Triac-Ausgang
(z.B. S201-D02 von Sharp)
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 14 -
10. Die Eingabe - Leitungen
An der seriellen Schnittstelle haben wir 4 Eingabe-Leitungen !
An einer Eingabe-Leitung kann der Computer erkennen, ob sie mit einer hohen Spannung
(high) oder mit einer tiefen Spannung (low) verbunden ist.
Dabei heißt:
high : U > 2 Volt
-->
im Bit steht eine 1
low : U < 1 Volt
-->
im Bit steht eine 0 .
10.1 Ersatzschaltbild:
Besonderheit:
Ist der Eingang mit keinem Kabel verbunden, so zeigt das Bit eine 0 (low) an !
Die Spannungen für high und low schwanken von Rechner zu Rechner (ausprobieren!) .
10.2 Computer-Befehle zum Abfragen der Eingabe-Leitungen:
Die Funktionen Eingang_1, Eingang_2, Eingang_3, Eingang_4 geben den Zustand der
betreffenden Leitung an.
Z.B.
Print (Eingang_1);
schreibt den Zustand von Eingang_1 auf den Monitor
if Eingang_1 = 1 then Ausgang_1(low);
wenn Eingang_1 auf hoher Spannung liegt, dann
wird der Ausgang_1 auf tiefe Spannung
( -12 Volt) gelegt.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 15 -
10.3 Schalterabfrage
Meßprinzip: Schalter auf -->
Schalter zu -->
Eingang_1 ist nicht mit Ausgang_1 (high !) verbunden,
er ist intern mit tiefer Spannung (low) verbunden,
im Bit steht eine 0 !
Eingang_1 ist mit Ausgang_1 und damit mit hoher Spannung
(high) verbunden, im Bit steht eine 1 !
Programm in Deutsch
Programm in COMAL
Programm-Name : Taster ;
0010 // Taster;
benutze System- und Physik - Befehle;
0020 use system
0030 use physik
lösche den Bildschirm ;
wir benutzen COM1 ;
Ausgang_1 auf high setzen ;
0040 page
0050 com1
0060 ausgang_1(high)
wiederhole
0070 repeat
gehe mit dem Cursor an die Stelle
x=10 und y=8 ;
0080 cursor 10,8
schreibe den Zustand von Eingang_1
0090 print (eingang_1)
bis eine Taste gedrückt wird ;
0100 until keypressed
Programm-Ende .
0110 end””
Ergänzungen:
1.
Schalter zu
Schalter auf
--> der Computer soll einen Alarmton spielen
-->
kein Ton
2. Wie könnte ein Feuchtemelder aussehen ?
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 16 -
10.4 If ... then ... else
Der Computer kann Entscheidungen treffen:
Wir wollen unser "Schalter-Programm" so verändern, daß der Computer nicht mehr nur die
Zahlen 1 oder 0 auf den Monitor schreibt, sondern er soll uns direkt sagen, ob der Schalter auf
oder zu ist.
Dazu benutzen wir den Befehl " if ... then ... else ... ; ", siehe "Computer-Befehle" .
Aufbau:
Programm in Deutsch
Programm in COMAL
Programm-Name : Taster ;
10 // Taster
benutze System-, Physik - Befehle;
20 use system, physik
lösche den Bildschirm ;
wir benutzen COM1 ;
Ausgang_1 auf +12 Volt setzen ;
30
40
50
page
com1
ausgang_1(high)
wiederhole
60
repeat
gehe mit dem Cursor an die Stelle
x=10 und y=8 ;
70
cursor 10,8
wenn Eingang_1 = high dann
schreibe "Schalter 1 ist zu"
andernfalls
schreibe "Schalter 1 ist auf" ;
80
90
100
110
if Eingang_1 = high then
print "Schalter 1 ist zu “
else
print "Schalter 1 ist auf "
bis eine Taste gedrückt wird ;
Programm-Ende .
120
until keypressed
130 end””
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 17 -
10.5 Elektronische Schalter
Als Schalter sind nicht nur "mechanische Schalter" geeignet. Es gibt eine ganze Reihe von
"elektronischen Schaltern" (Sensoren) , die für unser Interface geeignet sind.
Allen gemeinsam ist, daß wir mit ihnen 2 Zustände unterscheiden können:
Schalter auf ,
Schalter zu .
Dabei bedeutet für unser Interface *1:
Schalter auf
-->
großer elektrischer Widerstand R > 100 kOhm
Schalter zu
-->
kleiner elektrischer Widerstand R < 5 kOhm .
Geeignete Sensoren:
Sensor
Zustand
entspricht
Schalter
Reed-Kontakt
Magnet da
kein Magnet
R < 1k
R > 1 000k
zu
auf
LDR
hell
dunkel
R < 5k
R > 100k
zu
auf
NTC
( 100k )
heiß ( 80 oC )
kalt ( < 20 oC )
R < 20k
R > 100k
zu
auf
2 Drähte
Wasser da
Kein Wasser
R < 10k
R > 1 000k
zu
auf
Transistor,
Opto-Koppler
Ub > 0.7 Volt
Ub < 0.7 Volt
Rce < 5k
Rce > 100k
zu
auf
*1 Diese Werte können von Rechner zu Rechner schwanken. Z.B. : haben unsere Schulrechner folgende Werte:
R < 22k -->
R > 85k -->
Schalter zu
Schalter auf .
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 18 -
10.6 Kurzüberblick von einfachen Experimenten
(Dateneingabe 1 Bit )
zu Beginn jedes Programms muss stehen:
use system, physik
page
// Start hell/dunkel
ausgang_1(high)
repeat
cursor 10,10
if Eingang_1 = 1 then print “dunkel”
if Eingang_1 = 0 then print "hell"
until keypressed
end””
// Start Zähler
zaehler:=0
ausgang_1(high)
repeat
cursor 10,10
if Eingang_1=1 then
zaehler:=zaehler+1
print "Zaehler:"; zaehler
while Eingang_1=1 do null
warte ( 0.1 )
endif
until keypressed
end""
// Start Geschwindigkeit
func hell
if Eingang_1=1 then return true else return false
endfunc
func dunkel
return not hell
endfunc
Ausgang_1(high)
s:=0.1 // {Weg in Metern}
while hell do null
timer_start
while dunkel do t:=zeit
print "Geschwindigkeit: " ; s / t
warte_auf_Tastendruck
end""
// Start Beschleunigung
func schalter_oben_zu
if Eingang_1=1 then return true else return false
endfunc
func schalter_unten_auf
if Eingang_2=0 then return true else return false
endif
Ausgang_1(high);
weg:=0.8 // {Weg in Metern}
while schalter_oben_zu do null
timer_start
while schalter_unten_auf do t:=zeit
print "g: ", 2*s / sqr(t), " m / s^2"
warte_auf_Tastendruck
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 19 -
11.1 Der Computer kann hell und dunkel unterscheiden
Meßprinzip:
Wenn es hell ist, dann ist der Widerstand des LDR sehr klein, er wirkt wie ein geschlossener
Schalter!
Wenn es dunkel ist, dann ist der Widerstand des LDR sehr hoch, er wirkt wie ein offener Schalter!
Achtung ! :
Manchmal wird der Widerstand des LDR aber nicht groß genug. Dann "sieht" der Eingang_1
noch die hohe Spannung an Ausgang_1. Um dies zu verhindern, müssen wir ggfs. einen Widerstand
R mit ca 5 kOhm dazuschalten.
Aufbau:
Programm in Deutsch
Programm in COMAL
Programm-Name "Hell01";
// hell01;
benutze System-, Physik - Befehle
use system, physik;
lösche den Bildschirm
wir benutzen COM1
Ausgang_1 auf high setzen
page
COM1
ausgang_1(high)
wiederhole
repeat
gehe mit dem Cursor an die Stelle
x:=10 und y:=10
cursur 10,10
wenn Eingang_1 mit high verbunden ist, dann
schreibe "hell"
andernfalls
schreibe "dunkel"
if eingang_1 = high then
print " hell "
else
print "dunkel"
bis eine Taste gedrückt wird
Programm-Ende .
until keypressed
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 20 -
11.2 Helligkeitssteuerung
Aufgabe:
Wenn es dunkel ist, soll der Computer eine Glühlampe einschalten.
Wenn es hell ist, soll er sie wieder ausschalten .
(z.B. in einem Modellhaus, LDR auf dem Dach und die Lampe im Haus )
Aufbau:
Programm-Name "Helligkeitssteuerung"
// Program Helligkeitssteuerung;
benutze crt- , physik18- Befehle;
use system, physik
Funktion hell : Boolsche Funktion;
Beginn der Funktion
wenn Eingang_1 = high, dann
hell := wahr
andernfalls
hell := falsch ;
Ende der Funktion ;
func hell
if eingang_1 = high then
return true
else
return false
endif
endfunc
der Computer lernt den Befehl "Lampe_an" ;
ausgang_2 auf high setzen ;
Ende ;
proc lampe_an
ausgang_2(high)
endproc
der Computer lernt den Befehl "Lampe_aus" ;
ausgang_2 auf low setzen;
Ende ;
proc lampe_aus
ausgang_2(low)
endproc
Programm - Beginn
// Beginn
com1
ausgang_1(high)
lampe_aus
repeat
if hell then lampe_aus
if (not hell) then lampe_an
until keypressed
wir benutzen com1;
Ausgang_1 auf high setzen;
Lampe ausschalten;
wiederhole
wenn es hell ist, dann schalte die Lampe aus
wenn es dunkel ist, dann schalte die Lampe an
bis eine Taste gedrückt wird;
Programm-Ende.
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 21 -
11.3 Geschwindigkeitsmessung
Aufgabe:
Wir bestimmen die Geschwindigkeit eines Modellautos zwischen zwei Lichtschranken.
Messprinzip:
Wenn das Auto durch die erste Lichtschranke fährt, wird die Computeruhr gestartet.
Wenn es durch die zweite fährt, wird die Uhr gestoppt.
Aus dem Abstand der beiden Lichtschranken und der gemessenen Zeit bestimmt der Computer dann die
Geschwindigkeit.
Aufbau:
// Geschwindigkeit ;
use system, physik
Programm-Name "Geschwindigkeit"
benutze crt- , physik18- Befehle ;
Programm-Beginn
wir benutzen Com1 ;
strecke := 0.5 {Meter}
setze ausgang1 und ausgang2 auf high;
com1
strecke := 0.5 // { Meter }
ausgang_1(high)
ausgang_2(high)
repeat
wiederhole
lösche den Bildschirm;
schreibe "Computer fertig "
page
print "Computer fertig"
solange LDR1 hell ist, tue nichts ;
while eingang_1 = high do null
timer starten ;
timer_start
solange LDR2 hell ist , tue nichts
while eingang_2 = high do null
gehe mit dem Cursor an die Stelle x=0 und y=10
cursor 10,0
schreibe "Weg =" Strecke in Metern
print "Weg = " ; strecke ; " Meter "
schreibe "Zeit = " Fahrzeit in Sekunden
print using " Zeit = ##.## s" : t
schreibe "Geschwindigkeit ="Strecke/Zeit in m/s
print " v = "; strecke / t ;" m/s"
warte auf einen Tastendruck
warte_auf_Tastendruck;
bis ein "e" gedrückt wurde
Programm-Ende.
until taste = "e"
end.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 22 -
11.4 Der Computer gibt Alarm
Aufgabe:
Der Computer soll Alarm geben, wenn eine Tür (z.B. aus LEGO ) geöffnet wird.
Aufbau:
Programm in Deutsch
Programm in COMAL
Programm-Name "Hausalarm" ;
// hausalarm
benutze crt- , Physik- Befehle ;
use system, physic, sound
Programm-Beginn
lösche den Bildschirm ;
wir benutzen Com 1
Ausgang_1 auf high setzen ;
page
com1
ausgang_1(high)
wiederhole
repeat
gehe mit dem Cursor an die Stelle x=20, y=20
cursor 20 , 20
wenn Eingang_1 high ist, dann
schreibe "alles ok"
andernfalls
schreibe "Hilfe Überfall" ;
erzeuge einen Ton von 1000 Hertz
von 1 Sekunde Dauer
if eingang_1 = high then
print "`Alles ok !
else
print "Hilfe Überfall !"
play_tone( 1000 , 1 )
Ende – Wenn - Schleife
endif
until keypressed
bis eine Taste gedrückt wird ;
Programm-Ende .
"
end.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 23 -
11.5 Der Computer als Zähler 1
Aufgabe 1:
Der Computer soll zählen, wie oft ein Schalter betätigt wird.
Aufbau:
Programm:
// zaehler_1;
use system, physik18
com1
page
ausgang_1(high)
zaehler:=0
cursor 10 , 10
print using "Zählerstand ####":zaehler
repeat
while eingang_1=0 do null
zaehler:=zaehler+1
cursor 10 , 10
print using "Zählerstand ####":zaehler
while eingang_1=1 do null;
warte(0.1);
// { <--- dient zum Entprellen des
Schalters ! }
until keypressed
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 24 -
11.6 Der Computer als Zähler 2
Aufgabe 2:
Der Computer soll zählen, wie oft ein Schalter in 10 Sekunden betätigt wird.
Programm:
// 10_Sekunden_Zaehler;
use system, physik, sound
proc zeit_kontrolle
if timer>=10 then ende=true
cursor 10,10
print using "Zeit: ##.# Zähler: ###":sekunde,zaehler
endproc
com1
ausgang_1(high)
page
repeat
zaehler:=0;
ende=false
play_tone(888,0.5) //Startzeichen
timer 0
// interne Comaluhr auf Null stellen
repeat
while (e1=0 and not ende) do zeit_kontrolle
if ende then goto weiter
zaehler=+1
while (e1=1 and not ende) do zeit_kontrolle
if ende then goto weiter
warte( 0.1 ) // entprellen
until keypressed or timer>10
weiter:
print "Schalter ',zaehler, " mal in 10 Sekunden geschlossen"
warte_auf_tastendruck;
until taste='e';
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 25 -
11.7 Impulsrate eines Geigerzählers
Aufgabe: Wir schließen einen Geigerzähler an unser Interface an, und bestimmen die
Impulsrate pro Minute.
Meßprinzip:
Am Lautsprecher-Anschluß des Geiger-Zählgerätes wird jedesmal ein kurzer positiver
Spannungsimpuls erzeugt, wenn das Zählrohr von einem radioaktiven Teilchen
getroffen wird. Diesen Spannungsimpuls können wir, wie das Schließen eines Schalters,
mit unserem Interface von Computer erfassen.
Aufbau:
//program geigerzaehler
use system,physik
page
timer 0
z:=0
repeat
cursor 10,10
print using "####":z
while eingang_1=0 do null
z:=+1
while eingang_1=1 do null
until keypressed or timer>300
print
print "Mittelwert: ";z/5, " Min"
end""
//program geiger_grafik;
use system, physik
func minute
return timer div 60
endfunc
impulse:=0
messzeit:=5
koordinatensystem(0,messzeit+1,
1, 0,50,10)
timer 0
for i:=1 to 5 do
m:=minute
z:=0
gehe_zu(i,0)
repeat
while eingang_1=0 do
if minute>m then goto ende
z:=+1
zeichne_zu(i,z);
while eingang_1=1 do null
until minute>m
ende:
impulse:=+z
endfor i; {Ende der for - Schleife}
cursor 10,1
print "Mittelwert: " ; impulse/5 ;
"Impulse pro Minute"
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 26 -
11.8 Wir bestimmen elektrische Widerstände
Mit Hilfe einer kleinen Hilfsschaltung können wir elektrische (ohmsche) Widerstände bestimmen.
Aufbau:
Aufgaben:
1.
Bestimme für verschiedene Widerstände Rx den "Computer-Wert" RC .
z.B. für 0, 10k , 20k, 30k, 40k, 50k, 100k, 200k .
2.
Zeichne das RC / Rx - Diagramm .
3.
Versuche eine Formel R( RC ) aufzustellen .
Programm:
in Deutsch
in COMAL
Programm-Name: Widerstand1;
benutze System- , Physik- Befehle;
//program widerstand1
use system, physik
Programm-Beginn
lösche den Bildschirm;
wir benutzen com1 ;
page
com1
wiederhole
repeat
vor und 5
Cursor zu x=10 und y=10 ;
cursor 10,10
schreibe den RC -Wert auf 1 Stelle
Stellen hinter dem Komma
print using " ##.####" : rc
bis eine Taste gedrückt wird ;
Programm-Ende .
until keypressed
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 27 -
11.9 Musterlösung zur Widerstangsmessung mit RC
Hier wurde die Funktion RC, die einen Softwarezähler benutzt, zur Widerstandsmessung
verwendet.
Zu Aufgabe 1: Bestimmen der Computer-Werte
RC
59
430
925
1966
3360
4110
6080
8960
R / kOhm
0
10
22
47
82
100
150
220
zu Aufgabe 2: RC / R - Diagramm
250
R in kOhm
200
150
R / kOhm
100
50
0
0
2000
4000
6000
8000
10000
RC in Com puterw erten
zu Aufgabe 3 : Funktion r = f ( RC )
Geradengleichung:
in COMAL
y = m * (x - x(0) )
func r
∆y
* ( RC − RC (0))
∆x
220kOhm
R=
* ( RC − 59)
8960 − 59
220
R=
* ( RC − 59) kOhm
8901
R=
R:=220/8901*(RC-59)
endfunc
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 28 -
11.10 Musterlösung zur Widerstandsmessung mit RC2
Hier wurde die Funktion RC2, welche den internen Timer2 benutzt, zur Widerstandsmessung
verwendet.
Zur Aufgabe1: Bestimmen der Computer-Werte
RC2
1,4
10,0
21,5
45,6 78
95,5
141
208
0
10
22
47 82
100
150
220
R / kOhm
zu Aufgabe 2: RC / R - Diagramm
250
R in kOhm
200
150
R / kOhm
100
50
0
0,0
50,0
100,0
150,0
200,0
250,0
RC2 in Com puterw erten
zu Aufgabe 3 : Funktion R = f (RC2)
Geradengleichung
in COMAL
y = m * ( x-x(0) )
func r
∆y
* ( RC 2 − R2(0))
∆x
220kOhm
R=
* ( RC 2 − 14
. )
208 − 14
.
220
* ( RC 2 − 14
. )
R=
206.6
R=
R := 220/206.6*(RC2-1.4)
endfunc
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 29 -
11.11 Wir bestimmen die Temperatur
Aufbau:
Aufgaben:
1.
Widerstandswert RC .
2.
Celsius
Bestimme für 5 verschiedene Temperaturen zwischen 0 und 100 oC den
Trage die Werte der Tabelle in ein T / RC - Diagramm.
eichne eine Gerade so durch Deine Meßkurve, daß sie im Bereich von 0 bis 30 Grad
möglichst deckungsgleich sind!
Bestimme dann die Geradengleichung !
3.
Trage die Werte der Tabelle auf halblogarithmischem Papier in T / ln( RC ) -
Diagramm.
Zeichne eine Gerade so durch Deine Meßpunkte, daß sie im Bereich von 0 bis 30
möglichst deckungsgleich sind .
Grad Celsius
Bestimme dann die Geradengleichung !
Durchführung:
Gieße heißes Wasser in das Becherglas und warte bis sich die Thermometeranzeige und der
RC-Wert
kaum noch ändern. Notiere die Temperatur und den dazugehörigen RC-Wert
in einer Tabelle. Gieße
dann ein wenig kaltes Wasser dazu und miß erneut.
dazugehörigen
Ermittle so für ca. 6 verschiedene Temperaturen zwischen 0 und 50 Grad Celsius die
RC-Werte .
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 30 -
11.12 Musterlösung zur Temperaturmessung
Messwerte:
RC
T in Celsius
350
-8
230
4
163
15
135
21
60
45
Temperatur
Halblogarithmische Darstellung
180
160
140
120
100
80
60
40
20
0
-20 1
T = -30,217*Ln(RC) + 168,84
R2 = 0,9997
10
100
1000
RC
Geradengleichung:
Funktion in COMAL
RC = m*T + b
func Temperatur
T=−
169
* ln( RC ) + 169
ln(270)
Temperatur := -30.2 * ln(RC) + 169
endfunc
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 31 -
11.13 Aufnahme einer Temperatur / Zeit - Kurve
Abkühlkurve eines Glasgefäßes
Durchführung :
Klebe den kalibrierten NTC an ein Becherglas. Starte das Programm und gieße nach ca. 20 Sekunden heißes
Wasser in das Gefäß. Nachdem die Temperatur konstant ist, gießt Du das Wasser aus dem Becher.
Aufbau:
Programm:
in Deutsch
in COMAL
Programm-Name "TemperaturKurve";
benutze System- Physik - Befehle;
// program TemperaturKurve;
use system, physik
Funktion Temperatur : liefert reelle Zahlen;
Temperatur := -170/ln(270)*ln(rc2) + 170
;
Funktions-Ende;
func Temperatur
return -170 / ln(270) * ln( RC2 ) +170
endfunc
Programm-Beginn
koordinatensystem(0, 1000, 100, 0, 100, 10)
zeichne ein Koordinatensystem
x-Achse von 0 bis 1000 Sekunden
y-Achse von 0 bis 100 Grad
Celsius
com1
timer 0
wir benutzen COM1;
gehe_zu(0,Temperatur)
stelle die Uhr auf "Null" ;
gehe zu x=0, y=Temperatur
repeat
wiederhole
zeichne_zu(sekunden,Temperatur)
zeichne zu
x: Zeit in Sekunden
y: Temperatur in Grad
Celsius
until keypressed or ( timer > 1000 )
bis eine Taste gedrückt wird oder die Zeit >
1000s ist ;
warte auf einen Tastendruck;
warte_auf_tastendruck
end""
Programm-Ende.
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 32 -
11.14 Heizungsregelung in einem Modellhaus
Aufgabe:
In einem Modellhaus simulieren wir die Zweipunktregelung einer Heizung.
Als Heizung dient eine Glühlampe; die Temperatur messen wir mit dem kalibrierten NTC, den wir auf der
Lampe z.B. mit Tesafilm befestigen.
Der Computer soll die Temperatur an der Glühlampe regeln:
Überschreitet die Temperatur z.B. 35 oC , so soll die Heizung (Lampe) ausgeschaltet werden, unterschreitet die
Temperatur 30 oC, so soll die Heizung wieder eingeschaltet werden.
Zusatz:
Die Temperatur/Zeit - Kurve soll grafisch dargestellt werden.
Aufbau: siehe auch Temperatur/Zeit-Kurve
Programm:
// Heizungsregelung;
use System, physik
func Temperatur
return -170 / ln(270) * ln( RC2 ) +170
endfunc
proc Heizung_an
ausgang_3(high)
endproc
proc Heizung_aus
ausgang_3(low);
endproc
//{Hauptprogramm}
com1
koordinatensystem(0,600,100, 0, 100, 10)
timer 0
gehe_zu(0,Temperatur);
repeat
zeichne_zu(timer,Temperatur)
if temperatur>35 then heizung_an
if temperatur<30 then heizung_aus
until keypressed or ( sekunden > 600 )
warte_auf_tastendruck
end""
Bretschneider, Messen, Steuern, Regeln mit dem Computer
- 33 -

Documents pareils