Arduino im Physikunterricht: Messwerte erfassen und auswerten
Arduino im Physikunterricht: 3 fertige Versuche mit DS18B20, LDR und HC-SR04, Code mit CSV-Ausgabe, Serieller Plotter, Diagramm und Protokollvorlage.
Ein Arduino im Physikunterricht erfasst Messwerte in sechs Schritten: Die Schülerinnen und Schüler formulieren zuerst eine messbare Frage und eine Hypothese, schließen dann den passenden Sensor an den Arduino an; das Board schreibt jeden Messwert mit Zeitstempel im Format "zaman_ms,deger" (Zeit in ms, Wert) auf die serielle Schnittstelle, die Kurve wird im Seriellen Plotter live beobachtet, die Zeilen aus dem Seriellen Monitor werden kopiert und als CSV-Datei in eine Tabelle übernommen, aus der Tabelle entsteht ein Diagramm, und das Diagramm wird mit der Hypothese verglichen, um ein Ergebnis zu formulieren. Anders als bei Thermometer und Stoppuhr sammelt der Arduino in 10 Minuten 60 Messpunkte in gleichen Abständen, ohne zu ermüden und ohne Ablesefehler. Die Aufgabe der Klasse ist dann nicht mehr das Abschreiben von Werten, sondern das Deuten der Daten.
In diesem Beitrag findest du drei fertige Versuche für Physik, Chemie und Biologie: die Abkühlungskurve von heißem Wasser mit dem DS18B20, die Abhängigkeit der Lichtstärke vom Abstand mit einem LDR und die Bewegung auf der schiefen Ebene mit dem HC-SR04 (dazu eine Messung der Schallgeschwindigkeit). Zu jedem Versuch gibt es Fragestellung, Variablen, Material, Anschlussübersicht, kompilierbaren Code, Vorlage für die Messtabelle und das erwartete Ergebnis. Danach folgen die Schritte für den Seriellen Plotter und den Import in die Tabellenkalkulation, eine Tabelle zu Messfehlern und Kalibrierung, ein Ablauf für 2 × 40 Minuten (passt auch in eine Doppelstunde), eine kurze Vorlage für das Versuchsprotokoll und Sicherheitshinweise. Die Beispiele gehen von folgender Annahme aus: Sagen wir, du hast eine Klasse mit 24 Schülerinnen und Schülern, die in 6 Gruppen zu je 4 arbeiten, und jede Gruppe hat einen Arduino Uno und einen Computer. Auf die Anschlussdetails der Sensoren gehen wir hier nicht ein; an passender Stelle verlinken wir die jeweilige Sensoranleitung.
Arduino-Versuch in 6 Schritten: von der Frage zum Ergebnis
- Frage und Hypothese: Wähle eine messbare Frage ("Kühlt heißes Wasser in den ersten 5 Minuten schneller ab als in den nächsten 5?") und lass die Hypothese nach dem Muster "Wenn …, dann …, weil …" formulieren. Die Hypothese braucht eine Richtung oder eine Zahl; "es ändert sich" reicht nicht.
- Variablen: Lass die unabhängige Variable (was du veränderst: Zeit, Abstand, Neigung), die abhängige Variable (was der Sensor misst: Temperatur, Licht, Position) und die Kontrollvariablen (Wassermenge, dieselbe Taschenlampe, dasselbe Brett) in eine Tabelle schreiben. Wenn ein Versuch schiefgeht, liegt es meistens an einer Variable, die nicht konstant gehalten wurde.
- Sensor und Code: Sensor anschließen, Code hochladen. Der Code schreibt jede Zeile im Format "zaman_ms,deger"; die erste Zeile ist eine Kopfzeile mit den Spaltennamen. Die Zeit misst das Board selbst mit millis(), eine Stoppuhr ist nicht nötig.
- Live beobachten: Beobachte vor dem eigentlichen Messdurchgang einen kurzen Probedurchgang im Seriellen Plotter. Springt die Kurve unerwartet (lockeres Kabel, Schatten, Berührung mit der Hand), behebe das Problem sofort; nach der Messung ist es zu spät.
- Daten und Tabelle: Kopiere die Zeilen aus dem Seriellen Monitor, speichere sie als .csv-Datei, importiere sie in die Tabellenkalkulation und ergänze die Einheitenumrechnung (ms → s) und die Rechenspalten.
- Diagramm und Ergebnis: Erstelle ein XY-Diagramm (Punktdiagramm), beschrifte die Achsen mit Größe und Einheit, vergleiche das Diagramm mit der Hypothese und formuliere das Ergebnis in einem Satz, der sich auf die Daten stützt: "Unsere Hypothese wurde bestätigt bzw. nicht bestätigt, weil …".
Materialliste und Anschlussübersicht
| Material | Pro Gruppe | Klasse gesamt (6 Gruppen) | Versuch |
|---|---|---|---|
| Arduino Uno + USB-Kabel | 1 | 6 | Alle |
| Computer (mit Arduino IDE) | 1 | 6 | Alle |
| Steckbrett + 10 Steckbrücken (Stecker-Stecker) | 1 Satz | 6 Sätze | Alle |
| Wasserdichte DS18B20-Sonde + 4,7-kΩ-Widerstand | 1 + 1 | 6 + 6 | 1 Abkühlung |
| Hitzebeständiger Becher (ca. 250 mL) + Messbecher | 1 + 1 | 6 + 6 | 1 Abkühlung |
| Heißes Wasser (ca. 60 °C, gibt die Lehrkraft aus) | 200 mL | 1,2 L + Reserve | 1 Abkühlung |
| LDR + 10-kΩ-Widerstand | 1 + 1 | 6 + 6 | 2 Licht |
| Kleine LED-Taschenlampe oder Handylampe + Maßband | 1 + 1 | 6 + 6 | 2 Licht |
| Ultraschallsensor HC-SR04 | 1 | 6 | 3 Bewegung |
| Gerades Brett 1–1,5 m, 2–3 Bücher, Spielzeugauto + Karton 10 × 10 cm | 1 Satz | 6 Sätze | 3 Bewegung |
| Laborthermometer (zum Vergleich) | — | 1 | Kalibrierung |
| Versuch | Sensor | Anschluss am Arduino Uno | Zusatzteil und Hinweis |
|---|---|---|---|
| 1 Abkühlung | DS18B20-Sonde | Rot → 5V, Schwarz → GND, Gelb (DQ) → D2 | 4,7-kΩ-Widerstand zwischen gelbem Kabel und 5V; Bibliotheken OneWire und DallasTemperature |
| 2 Licht | LDR | Ein Bein → 5V, anderes Bein → A0 | 10-kΩ-Widerstand zwischen A0 und GND (Spannungsteiler); keine Bibliothek nötig |
| 3 Bewegung und Schall | HC-SR04 | VCC → 5V, GND → GND, Trig → D9, Echo → D10 | Kein Zusatzteil; der Kegel von etwa 15° vor dem Sensor muss frei bleiben |
Versuch 1: Abkühlungskurve von heißem Wasser (DS18B20)

Frage: Kühlt heißes Wasser jede Minute um denselben Betrag ab, oder wird die Abkühlung immer langsamer? Beispielhypothese: "Solange der Temperaturunterschied zwischen Wasser und Raum groß ist, kühlt das Wasser schnell ab; je kleiner der Unterschied wird, desto langsamer." Unabhängige Variable ist die Zeit, abhängige Variable die Wassertemperatur; konstant gehalten werden Wassermenge (200 mL), Gefäßart, Platz des Gefäßes auf dem Tisch und Raumtemperatur. Du kannst den Gruppen auch eine zweite Frage geben: Gibt es einen Unterschied zwischen Becher mit und ohne Deckel oder zwischen Glas und Pappbecher? Dann ist die Gefäßart die unabhängige Variable, zwei Gruppen messen gleichzeitig und vergleichen ihre Kurven. Anschluss und Installation der Bibliotheken findest du in der DS18B20-Anleitung. Wenn du nur einen DHT11 hast, tauche ihn niemals ins Wasser: Der sichere Ersatzversuch mit dem DHT11 ist, den Sensor eine Minute in der Hand zu erwärmen, ihn dann auf den Tisch zu legen und seine Abkühlung an der Luft zu messen (DHT11-Anleitung).
1// Deney 1: Sıcak suyun soğuma eğrisi / Experiment 1: cooling curve of hot water
2// Kütüphaneler: OneWire + DallasTemperature / Libraries: OneWire + DallasTemperature
3#include <OneWire.h>
4#include <DallasTemperature.h>
5
6const int ONE_WIRE_PIN = 2; // DS18B20 veri (DQ) pini / data (DQ) pin
7const unsigned long INTERVAL_MS = 10000; // 10 saniyede bir ölçüm / one reading every 10 s
8const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
9
10OneWire oneWire(ONE_WIRE_PIN);
11DallasTemperature sensors(&oneWire);
12unsigned long startMs = 0;
13unsigned long lastMs = 0;
14
15void setup() {
16 Serial.begin(9600);
17 sensors.begin();
18 if (!PLOTTER_MODE) {
19 Serial.println("zaman_ms,sicaklik_C"); // CSV başlık satırı / CSV header line
20 }
21 startMs = millis();
22 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
23}
24
25void loop() {
26 unsigned long now = millis();
27 if (now - lastMs < INTERVAL_MS) {
28 return; // daha zamanı gelmedi / not time yet
29 }
30 lastMs += INTERVAL_MS; // kaymayan zamanlama / drift-free timing
31
32 sensors.requestTemperatures(); // ölçümü başlat (~750 ms) / start conversion (~750 ms)
33 float tempC = sensors.getTempCByIndex(0);
34 if (tempC == DEVICE_DISCONNECTED_C) { // sensör yanıt vermedi / sensor did not respond
35 return;
36 }
37
38 if (PLOTTER_MODE) {
39 Serial.print("sicaklik_C:");
40 Serial.println(tempC, 2);
41 } else {
42 Serial.print(now - startMs); // deney başından beri ms / ms since start
43 Serial.print(",");
44 Serial.println(tempC, 2);
45 }
46}| Zeit (s) | Wassertemperatur T (°C) | Raumtemperatur T_Raum (°C) | Differenz ΔT = T − T_Raum (°C) | Restanteil ΔT / ΔT₀ |
|---|---|---|---|---|
| 0 | … | … | … | 1,00 |
| 60 | … | … | … | … |
| 120 | … | … | … | … |
| 300 | … | … | … | … |
| 600 | … | … | … | … |
| 900 | … | … | … | … |
| 1200 | … | … | … | … |
Der Code schreibt alle 10 Sekunden eine Zeile; eine Messung über 20 Minuten ergibt 120 Zeilen. Die Zeit kommt aus dem millis()-Zähler des Boards, und weil zur Variable lastMs jedes Mal genau 10 000 addiert wird, verschieben sich die Messzeitpunkte nicht; Details zu dieser Technik stehen im Beitrag zu millis() und delay(). Setzt du PLOTTER_MODE am Anfang des Codes auf true, entfällt die Zeitspalte und der Serielle Plotter zeichnet nur die Temperatur. Die Vorlage oben ist die Übersichtstabelle fürs Protokoll, die vollständigen Daten bleiben in der CSV-Datei; die Raumtemperatur misst ihr zu Beginn mit demselben Sensor an der Luft. Erwartetes Ergebnis: Die Kurve ist keine Gerade, sondern flacht immer weiter ab: In den ersten Minuten fällt die Temperatur schnell, danach immer langsamer. Der Grund ist das newtonsche Abkühlungsgesetz: Die Abkühlungsgeschwindigkeit ist proportional zum Temperaturunterschied zwischen Körper und Umgebung. Wer die letzte Spalte ausrechnet, sieht, dass die Differenz in gleichen Zeitabständen ungefähr um denselben Faktor kleiner wird; angenommen, die Differenz hat sich in den ersten 8 Minuten halbiert, dann halbiert sie sich in den nächsten 8 Minuten erneut. Ein Becher mit Deckel kühlt langsamer ab, weil weniger Wärme durch Verdunstung verloren geht. In Biologie lässt sich derselbe Versuch mit kleinen und großen Gefäßen wiederholen und mit der Frage verbinden, warum kleine Tiere schneller Wärme verlieren.
Versuch 2: Lichtstärke und Abstand (LDR)

Frage: Wie nimmt die Lichtstärke ab, wenn man sich von einer Lichtquelle entfernt; sinkt sie bei doppeltem Abstand auf die Hälfte oder auf ein Viertel? Beispielhypothese: "Bei doppeltem Abstand sinkt die Lichtstärke auf ein Viertel." Unabhängige Variable ist der Abstand der Taschenlampe zum LDR (10, 15, 20, 30, 40 und 50 cm), abhängige Variable der an A0 gelesene Wert; konstant gehalten werden dieselbe Taschenlampe, dieselbe Batterie, die senkrechte Ausrichtung der Lampe auf den LDR und das Umgebungslicht. Führe den Versuch bei geschlossenen Vorhängen und möglichst gedimmtem Raumlicht durch; bei starkem Umgebungslicht geht der Anteil der Taschenlampe in großen Abständen unter. Bei diesem Anschluss steigt der gelesene Wert mit zunehmendem Licht; das Prinzip des Spannungsteilers steht in der LDR-Anleitung. Schiebe die Lampe am Maßband entlang, warte an jedem Abstand 5 Sekunden, bis sich der Wert stabilisiert, und trage drei aufeinanderfolgende Werte aus dem Seriellen Monitor in die Tabelle ein. Miss zu Beginn einmal bei ausgeschalteter Lampe: Das ist der Hintergrundwert des Raums. Liegt der Wert beim größten Abstand sehr nah am Hintergrund, lass diesen Abstand im Diagramm weg.
1// Deney 2: Işık şiddeti ve mesafe / Experiment 2: light intensity and distance
2// Bağlantı: 5V - LDR - A0 - 10 kΩ - GND / Wiring: 5V - LDR - A0 - 10 kΩ - GND
3const int LDR_PIN = A0; // bölücünün orta noktası / divider midpoint
4const unsigned long INTERVAL_MS = 500; // yarım saniyede bir satır / one line every 0.5 s
5const int SAMPLES = 16; // ortalama için örnek sayısı / samples per average
6const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11int readAverage() {
12 long sum = 0;
13 for (int i = 0; i < SAMPLES; i++) {
14 sum += analogRead(LDR_PIN); // 0 (karanlık) ... 1023 (aydınlık) / dark ... bright
15 delay(2);
16 }
17 return (int)(sum / SAMPLES); // gürültüyü azaltır / reduces noise
18}
19
20void setup() {
21 Serial.begin(9600);
22 if (!PLOTTER_MODE) {
23 Serial.println("zaman_ms,ldr_ham"); // CSV başlık satırı / CSV header line
24 }
25 startMs = millis();
26 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
27}
28
29void loop() {
30 unsigned long now = millis();
31 if (now - lastMs < INTERVAL_MS) {
32 return;
33 }
34 lastMs += INTERVAL_MS;
35
36 int raw = readAverage();
37 if (PLOTTER_MODE) {
38 Serial.print("ldr_ham:");
39 Serial.println(raw);
40 } else {
41 Serial.print(now - startMs); // deney başından beri ms / ms since start
42 Serial.print(",");
43 Serial.println(raw);
44 }
45}| Abstand d (cm) | 1 / d² (1/cm²) | Messung 1 | Messung 2 | Messung 3 | Mittelwert roh | LDR-Widerstand (Ω) |
|---|---|---|---|---|---|---|
| Lampe aus | — | … | … | … | … | … |
| 10 | 0,0100 | … | … | … | … | … |
| 15 | 0,0044 | … | … | … | … | … |
| 20 | 0,0025 | … | … | … | … | … |
| 30 | 0,0011 | … | … | … | … | … |
| 40 | 0,0006 | … | … | … | … | … |
| 50 | 0,0004 | … | … | … | … | … |
Der Code schreibt jede halbe Sekunde den Mittelwert aus 16 Messungen; so verschwinden kleine Schwankungen einzelner analogRead-Werte. Um den LDR-Widerstand zu berechnen, schreibe, wenn der rohe Mittelwert in Spalte F steht, in Spalte G die Formel =10000*(1023-F3)/F3 und ziehe sie nach unten (für einen festen 10-kΩ-Widerstand und einen LDR an 5V). Erwartetes Ergebnis: Mit wachsendem Abstand sinkt der gelesene Wert, nahe an der Lampe schnell, weiter weg langsam. Der Rohwert fällt beim Wechsel von 10 auf 20 cm aber nicht auf ein Viertel, denn die Rohzahl ist nicht die Lichtstärke, sondern entspricht der Spannung am Teiler. Um das Abstandsgesetz (1/r²-Gesetz) sichtbar zu machen, trage Abstand und LDR-Widerstand in ein Diagramm mit zwei logarithmischen Achsen ein: Die Punkte liegen ungefähr auf einer Geraden. Die Lichtstärke ist umgekehrt proportional zum Quadrat des Abstands, und der LDR-Widerstand ist ungefähr umgekehrt proportional zur γ-ten Potenz der Lichtstärke; deshalb hat die Gerade nicht die Steigung 2, sondern 2 × γ. Bei gängigen LDR liegt γ meist zwischen 0,5 und 0,9, die Steigung ist also zwischen 1 und 1,8 zu erwarten. In der Oberstufe ist das eine gute Gelegenheit, die Frage zu diskutieren, wie das Verhalten des Messgeräts selbst das Ergebnis beeinflusst.
Versuch 3: Bewegung auf der schiefen Ebene und Schallgeschwindigkeit (HC-SR04)

Frage: Rollt ein Auto, das man auf einer schiefen Ebene loslässt, mit konstanter Geschwindigkeit hinunter oder wird es immer schneller? Wie ändert sich die Beschleunigung, wenn die Neigung zunimmt? Beispielhypothese: "Das Auto legt in gleichen Zeitabständen immer größere Strecken zurück, wird also schneller; bei größerer Neigung ist die Beschleunigung größer." Unabhängige Variable ist die Zeit (im zweiten Durchgang die Neigung: 1, 2 und 3 Bücher), abhängige Variable der Abstand des Autos zum Sensor; konstant gehalten werden Auto, Startpunkt und Brett. Aufbau: Lege ein Ende eines geraden Bretts von 1–1,5 m auf Bücher und platziere den HC-SR04 am unteren Ende, Blickrichtung das Brett hinauf. Klebe hinten an das Spielzeugauto ein Stück Karton von 10 × 10 cm; von kleinen, runden Gegenständen bekommt der Sensor kein zuverlässiges Echo, ein flacher Karton liefert dagegen ein kräftiges. Halte das Auto etwa 100 cm vom Sensor entfernt fest, lass es los und stelle ein Buch vor den Sensor, damit das Auto nicht dagegen prallt. Funktionsprinzip und Reichweite des Sensors erklärt die HC-SR04-Anleitung.
1// Deney 3: Eğik düzlemde hareket ve ses hızı / Experiment 3: motion on a ramp and speed of sound
2const int TRIG_PIN = 9; // tetik / trigger
3const int ECHO_PIN = 10; // yankı / echo
4const unsigned long INTERVAL_MS = 60; // ölçümler arası en az ~60 ms / at least ~60 ms between pings
5const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
6const bool RAW_ECHO_US = false; // true: ses hızı deneyi için yankı süresi (µs) / echo time for speed of sound
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11void setup() {
12 pinMode(TRIG_PIN, OUTPUT);
13 pinMode(ECHO_PIN, INPUT);
14 digitalWrite(TRIG_PIN, LOW);
15 Serial.begin(9600);
16 if (!PLOTTER_MODE) {
17 Serial.println(RAW_ECHO_US ? "zaman_ms,yanki_us" : "zaman_ms,mesafe_cm"); // CSV başlığı / CSV header
18 }
19 startMs = millis();
20 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
21}
22
23void loop() {
24 unsigned long now = millis();
25 if (now - lastMs < INTERVAL_MS) {
26 return;
27 }
28 lastMs += INTERVAL_MS;
29
30 digitalWrite(TRIG_PIN, LOW);
31 delayMicroseconds(2);
32 digitalWrite(TRIG_PIN, HIGH); // 10 µs tetik darbesi / 10 µs trigger pulse
33 delayMicroseconds(10);
34 digitalWrite(TRIG_PIN, LOW);
35
36 unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, 25000UL); // en fazla 25 ms (~4 m) / max 25 ms (~4 m)
37 if (echoUs == 0) { // yankı yok, satırı atla / no echo, skip the line
38 return;
39 }
40 float distanceCm = echoUs * 0.0343 / 2.0; // 343 m/s, gidiş-dönüş / round trip
41
42 if (PLOTTER_MODE) {
43 Serial.print("mesafe_cm:");
44 Serial.println(distanceCm, 1);
45 } else {
46 Serial.print(now - startMs); // deney başından beri ms / ms since start
47 Serial.print(",");
48 if (RAW_ECHO_US) {
49 Serial.println(echoUs);
50 } else {
51 Serial.println(distanceCm, 1);
52 }
53 }
54}| Spalte | Kopfzeile | Inhalt oder Formel | Was sie zeigt |
|---|---|---|---|
| A | zaman_ms | Kommt aus der CSV | Zeit seit Versuchsbeginn |
| B | mesafe_cm | Kommt aus der CSV | Abstand des Autos zum Sensor |
| C | zaman_s | =A2/1000 | Waagerechte Achse im Diagramm |
| D | yol_cm | =B$2-B2 | Zurückgelegter Weg ab dem Startpunkt |
| E | hiz_cm_s | =(D7-D2)/(C7-C2), ab E7 | Mittlere Geschwindigkeit über etwa 0,3 s |
| F | kosul | 1, 2 oder 3 Bücher | Zu welchem Durchgang die Zeile gehört |
Der Code schreibt alle 60 ms eine Zeile, also etwa 16 pro Sekunde; damit sich die Echos des HC-SR04 nicht überlagern, wird zwischen den Messungen ein solcher Abstand empfohlen. Kommt kein Echo zurück (Gegenstand außer Reichweite oder schräg), wird die Zeile übersprungen. Berechne die Geschwindigkeit nicht aus zwei aufeinanderfolgenden Zeilen, sondern im Abstand von 5 Zeilen; bei 60 ms Abstand lässt schon ein Messrauschen von 1–2 mm die Geschwindigkeit stark schwanken. Erwartetes Ergebnis: Das Weg-Zeit-Diagramm ist keine Gerade, sondern eine immer steiler werdende Kurve (Parabel); das Geschwindigkeit-Zeit-Diagramm ist dagegen ungefähr eine Gerade, das Auto wird also gleichmäßig beschleunigt, und die Steigung der Geraden ist die Beschleunigung. Auf einer reibungsfreien schiefen Ebene wäre die Beschleunigung g × sin α: Bei einem 1,5-m-Brett, das um 10 cm angehoben wird, ist sin α ≈ 0,067 und die Beschleunigung etwa 65 cm/s². Dass der Messwert kleiner ausfällt, liegt an Reibung und an der Drehung der Räder und gehört als Fehlerquelle ins Protokoll. Variante Schallgeschwindigkeit: Setze RAW_ECHO_US auf true, stelle einen flachen Karton in 20, 40, 60, 80 und 100 cm Abstand vor den Sensor und bilde an jedem Abstand den Mittelwert der Echolaufzeit. Trägst du waagerecht den Hin- und Rückweg (2 × d) und senkrecht die Laufzeit auf, ist die Steigung 1/v; v liegt bei Raumtemperatur um 340 m/s und steigt mit der Temperatur (ungefähr v ≈ 331 + 0,6 × T m/s). Die Steigungsmethode blendet außerdem die konstante interne Verzögerung des Sensors automatisch aus.
Serieller Plotter und Datenübernahme in die Tabelle
- Öffne nach dem Hochladen Werkzeuge > Serieller Monitor und stelle wie im Code 9600 Baud ein. Der Zeitstempel-Schalter muss aus sein; sonst wird vor jede Zeile die Uhrzeit des Computers gesetzt und die CSV wird unbrauchbar.
- Leere vor der Messung die Ausgabe und drücke die RESET-Taste des Boards. So beginnt die Zeit bei 0, und die erste Zeile ist eine Kopfzeile wie zaman_ms,sicaklik_C (Zeit in ms, Temperatur in °C).
- Für eine Live-Kurve setze im Code PLOTTER_MODE auf true, lade ihn neu hoch und öffne Werkzeuge > Serieller Plotter. Der Serielle Plotter speichert nichts, er zeigt nur an; nutze ihn deshalb im Probedurchgang, im Messdurchgang muss PLOTTER_MODE auf false stehen.
- Markiere nach der Messung die Zeilen im Seriellen Monitor mit der Maus von der Kopfzeile bis zur letzten Zeile und kopiere sie mit Strg+C (macOS: Cmd+C). Füge sie in einen einfachen Texteditor ein und speichere sie unter einem Namen mit Gruppe, Versuch und Datum, etwa gruppe2-abkuehlung-0411.csv.
- Importiere die Datei in die Tabellenkalkulation: in Excel über Daten > Aus Text/CSV, in Google Tabellen über Datei > Importieren, in LibreOffice Calc durch direktes Öffnen der Datei. Wähle das Komma als Trennzeichen.
- Achte auf das Dezimaltrennzeichen: Der Arduino schreibt 23.50 mit Punkt, deutsch eingestellte Tabellenprogramme erwarten aber ein Komma. Wähle beim Import das Gebietsschema Englisch (USA) oder ersetze die Punkte durch Kommas; sonst wird 23.50 als Text oder Datum gelesen und das Diagramm bleibt leer.
- Ergänze die Rechenspalten (ms → s, Differenz, Anteil, Geschwindigkeit) und erstelle ein Punktdiagramm (XY). Ein Liniendiagramm behandelt die waagerechte Achse als gleichmäßig verteilte Kategorien; bei übersprungenen Zeilen stimmt die Zeitachse dann nicht mehr.
Ein gutes Versuchsdiagramm erkennt man an vier Dingen: unabhängige Variable auf der waagerechten Achse, abhängige Variable auf der senkrechten Achse, Größe und Einheit an beiden Achsen ("Zeit (s)", "Temperatur (°C)") und ein Titel, der sagt, was gezeigt wird ("Abkühlung von 200 mL Wasser im Becher ohne Deckel"). Zwei Bedingungen (mit und ohne Deckel, 1 und 3 Bücher) in verschiedenen Farben im selben Diagramm machen den Vergleich auf einen Blick möglich. Bitte die Schülerinnen und Schüler, bevor sie das Diagramm ansehen, die Frage "Wie müsste das Diagramm aussehen, wenn unsere Hypothese stimmt?" mit einer groben Skizze auf Papier zu beantworten; Skizze und echtes Diagramm nebeneinander sind der einfachste Weg zum Ergebnissatz. Der Ergebnissatz stützt sich immer auf eine Zahl: "Das Wasser kühlte in den ersten 5 Minuten um … °C ab, in den nächsten 5 Minuten um … °C." Wie man die Skala im Seriellen Plotter fixiert und welche Regeln für Beschriftungen gelten, steht in der Anleitung zum Seriellen Monitor. Wenn du lange Messungen nicht von Hand kopieren willst, kannst du die Daten mit Python direkt in eine Datei schreiben lassen oder für Messungen ohne Computer eine CSV-Aufzeichnung mit SD-Kartenmodul nutzen.
Messfehler und Kalibrierung
| Thema | Was du wissen solltest | Was im Unterricht tun? |
|---|---|---|
| Genauigkeit DS18B20 | ±0,5 °C zwischen −10 und +85 °C; bei 12 Bit dauert eine Messung etwa 750 ms. | Vor der Messung alle Sonden in dasselbe Eiswasser stellen; die Abweichung von 0 °C notieren und in der Tabelle korrigieren. |
| Genauigkeit DHT11 | ±2 °C zwischen 0 und 50 °C; höchstens 1 Messung pro Sekunde, reagiert träge. | Nicht ins Wasser tauchen, nur für Luftversuche nutzen; das Messintervall nicht unter 1 Sekunde senken. |
| LDR | Nicht linear, von Bauteil zu Bauteil verschieden; nach einer Lichtänderung braucht der Wert Zeit, um sich einzupendeln. | Den ganzen Versuch mit demselben LDR messen, an jedem Abstand 5 s warten, das Ergebnis nur innerhalb der eigenen Gruppendaten deuten. |
| HC-SR04 | 2–400 cm, Auflösung etwa 3 mm; die Schallgeschwindigkeit ändert sich um etwa 0,6 m/s pro 1 °C; Kegel von etwa 15°. | Mit dem Maßband bei 20 und 50 cm prüfen; das Ziel flach und senkrecht zum Sensor, keine anderen Gegenstände im Weg. |
| Abtastrate | Zu seltene Messungen verfehlen die Form der Kurve, zu häufige erzeugen Rauschen und unnötig große Dateien. | Nach der Dauer des Vorgangs wählen: Abkühlung 10 s, Licht 0,5 s, Bewegung 60 ms. Mindestens 20–30 Punkte pro Vorgang anstreben. |
| Wiederholungsmessung | Eine einzelne Messung kann Zufall sein; Wiederholungen zeigen, wie verlässlich das Ergebnis ist. | Jede Bedingung mindestens 3-mal messen; Mittelwert und Differenz zwischen größtem und kleinstem Wert (Streuung) ins Protokoll schreiben. |
| Zeit | Bei einer von Hand bedienten Stoppuhr liegt die Reaktionszeit bei etwa 0,2 s. | Die Zeit dem millis()-Zähler des Boards überlassen; Handmessung nur zur Kontrolle nutzen. |
Unterrichtsablauf: 2 × 40 Minuten
Der folgende Ablauf passt zu allen drei Versuchen und lässt sich auch in einer Doppelstunde unterbringen. Für den ersten Durchgang empfehlen wir, allen Gruppen Versuch 1 zu geben: Er ist am einfachsten aufzubauen, und während die Messung von selbst läuft, können die Gruppen ihre Tabellen vorbereiten. Wenn die Klasse eingespielt ist, kannst du die 6 Gruppen auf drei Stationen zu je zwei Gruppen verteilen; wenn zwei Gruppen denselben Versuch machen, lassen sich die Ergebnisse auch miteinander vergleichen. Den Code vor der Stunde auf die Boards zu laden, spart in der ersten Stunde 8–10 Minuten. Für Rollenkarten und Stationsbetrieb in großen Klassen hilft der Beitrag zu großen Klassen, für Material und Tischordnung der Leitfaden zum Schullabor.
| Stunde und Minute | Lehrkraft | Gruppen | Ergebnis |
|---|---|---|---|
| 1. Stunde 0–5 | Eröffnet die Frage mit einer Alltagsbeobachtung: "Warum kühlt Tee in den ersten Minuten so schnell ab?" | Schreiben die Frage ins Heft, nennen erste Vermutungen. | Versuchsfrage |
| 1. Stunde 5–12 | Erklärt das Hypothesenmuster und die Variablenarten, verteilt die Rollen: Versuchsleitung, Zeit und Kontrolle, Datenverantwortung, Protokoll. | Schreiben Hypothese und Variablentabelle. | Hypothese und Variablentabelle |
| 1. Stunde 12–20 | Zeigt die Anschlusstabelle; hat den Code eventuell vorher hochgeladen. | Bauen die Schaltung auf, sehen im Seriellen Monitor die Kopfzeile und die ersten Werte. | Funktionierende Schaltung |
| 1. Stunde 20–35 | Geht durch die Gruppen, prüft die Kontrollvariablen. | Messen: Abkühlung 15 Minuten, Licht 7 Bedingungen × 3 Wiederholungen, Bewegung 3 Neigungen × 3 Durchgänge. | Rohdaten |
| 1. Stunde 35–40 | Erinnert an die Regel für Dateinamen. | Kopieren die Daten, speichern sie als .csv, legen sie im gemeinsamen Ordner ab. | CSV-Datei |
| 2. Stunde 0–10 | Zeigt Dezimaltrennzeichen und Importschritte an der Tafel. | Importieren die CSV in die Tabelle, ergänzen die Rechenspalten. | Saubere Tabelle |
| 2. Stunde 10–22 | Erinnert an Achsenbeschriftung, Einheit und Titel. | Erstellen das XY-Diagramm, vergleichen es mit der Hypothesenskizze. | Diagramm |
| 2. Stunde 22–32 | Fragt nach den Zeilen der Fehlertabelle, die zum Versuch der Gruppe passen. | Schreiben Ergebnissatz und Fehlerquellen. | Ergebnis- und Fehlerabsatz |
| 2. Stunde 32–37 | Leitet den Diagramm-Rundgang. | Erklären ihr Diagramm in 1 Minute der Nachbargruppe, beantworten eine Frage. | Peer-Feedback |
| 2. Stunde 37–40 | Stellt zwei der folgenden Abschlussfragen. | Schreiben kurze Antworten auf einen Zettel. | Exit-Ticket |
- Was war deine unabhängige und deine abhängige Variable, und welche Variable hast du konstant gehalten?
- In welchem Teil des Diagramms ist die Änderung am schnellsten, und woran erkennst du das?
- Wurde deine Hypothese bestätigt? Auf welche zwei Zahlen stützt du dich?
- Wie hätte sich dein Diagramm verändert, wenn du statt alle 10 Sekunden nur alle 60 Sekunden gemessen hättest?
- Was war die größte Fehlerquelle, und was würdest du bei einer Wiederholung ändern?
Bewertung: kurze Vorlage für das Versuchsprotokoll
- Titel und Frage: Name des Versuchs, Gruppenmitglieder, Datum und die Versuchsfrage in einem Satz.
- Hypothese: Im Muster "Wenn …, dann …, weil …", so wie sie vor der Messung aufgeschrieben wurde; sie wird nachträglich nicht korrigiert.
- Variablen: Unabhängige, abhängige und mindestens zwei Kontrollvariablen.
- Material und Durchführung: Sensor, Anschlussübersicht, Messintervall und Anzahl der Wiederholungen; so klar, dass eine andere Gruppe den Versuch wiederholen kann, höchstens 6 Schritte.
- Daten: Übersichtstabelle wie in der Vorlage und zusätzlich der Name der CSV-Datei.
- Diagramm: XY-Diagramm mit Achsenbeschriftung, Einheiten und Titel.
- Ergebnis: Wurde die Hypothese bestätigt? 2–3 Sätze, die sich auf ein oder zwei Zahlen stützen.
- Fehlerquellen und Verbesserung: Mindestens zwei Fehlerquellen und was du bei einer Wiederholung ändern würdest. Für die Bewertung kannst du die Kriterien aus dem Bewertungsraster für den Arduino-Unterricht auf diese Abschnitte übertragen.
Fertige Sensorprojekte, Code verstehen und Werkzeuge in der App
Für alle Sensoren dieser Versuche gibt es in BlueGrays fertige Projekte mit Schaltplan, Teileliste und Code; die Klasse kann sie nutzen, um den Sensor vor dem Versuch kennenzulernen. Kostenlos sind: Lichtstärke messen mit LDR, HC-SR04 Abstandsmessung (serielle Anzeige) und Temperatur und Luftfeuchtigkeit mit DHT11; wenn du mit dem ESP32 arbeitest, sind auch Messung der Lichtintensität mit dem ESP32-LDR-Modul, ESP32 HC-SR04 Ultraschall-Entfernungsmesser und ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display) kostenlos. In den kostenlosen Projekten sind auch die Blöcke und der Bereich Code verstehen freigeschaltet: Die Schülerinnen und Schüler lesen Schritt für Schritt, was der Code macht, und nehmen in der Aufgabe Probier es selbst selbst eine kleine Änderung vor; wie du den Bereich im Unterricht einsetzt, steht im Beitrag zu Code verstehen. Für die Teilerspannung im LDR-Versuch hilft das Werkzeug Spannungsteiler (Premium), zum Prüfen der Widerstände die kostenlosen Werkzeuge Farbcode und Ohmsches Gesetz. Wenn du Premium-Sensorprojekte wie Temperaturmessung mit NTC und 2x16 Lcd Display, das die Temperatur auf einem LCD anzeigt, oder ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED), das die Daten auf eine microSD-Karte schreibt, für die ganze Klasse freischalten willst, gibt es dafür die Lehrer-Pakete mit Einmalzahlung, bei denen die Schülerinnen und Schüler ohne hinterlegte Karte Premium erhalten.
Sicherheit: heißes Wasser, Strom und Wasser in der Nähe
- Heißes Wasser: Kein kochendes Wasser verwenden; etwa 60 °C reichen, die Kurve wird trotzdem deutlich. Die Lehrkraft gibt das Wasser aus, die Becher stehen in der Tischmitte, wo niemand an den Kabeln hängen bleiben kann. Während der Messung wird der Becher weder festgehalten noch getragen.
- Wasser und Strom: Nur die Metallspitze der wasserdichten Sonde kommt ins Wasser. Arduino, Steckbrett und Computer stehen mindestens 30 cm vom Wassergefäß entfernt, am besten auf einem eigenen Tablett. Wird Wasser verschüttet, zuerst das USB-Kabel ziehen, dann wischen.
- Nur USB-Strom: Alle diese Versuche werden über den USB-Anschluss des Computers versorgt; kein Gerät am Stromnetz (Wasserkocher, Lampe, Heizgerät) wird mit der Arduino-Schaltung verbunden.
- Verkabelung: Verbindungen nur bei abgezogenem USB-Kabel stecken und ändern. Wird ein Bauteil warm oder riecht es, sofort das USB-Kabel ziehen.
- Licht: Die Taschenlampe auf niemandes Augen richten; aus der Nähe in helle LED-Lampen zu schauen, ist unangenehm für die Augen.
- Schiefe Ebene: Das Brett darf nicht über den Tisch hinausragen, das Auto wird mit einem Buch gestoppt, bevor es auf den Sensor prallt, und die Bücher unter dem Brett liegen rutschfest.
Ein Sensor, eine saubere CSV-Ausgabe und eine gut gestellte Frage machen aus dem Versuch im naturwissenschaftlichen Unterricht mehr als das Nachvollziehen eines Ergebnisses aus dem Schulbuch, nämlich eine echte Messarbeit: Die Schülerinnen und Schüler zeichnen ihre eigenen Diagramme, diskutieren ihre eigenen Fehlerquellen und vertreten das Ergebnis mit ihren eigenen Zahlen. Wenn du die Sensoren vor dem Versuch kennenlernen und die Schaltungen Schritt für Schritt am Handy aufbauen möchtest, kannst du mit den kostenlosen LDR-, HC-SR04- und DHT11-Projekten in der BlueGrays-App beginnen.
Häufige Fragen
Welche Experimente kann man mit Arduino im Physikunterricht machen?
Jede Größe, die sich mit einem Sensor messen lässt, kann zu einem Versuch werden: Temperatur (Abkühlung, Erwärmung, Wärmedämmung), Licht (Abstand, Farbfilter), Abstand und Bewegung (schiefe Ebene, Pendel), Bodenfeuchte (Pflanzenversuche), Schall und Druck. Für den Einstieg sind Abkühlungskurve, Licht und Abstand sowie die schiefe Ebene die drei Versuche, die sich am leichtesten aufbauen lassen und das deutlichste Ergebnis liefern.
Wie bekomme ich Arduino-Messwerte in Excel?
Am einfachsten schreibt der Code die Daten als kommagetrennte Zeilen im Format "zaman_ms,deger" auf die serielle Schnittstelle. Du kopierst die Zeilen aus dem Seriellen Monitor, speicherst sie als .csv-Datei und importierst sie in Excel über Daten > Aus Text/CSV. Wähle in deutschem Excel beim Import den Punkt als Dezimaltrennzeichen, sonst werden die Zahlen als Text gelesen.
Speichert der Serielle Plotter die Daten?
Nein, der Serielle Plotter zeigt nur eine Live-Kurve an und schreibt nichts in eine Datei. Zum Speichern kopierst du die CSV-Zeilen aus dem Seriellen Monitor, lässt sie von einem Python-Skript in eine Datei schreiben oder nutzt ein SD-Kartenmodul.
DS18B20 oder DHT11: Welcher Sensor eignet sich für Schulversuche?
Wenn du Wasser oder eine andere Flüssigkeit messen willst, nimm den DS18B20 als wasserdichte Sonde; mit ±0,5 °C Genauigkeit und einer Spitze, die ins Wasser darf, eignet er sich gut für Abkühlungsversuche. Der DHT11 misst Lufttemperatur und Luftfeuchte mit ±2 °C, darf nicht ins Wasser und reagiert träge; nutze ihn nur für Luftversuche.
Wie misst man die Schallgeschwindigkeit mit Arduino?
Du lässt die Echolaufzeit des HC-SR04 in Mikrosekunden ausgeben und stellst einen flachen Karton in verschiedenen Abständen vor den Sensor. Dann trägst du den Hin- und Rückweg (2 × Abstand) gegen die Laufzeit auf; aus der Steigung der Geraden ergibt sich die Schallgeschwindigkeit, bei Raumtemperatur etwa 340 m/s.
Wie viele Unterrichtsstunden braucht ein Arduino-Versuch?
Für einen Versuch reichen zwei Unterrichtsstunden oder eine Doppelstunde: In der ersten Stunde Hypothese, Aufbau und Messung, in der zweiten Tabelle, Diagramm, Ergebnis und Protokoll. Wenn der Code vor dem Unterricht auf die Boards geladen wird, bleibt in der ersten Stunde mehr Zeit für die Messung.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
Lichtstärke messen mit LDR
Willst du sehen, wie hell dein Zimmer ist, und zwar als Zahl? Der LDR, ein kleines lichtempfindliches Bauteil, misst das Umgebungslicht, und der Arduino schreibt den Wert jede halbe Sekunde auf deinen

HC-SR04 Abstandsmessung (serielle Anzeige)
Der Sensor HC-SR04 funktioniert wie eine Fledermaus, die im Dunkeln ihren Weg findet: Er sendet einen Ton, den du nicht hörst, lauscht auf das Echo und misst, wie weit der Gegenstand vor ihm entfernt

Temperatur und Luftfeuchtigkeit mit DHT11
Wie warm ist dein Zimmer, und ist die Luft feucht oder trocken? Der DHT11-Sensor misst Temperatur und Luftfeuchtigkeit, und der Arduino schreibt die Werte auf ein zweizeiliges LCD und aktualisiert sie

Messung der Lichtintensität mit dem ESP32-LDR-Modul
Echtzeit-Anzeige des ADC-Rohwerts des LDR-Moduls und des anhand von Dunkel- und Hellreferenzwerten berechneten relativen Lichtwerts in Prozent im Serial Monitor. Dieser Prozentwert ist keine Lux-Messung. Vermittelt die Kalibrierungslogik des Moduls. Sollte idealerweise vor Projekt 10 durchgeführt werden, da es zur Festlegung des Schwellenwerts dient.

ESP32 HC-SR04 Ultraschall-Entfernungsmesser
Der Ultraschallsensor HC-SR04 berechnet die Entfernung, indem er die Zeit misst, die die von ihm ausgesendete Schallwelle benötigt, um auf ein Objekt zu treffen und zurückzukehren (Time of Flight). In diesem Projekt senden wir mit dem ESP32 einen 10-Mikrosekunden-Impuls an den TRIG-Pin und lesen die vom ECHO-Pin kommende Echozeit mit pulseIn(). Die berechnete Entfernung geben wir in cm auf einem 16x2-I2C-LCD aus. Da der HC-SR04 mit 5 V betrieben wird, ist ein Spannungsteiler am ECHO-Pin zw

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)
Bei diesem Projekt werden die Umgebungstemperatur und die Luftfeuchtigkeit mit einem DHT22-Sensor gemessen und in Echtzeit auf einem 16x2 I2C-LCD angezeigt. Mithilfe der Adafruit-DHT-Bibliothek werden die Daten über das One-Wire-Protokoll vom Sensor ausgelesen. Dieses Projekt bildet die Grundlage für IoT-Wetterstationen, Smart-Home-Automatisierung oder Umgebungsüberwachungssysteme in Gewächshäusern. Die Kommunikation mit dem DHT22 erfolgt über den GPIO-4-Pin des ESP32.

Temperaturmessung mit NTC und 2x16 Lcd Display
Miss die Umgebungstemperatur mit einem Sensor, der aussieht wie eine kleine Perle. Dieses Bauteil namens NTC lässt Strom umso leichter durch, je wärmer es wird; der Arduino liest diese Änderung, rechn

ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED)
Baue einen zeitgestempelten Temperaturlogger mit ESP32! Lese Temperatur/Feuchtigkeit vom DHT22 jede Minute, hole die aktuelle Zeit vom DS1307 RTC und protokolliere auf microSD-Karte als CSV. Das OLED zeigt live Temperatur (große Schrift), Luftfeuchtigkeit, Zeitstempel und Logzähler. Die /temp_log.csv-Datei auf der SD-Karte öffnet sich in Excel, Google Sheets oder Python pandas zur Analyse — perfekt für Gewächshausüberwachung, Raumtemperaturverfolgung, Laboraufzeichnung, Lebensmittellageru
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 200 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

