Difference between revisions of "Externer Magnetfeldsensor"
Line 7: | Line 7: | ||
In diesem Experiment sollen die Schülerinnen und Schüler die Entladungskurve eines Kondensators messen. Dafür wird der analoge Eingang eines ESP32 (ein günstiger Mikrocontroller) verwendet. Der ESP wird mithilfe der Arduino-Bibliothek so programmiert, dass er die Daten an phyphox übertragen kann. | In diesem Experiment sollen die Schülerinnen und Schüler die Entladungskurve eines Kondensators messen. Dafür wird der analoge Eingang eines ESP32 (ein günstiger Mikrocontroller) verwendet. Der ESP wird mithilfe der Arduino-Bibliothek so programmiert, dass er die Daten an phyphox übertragen kann. | ||
+ | [[File:SpulenBFeld.jpg|Sensor]] | ||
[[File:B_Sensor.jpg|Sensor]] | [[File:B_Sensor.jpg|Sensor]] | ||
Revision as of 14:04, 18 August 2023
Experiment | Entladung eines Kondensators |
---|---|
Category | Arduino library experiments |
Used sensors | Voltage |
In diesem Experiment sollen die Schülerinnen und Schüler die Entladungskurve eines Kondensators messen. Dafür wird der analoge Eingang eines ESP32 (ein günstiger Mikrocontroller) verwendet. Der ESP wird mithilfe der Arduino-Bibliothek so programmiert, dass er die Daten an phyphox übertragen kann.
Aufbau
Zuerst muss der ESP32 programmiert und verbunden werden. Die Spannung wird zwischen PINXY und GND gemessen.
Aufbauanleitung
Anschließend kann direkt losgelegt werden. Die entsprechenden Schaltbilder sind in den Arbeitsblättern zu finden.
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 ::start(ESP Voltmeter XY) festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.
#include <phyphoxBle.h> int ADC_GPIO = 25; // ESP32 //int ADC_GPIO = A0; // Arduino Nano 33 BLE void setup() { // put your setup code here, to run once: Serial.begin(115200); PhyphoxBLE::start("ESP32 Voltmeter"); PhyphoxBleExperiment Voltmeter; Voltmeter.setTitle("Voltmeter"); Voltmeter.setCategory("ESP32 Experiments"); Voltmeter.setDescription("This experiment will plot the measured voltage over time."); //View PhyphoxBleExperiment::View firstView; firstView.setLabel("Data"); //Create a "view" //Graph PhyphoxBleExperiment::Graph firstGraph; //Create graph which will plot random numbers over time firstGraph.setLabel("Voltmeter"); firstGraph.setUnitX("s"); firstGraph.setUnitY("V"); firstGraph.setLabelX("time"); firstGraph.setLabelY("Voltage"); /* Assign Channels, so which data is plotted on x or y axis first parameter represents x-axis, second y-axis Channel 0 means a timestamp is created after the BLE package arrives in phyphox Channel 1 to N corresponding to the N-parameter which is written in server.write() */ firstGraph.setChannel(0, 1); firstView.addElement(firstGraph); //attach graph to view Voltmeter.addView(firstView); //Attach view to experiment PhyphoxBLE::addExperiment(Voltmeter); //Attach experiment to server } void loop() { // put your main code here, to run repeatedly: // measures the voltage as fast as possible, then calculates the mean over 100 values int meas = 0; for (int i = 0; i < 100; i++) { meas = meas + analogRead(ADC_GPIO); } meas = meas / 100; float meanvoltage = 3.3 * meas / 4095; //float voltage = 3.3 * analogRead(ADC_GPIO)/4095; //delay(1); PhyphoxBLE::write(meanvoltage); //Serial.print("Voltage = "); Serial.println(meanvoltage); delay(5); // approx 100Hz } /* Over serial with delay(10): approx 100Hz Without delay: much higher */
Auswertung
Die Unterrichtseinheit gliedert sich in drei Teile: Zuerst wird eine einfache Entladekurve aufgenommen und die Spannung am Kondensator gemessen, dann wird der Strom gemessen und zuletzt der Spannungsverlauf bei verschiedenen Widerständen gemessen.
Probleme und Lösungen
- test
- test