Difference between revisions of "Amontons‘sches Gesetz"

From phyphox
Jump to navigation Jump to search
Line 33: Line 33:
 
Die Nullstelle liegt demnach bei - 834,4: 2,972 °C = - 281 °C. Dies liegt für so einen primitiven Versuchsaufbau erstaunlich nahe beim echten Wert von - 273 °C.
 
Die Nullstelle liegt demnach bei - 834,4: 2,972 °C = - 281 °C. Dies liegt für so einen primitiven Versuchsaufbau erstaunlich nahe beim echten Wert von - 273 °C.
 
[[File:Amontons_Glas_Messwerte.jpg]]
 
[[File:Amontons_Glas_Messwerte.jpg]]
 
 
 
==Aufbau==
 
==Aufbau==
Bei B = 0 beträgt die vom Halsensor (49e) ausgegebene Spannung die Hälfte der dort angelegten Spannung. Somit ist die Differenz zwischen Ausgegebener Spannung und halber angelegter Spannung Proportional zum Magnetfeld:
+
Der Drucksensor MPRLS ist über den I2C-Bus mit dem ESP32 verbunden. Die Verdrahtung ist wie üblich bei I2C-Sensoren trivial: 3V3 – Vin, Gnd – Gnd, SCL – 22, SDA –21
 
+
Der Temperatursensor liefert seine Daten über den OneWire-Bus: 3V3 – Vin, Gnd – Gnd, 4 - Datenbus.
V_out-V_DD∼B.
 
 
 
Die Steigung der Geraden beträgt ca. (3 V)/(200 mT). Die ADCs des ESP32 haben eine Auflösung von 12 Bit. Bei einer anliegenden Spannung U wird somit der Zahlenwert Messwert=  U/(3,3 V)⋅4096 herausgegeben.
 
In unserer Schaltung liegt die Ausgangsspannung am Pin 27 des ESP32 an. Dieser gibt den eben erläuterten zur Spannung proportionalen Messwert als Zahl heraus. Die magnetische Feldstärke berechnet sich dann zu
 
 
 
B=(Messwert-4096/2)⋅(200 mT)/4096=(Messwert-2048)⋅0,049 mT.
 
 
 
Da die vorliegende Werte meist etwas driften, wird zu Beginn des Programms wird eine Offsetkorrektur vorgenommen. Das bei Einschalten des Sensors anliegende B-Feld wird als null angenommen. Die Steigung (Faktor 0,049 in Gleichung oben) muss in der Regel individuell an den Sensor angepasst werden. Eine passende Formel findet sich auf dem unten verlinkten Arbeitsblatt. Diese Kalibrierung kann dann mit einer Spule bekannter Geometrie und Windungszahl durchgeführt werden. Beim Programm unten beträgt der Faktor deshalb 0,0492.
 
Zu guter Letzt wird noch eine Mittelwertbildung über 37 Werte vorgenommen. Auch dies lässt sich natürlich individuell anpassen.
 
 
 
V_out geht an Pin 27, + an 3,3 V und an Gnd. Der Hallsensor wurde hier noch nach oben gebogen, da so z. B. das Magnetfeld einer Spule vermessen werden kann. Um das Rauschen zu verringern, empfiehlt es sich, die Vout-Leitung mit einem 10-kOhm-Widerstand auf Masse zu ziehen.
 
  
Das grüne Kabel unten im Bild ist ein Relikt eines anderen Versuchs und hat hier keine Bewandtnis.
+
Die Stromversorgung liefert ein 3,7 LiPo-Akku mit 1,2 Wh. Hier ist darauf zu achten, dass der Akku möglichst klein geweählt wird (störende Wärmekapazität), aber über ausreichend Kapazität verfügt.
Die Platine kann man mit dickem (Kurzschlussgefahr!) doppelseitigen Klebeband aufs ESP-Board kleben. Als Packaging hat sich transparenter Schumpfschlauch bewährt.
 
  
 
==Programmierung==
 
==Programmierung==
 
Der ESP32 wird über die Arduino IDE programmiert. Es müssen die Definitionen für den ESP32 und die phyphox-Bibliothek installiert sein. Siehe dazu das Video unter [[:Category: Arduino library experiments]].
 
Der ESP32 wird über die Arduino IDE programmiert. Es müssen die Definitionen für den ESP32 und die phyphox-Bibliothek installiert sein. Siehe dazu das Video unter [[:Category: Arduino library experiments]].
  
Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in ''PhyphoxBLE::start("Magnetfeldsensor_01")'' festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.
+
Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in ''PhyphoxBLE::start("Baro_Therm_01")'' festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.
  
 
<pre>
 
<pre>

Revision as of 10:52, 31 August 2023

Amontons'sches Gesetz
Experiment Amontons'sches Gesetz
Category Arduino library experiments
Used sensors MPRLS, DS18B20


Amontons‘sches Gesetz: Druck und Temperatur messen


Die Notwendigkeit der Einführung der Kelvinskala erschließt sich, wenn man den Druck eines idealen Gases in Abhängigkeit der Temperatur bei konstantem Volumen misst. Bei einer ordentlichen Messung sollte p(Theta) einen linearen Zusammenhang zeigen, wobei der Wert p = 0 extrapoliert bei Theta ≈ -273 °C erreicht werden sollte.

Experimentell lässt sich dies im Physikunterricht nur sehr schwer zeigen, weshalb meist auf Filme oder Simulationen zurückgegriffen wird. Um so interessanter ist es, die bereits verwendeten Temperatur- und Drucksensoren für diesen Zweck auszuprobieren. Hierfür werden beide Sensoren gemeinsam, wie bereits einzeln beschrieben, mit einem ESP32 verbunden.

Amontons Glas 1.jpg

Hier wurde das Glas mit den Sensoren zuerst offen bei Theta = 60 °C im Backofen temperiert. Hier ist es natürlich ganz wichtig einen Akku zu verwenden, der für diese Temperatur spezifiziert ist.

Anschließend wurde das Glas geschlossen, aus dem Backofen genommen und die Messung gestartet. Aufgenommen werden jetzt drei Diagramme: p (t), Theta (t) und p (Theta).

Amontons Glas mess.jpg

Schon nach kurzer Zeit zeigt sich der zu erwartende lineare Zusammenhang zwischen dem Druck im Glas und der Temperatur (3. Graph). Den absoluten Temperaturnullpunkt erhält man hier mithilfe einer Ausgleichsgeraden. Hier lautet das Ergebnis der Regression:

p(Theta) = 2,972 hPa/°C Theta +834,4 hPa.

Die Nullstelle liegt demnach bei - 834,4: 2,972 °C = - 281 °C. Dies liegt für so einen primitiven Versuchsaufbau erstaunlich nahe beim echten Wert von - 273 °C. Amontons Glas Messwerte.jpg

Aufbau

Der Drucksensor MPRLS ist über den I2C-Bus mit dem ESP32 verbunden. Die Verdrahtung ist wie üblich bei I2C-Sensoren trivial: 3V3 – Vin, Gnd – Gnd, SCL – 22, SDA –21 Der Temperatursensor liefert seine Daten über den OneWire-Bus: 3V3 – Vin, Gnd – Gnd, 4 - Datenbus.

Die Stromversorgung liefert ein 3,7 LiPo-Akku mit 1,2 Wh. Hier ist darauf zu achten, dass der Akku möglichst klein geweählt wird (störende Wärmekapazität), aber über ausreichend Kapazität verfügt.

Programmierung

Der ESP32 wird über die Arduino IDE programmiert. Es müssen die Definitionen für den ESP32 und die phyphox-Bibliothek installiert sein. Siehe dazu das Video unter Category: Arduino library experiments.

Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in PhyphoxBLE::start("Baro_Therm_01") festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.


#include <Wire.h>
#include "Adafruit_MPRLS.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <phyphoxBle.h>
float p;
#define RESET_PIN -1
#define EOC_PIN -1
Adafruit_MPRLS mpr = Adafruit_MPRLS(RESET_PIN, EOC_PIN);
void setup() {
PhyphoxBLE::start("Baro_Therm_01");
//Experiment
PhyphoxBleExperiment experiment;
experiment.setTitle("Baro_Therm_01");
experiment.setCategory("Arduino Experiments");
experiment.setDescription("Plot the pressure over time.");
//View
PhyphoxBleExperiment::View view;
//Value
PhyphoxBleExperiment::Value Value1;
Value1.setLabel("p = ");
Value1.setUnit("hPa");
Value1.setChannel(1);
PhyphoxBleExperiment::Value Value2;
Value2.setLabel("Theta = ");
Value2.setUnit("°C");
Value2.setChannel(2);
//Graph
PhyphoxBleExperiment::Graph graph1;
graph1.setLabel("Druck");
graph1.setUnitX("s");
graph1.setUnitY("hPa");
graph1.setLabelX("time");
graph1.setLabelY("p");
graph1.setChannel(0,1);
PhyphoxBleExperiment::Graph graph2;
graph2.setLabel("Temperatur");
graph2.setUnitX("s");
graph2.setUnitY("°C");
graph2.setLabelX("time");
graph2.setLabelY("Theta");
graph2.setChannel(0,2);
PhyphoxBleExperiment::Graph graph3;
graph3.setLabel("p over Theta");
graph3.setUnitX("°C");
graph3.setUnitY("hPa");
graph3.setLabelX("Theta");
graph3.setLabelY("p");
graph3.setStyle("dots");
graph3.setChannel(2,1);
view.addElement(graph1);
view.addElement(Value1);
view.addElement(graph2);
view.addElement(Value2);
view.addElement(graph3);
experiment.addView(view);
PhyphoxBLE::addExperiment(experiment);
Serial.begin(38400);
sensors.begin();
mpr.begin();
}
void loop() {
p=0;
for(int i=0;i<37;i++){
p+=mpr.readPressure();
delay(10);
}
p=p/37;
sensors.requestTemperatures();
float T = sensors.getTempCByIndex(0);
PhyphoxBLE::write(p,T);
Serial.print(p);
Serial.print(" ");
Serial.println(T);
delay(10);
}


Arbeitsmaterialien

Ein mögliches Schülerarbeitsblatt (aktuelle Sicherheitsrichtlinien nach RISU beachten!): File:AB Magnetfeldsensor Spule.pdf