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 -