
Quelle: https://de.wikipedia.org/wiki/Andr%C3%A9-Marie_Amp%C3%A8re#/media/Datei:Ampere_Andre_1825.jpg, public domain
Das Ampèresche Gesetz (Durchflutungssatz, Durchflutungsgesetz) ist ein Gesetz der Elektrodynamik und eine der maxwellschen Gleichungen. Es wurde von André-Marie Ampère entdeckt und bildet für den Magnetismus die Analogie zum Faradayschen Induktionsgesetz. Es lautet:
In Worten: Das Linienintegral von H·ds entlang eines geschlossenen Weges ist gleich den eingeschlossenen Strömen.

Betrachten wir einen geraden Leiter, durch den die Stromstärke I fließt. Bewegen wir uns auf einem speziellen Weg um den Leiter, konkret einer Kreisbahn mit dem Radius r, so vereinfacht sich das Amperesche Gesetz durch die nun konstante magnetische Feldstärke H wiefolgt:


Die magnetische Feldstärke H(r) bzw. die magnetische Flussdichte B(r) hängt bei einem geraden Leiter nur von der Stromstärke I und dem Abstand r zum Leiter ab. Trägt man also B in Abhängigkeit von 1/r auf, so müsste man eine steigende Gerade erhalten:

Das Magnetfeld B müsste ebenfalls eine lineare Abhängigkeit von der Stromstärke I zeigen:

Genau dies werde ich im nachfolgenden Experiment versuchen zu bestätigen. Man kann die Flussdichte um einen unendlich langen, geraden Leiter auch sehr schön mit dem Biot-Savart-Gesetz (siehe https://stoppi-homemade-physics.de/biot-savart-gesetz/) herleiten. Mit diesem Gesetz lassen sich Magnetfelder von beliebig geformten Strömen theoretisch berechnen. Es lautet:

Für einen unendlich langen, geraden Leiter erhält man mittels Biot-Savart-Gesetz folgendes Ergebnis:

Es deckt sich mit dem Ergebnis des Ampereschen Gesetz. Nun aber zum Experiment. Mit einem meiner Teslameter (https://stoppi-homemade-physics.de/magnetometer/) werde ich die Flussdichte B im Abstand r zum geraden Leiter bestimmen.

Der Hallsensor MLX90290 kann Flussdichten im Bereich +/-25 mT erfassen. Das müsste eigentlich recht gut passen…






Damit ich einigermaßen große Flussdichten erziele, wähle ich die Stromstärke I entsprechend groß (z.B. 5-10A). Dazu verwende ich mein Laptopnetzteil, welches bis zu 19V und Stromstärken bis ca. 6.5A liefern kann.














So, ich habe mir einmal die zu erwartenden Flussdichten angeschaut:

Daher werde ich mit dem Hallsensor MLX90290 nicht weit kommen, denn dieser misst bis zu 25 mT. Ich werde daher auf den HMC5883L umschwenken. Dieser ist eigentlich mit seinem Maximalmesswert von 800µT für das Erdmagnetfeld konzipiert. Das passt aber deutlich besser zum Experiment. Achtung: Alte HMC5883L Boards werden noch mit 3.3V betrieben!





Hier der gesamte Messaufbau:





Bei den Messungen habe ich mich im konkreten Fall aufgrund der Positionierung des Sensors nur auf die y-Komponente konzentriert:




Und zum Abschluss die Messergebnisse. Einmal blieb die Stromstärke mit 3.4 A konstant und der Abstand r variierte und bei der zweiten Messserie blieb der Abstand mit r = 2 cm unverändert und der Strom durch den Draht war variabel. Trage ich B – B0 (B0 … konstante Komponente/offset durch das Erdmagnetfeld) gegen 1/r bzw. I auf, erhalte ich in beiden Fällen schöne Geraden durch den Ursprung. Deren Steigungen entsprechen gut den Sollwerten laut Theorie…




Hier noch das Youtube-Video:
Richtiges Linienintegral
Im obigen Versuch habe ich konkret die Flussdichte B in Abhängigkeit vom Abstand r zum stromführenden Draht gemessen. Laut Ampere’schen Gesetz gilt B(r) = µ0 · H(r) = µ0 · I / (2 · π · r).

In einem zweiten, komplexeren Experiment möchte ich tatsächlich das Linienintegral H · ds um einen stromdurchflossenen Draht bestimmen, welches ja der umfahrenen Stromstärke I entsprechen sollte. Anstelle des Integrals bestimme ich die stückweise Aufsummierung der Produkte Hs · ds. Hs ist dabei die Komponente des Magnetfelds H in Richtung des Wegs. Um die Wegstücke ds bestimmen zu können, verwende ich ein Holzrad, welches an einem Encoder angeschlossen ist. Angenommen der Encoder liefert 20 Impulse pro Umdrehung und das Holzrad besitze den Radius r, dann wurde mit jedem Encoder-Puls die Strecke ds = 2 · π · r / 20 zurückgelegt. Das Magnetfeld in Wegrichtung ermittle ich ganz einfach so, indem das Magnetometer (ein HMC5883) so ausgerichtet ist, dass z.B. dessen x-Achse genau in Weg-/Bewegungsrichtung zeigt. Dann brauche ich lediglich nur die momentane Hx-Komponente einlesen und die Produkte Hx · ds aufsummieren. Dies erfolgt dann im interrupt des Arduino-Programms.
Beim Einlesen der Encoder-Pulse stellte ich allerdings fest, dass dieser extrem prellt und Doppel- oder Mehrfachpulse ausgibt. Um dies zu vermeiden, frage ich im interrupt ab, wieviel Zeit seit dem letzten interrupt vergangen ist. Nur wenn diese Zeit größer als z.B. 15 ms ist, werte ich den Encoderpuls, ansonsten verwerfe ich ihn. Damit eliminiere ich die unerwünschten Mehrfachpulse.
Trotz dieser Maßnahme habe ich festgestellt, dass der zurückgelegte Weg nicht genau mit der tatsächlichen Wegstrecke übereinstimmt. Zur Überprüfung habe ich mir nicht das Integral H · ds am OLED-Display anzeigen lassen, sondern nur das Integral ds, also die insgesamt zurückgelegte Strecke s. Ich fuhr dazu mehrfach eine A4-Seite mit 30 cm Länge und unterschiedlichen Geschwindigkeiten ab. Die Werte lagen trotz Zeitabfrage im interrupt bei ca. 45 cm, daher verwende ich noch einen Korrekturfaktor (z.B. konkret 30/45).
Danach stimmten die gemessenen Wegstrecken bei langsamer Fahrt aber sehr gut mit den tatsächlichen Strecken überein…
Arduino-Code:
/*
This code initializes an OLED display (SSD1306) using the Adafruit SSD1306 library,
and displays various text, numbers, and scroll animations on the screen.
Board: Arduino Uno R3 (or R4)
Component: OLED (SSD1306)
Library: https://github.com/adafruit/Adafruit_SSD1306 (Adafruit SSD1306 by Adafruit)
https://github.com/adafruit/Adafruit-GFX-Library (Adafruit GFX Library by Adafruit)
*/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for SSD1306 display connected using I2C
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
/* Assign a unique ID to this sensor at the same time */
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
float b_ges = 0.0; // Gesamtes Magnetfeld B in µT
volatile float h_x = 0.0; // H-Komponente in x-Richtung in A/m
volatile float i_strom = 0.0; // Berechneter Strom I (Integral H * ds)
float u0 = 0.0000012566; // magnetische Feldkonstante
float ds; // Weginkrement des Laufrads pro Encoder-Schritt
const byte buttonPin = 12;
const byte interruptPin = 2;
long t, t_last;
float correction_factor;
// ================
// === SETUP ===
// ================
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("HMC5883 Magnetometer Test"); Serial.println("");
/* Initialise the sensor */
if(!mag.begin())
{
/* There was a problem detecting the HMC5883 ... check your connections */
Serial.println("Ooops, no HMC5883 detected ... Check your wiring!");
while(1);
}
mag.setMagGain(HMC5883_MAGGAIN_4_7); // set the range to 4.7 Gauss = 470 µT
// initialize the OLED object
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
{
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
// Clear the buffer.
display.clearDisplay();
pinMode(buttonPin, INPUT_PULLUP);
pinMode(interruptPin, INPUT);
attachInterrupt(digitalPinToInterrupt(interruptPin), Puls, FALLING);
i_strom = 0.0;
ds = 0.00589;
correction_factor = 0.625;
t_last = 0;
}
// ================
// === LOOP ===
// ================
void loop()
{
if (digitalRead(buttonPin) == LOW)
{
i_strom = 0.0; // reset the measured current
// Serial.println("Button...");
}
/* Get a new sensor event */
sensors_event_t event;
mag.getEvent(&event);
/*
Serial.println(event.magnetic.x);
delay(100);
*/
//h_x = event.magnetic.x / (1000000.0 * u0); // the magnetic field strengt H in x-direction in A/m
h_y = event.magnetic.y / (1000000.0 * u0); // the magnetic field strengt H in y-direction in A/m
b_ges = sqrt(event.magnetic.x * event.magnetic.x + event.magnetic.y * event.magnetic.y + event.magnetic.z * event.magnetic.z); // the total magnetic flux density B in µT
// TESTWERTE nur zur Demonstration
//h_ges = 12.45;
//h_x = 8.12;
//i_strom = 1.54;
// DISPLAY AKTUALISIEREN
display.clearDisplay(); // Puffer löschen, um Geisterbilder zu vermeiden
display.setTextSize(1); // Textgröße auf Standard (klein)
display.setTextColor(WHITE); // Textfarbe weiß
// --- Zeile 1: Strom I (Integral von H * ds) ---
display.setCursor(0, 0); // Ganz oben links starten
display.print("I = ");
display.print(i_strom, 2); // displaying the integral of H * ds in Ampere
//display.print(i_strom * 100, 2); // displaying the path in cm
display.println(" A");
// --- Zeile 2: Gesamtes Magnetfeld B_ges in µT ---
display.setCursor(0, 22); // Etwas weiter unten (Y = 22)
display.print("B_ges = ");
display.print(b_ges, 0);
display.println(" uT ");
// --- Zeile 2: H-Komponente in y-Richtung in A/m ---
display.setCursor(0, 44); // Im unteren Drittel (Y = 44)
display.print("H_y = ");
display.print(h_y, 1);
display.println(" A/m ");
display.display(); // Inhalt auf das Display übertragen
delay(300);
}
// ==============================
// ======= INTERRUPT =========
// ==============================
void Puls()
{
t = millis();
if (t - t_last > 20) // Only pulses that arrive at least 20 ms after the previous pulse are counted in order to avoid encoder bounce
{
// Serial.println("Puls...");
// i_strom = i_strom + ds * correction_factor; // measuring the integral ds = path s in meter
i_strom = i_strom + h_y * ds * correction_factor; // measuring the integral of H * ds
}
t_last = t;
}
Hier gibt es ein ähnliches Experiment von PASCO: https://www.pasco.com/products/complete-experiments/electromagnetism/amperes-law. Mit 1000 Dollar nicht gerade günstig, aber es geht bestimmt deutlich günstiger wie man gleich sehen wird…
Man benötigt nur folgende Bauteile:
- Arduino Nano
- Lochrasterplatine 160 x 100 mm
- Taster
- 9V Batterie
- Encoder z.B. KY-040
- Holzrad
- Magnetsensor HMC5883L
- 10 m dicken Draht, z.B. 2.5 mm²
- Leistungsfähiges Netzgerät z.B. 100 W



Als Holzrad verwende ich eines von der österreichischen Firma MATADOR. Mit deren Holzspielzeug habe ich bereits vor 50 Jahren gespielt 😉



Zur Fixierung des Holzrads am Encoder verwendete ich zunächst einen Flansch mit 6 mm Bohrung:

Damit das Holzrad mehr Grip am Untergrund hat, zog ich einen dicken Gummidichtring auf:


Vom Encoder benötigt man nur das CLK-Signal:


Den Magnetsensor klebte ich auf eine kleine Aluleiste:



Leider stellte sich heraus, dass das Magnetometer grob falsche/viel zu hohe Werte lieferte. Nur im Erdmagnetfeld konnte ich Flussdichten um die 170 µT messen. Das Erdmagnetfeld hat bei mir in Graz eine Stärke von nur 60 µT. Schuld daran waren die vielen ferromagnetischen Metallteile (Flansch, Winkel, Schrauben…) in unmittelbarer Nähe zum Sensor.


Näherte ich den Sensor den Flansch, sprangen die Werte auf über 400 µT! Somit konnte ich diesen Aufbau leider komplett vergessen 🙁

Ich musste also die vielen Metallteile durch z.B. Holz ersetzen. Hier boten sich abermals MATADOR-Teile an. Zum Glück hatte ich die benötigten Teile noch in meinem Fundus aufgrund früherer Physikprojekte:


Den Holzquader verwende ich, um mit dem Rad und dem Sensor weiter weg vom Metallencoder zu kommen. Zuerst versuchte ich selbst einen Holzquader aus einer Holzleiste zu fertigen aber ich scheiterte kläglich daran, freihändig schön zentrierte und gerade Löcher zu bohren. Zum Glück besitzen die MATADOR-Teile bereits exakte Bohrungen…

Mit dem noch sehr langen Holzquader drehte sich aber leider das Holzrad nur unzureichend mit, wenn ich es auf einen Boden aufsetzte und den ganzen Apparat bewegte.

Daher musste ich den Quader ordentlich kürzen, dann drehte sich das Holzrad zufriedenstellend mit. Zusätzlich raute ich den Gummi mit Schmirgelpapier an…

An den Magnetsenor klebte ich einen MATADOR-Stab:

Damit war ich bei der Ausrichtung und Positionierung des Sensors sehr flexibel und ich könnte ihn zum Beispiel auch um 90° oder 180° drehen, falls die Flussdichten nicht passen sollten:

Jetzt stimmten die gemessenen Flussdichten deutlich besser und ich erhielt im reinen Erdmagnetfeld einen Wert von ca. 50 µT:

Das fertige Gerät:




Für das Experiment benötigt man natürlich noch einen stromdurchflossenen Draht. Das 2.5 mm² messende Kabel habe ich im Baumarkt besorgt:


Mit dem Integral H · ds misst man die eingeschlossene Stromstärke I. Um hohe Werte für I aber auch für das gemessene Magnetfeld zu erhalten und somit eine größeren Abstand zum störenden Erdmagnetfeld zu erzielen verwende ich nicht bloß einen Draht, sondern mehrere. Dazu formte ich mit dem Draht eine Spule bestehend aus 9 Windungen:

Das Linienintegral H · ds ergibt demnach n · I = 9 · I.
Der dicke Draht besitzt natürlich trotz seiner Länge von ca. 9 m einen sehr geringen Widerstand. Diesen habe ich theoretisch und experimentell ermittelt:

Experimentell kann man solche niedrigen Widerstände mit einer Konstantstromquelle in Kombination mit einem Multimeter bestimmen. Man schickt einen bekannten Strom (z.B. I = 1 A) durch den Draht und misst parallel zum Draht den Spannungsabfall U (sog. Vierleitermethode). Nach dem ohmschen Gesetz gilt dann: U = I · R = 1 · R = R. Der gemessene Spannungsabfall entspricht also dann genau dem Widerstand. Da das Multimeter ohne Probleme mV messen kann, ist man in der Lage Widerstände im mΩ-Bereich zu bestimmen.
Die 1A-Konstantstromquelle habe ich mit einem LM317 realisiert:




Ich messe einen Spannungsabfall von 59 mV, was also bei I = 1 A genau einem Widerstand R = 59 mΩ entspricht. Dieser Wert weicht nur wenig von der Theorie (64 mΩ) ab, Heureka…

Moderne Schaltnetzgeräte haben oft den Nachteil, nicht genau bei 0V zu starten, sondern zum Beispiel erst bei 1.25 V. Bei einem Drahtwiderstand von nur 0.06 Ohm würde dies bedeuten, dass ich bereits bei niedrigster Spannung eine Stromstärke von I = 1.25 / 0.06 = ca. 21 A hätte. Dies ist selbst für den 2.5 mm² Draht wohl zu viel. Daher werde ich die Spule mit einem Leistungs-Vorwiderstand (z.B. 0.5 Ω / 100 W) an mein starkes Labornetzteil (30V/30A) anschließen.
Bei 10 A und 9 Drähten liegen die zu erwartenden Flussdichten im Abstand von 10 cm zum Draht im Bereich von 200 µT. Das Erdmagnetfeld besitzt bei mir in Graz eine Stärke von ca. 60 µT. Eigentlich sollte aber das Erdmagnetfeld bei einer geschlossenen Wegrunde um den Draht keinerlei Wirkung haben. Denn bei einem homogenen Magnetfeld verschwindet das Linienintegral, es müsste also ∫ H · ds = 0 gelten! Mal schauen, ob dies in der Praxis auch so ist.
Zuerst habe ich einmal getestet, ob mein Magnetsensor auch gut auf die stromdurchflossene Spule anspricht. Bei I = 0 A erhielt ich zunächst folgende Werte am Display:


Danach stellte ich bei meinem starken Labornetzteil eine Stromstärke von I = 8.2 A ein:


Ich richtete den Sensor so aus, dass das Magnetfeld der Spule am Ort des Sensors eigentlich nur eine y-Komponente besitzen sollte:

Und in der Tat zeigte der By-Wert einen deutlichen Anstieg. Das dafür notwendige Programm mit der Ausgabe von Bx, By und Bz weicht natürlich vom oben veröffentlichten Programm zum Amperegesetz geringfügig ab. Im obigen sketch wird stattdessen die Stromstärke I, die Gesamtflussdichte Bges und das Magnetfeld Hx in Bewegungsrichtung angezeigt!

Jetzt fehlte eigentlich nur noch eine Holzplatte um einen Schenkel der Spule. Ich entschied mich dafür, in die Holzplatte einen dünnen Schlitz zu sägen und in der Mitte eine Aussparung zu bohren:



So, gestern konnte ich erste Messungen zum Amperegesetz durchführen. Die Holzplatte habe ich noch mit Moosgummi bezogen, damit das Holzrad noch mehr Grip hat und sich ja schön mitdreht.

Mein 30V/30A Leistungsnetzteil zur Versorgung der Hochstromspule:

Als Vorwiderstände verwendete ich 3 Stück 1 Ohm/100W Leistungswiderstände, welche ich parallel geschaltet habe. Damit beträgt deren Gesamtwiderstand 0.33 Ω und ich musste das Netzteil etwa für I = 10 A auf rund 3.3 V hochregeln. Und keine Angst, die verwendeten Krokokabel sind extra leistungsfähige mit dickem Kabel…

Zuerst einmal eine Runde mit dem Messwagen im reinen Erdmagnetfeld gedreht. Normalerweise müsste in diesem Fall der gemessene Strom I = 0 A betragen, da sich der Einfluss des homogenen Erdmagnetfelds entlang einer geschlossenen Bahn aufhebt. Messen konnte ich einen Wert von I = +3.81 A.

Danach klemmte ich das Netzteil an die Spule und stellte eine Stromstärke I = 5 A ein. Nach einer Runde konnte ich am Display einen Wert von I = –40.15 A ablesen.


Zum Schluss erhöhte ich die Stromstärke auf I = 10 A und führte noch eine Messung durch. Diesesmal konnte ich einen Wert von –91.80 A ablesen, also abermals im erhofften Bereich, Heureka…



Für die jeweiligen Endergebnisse musste ich nur noch den offset-Wert von +3.81 A abziehen. So kam ich auf gemessene Stromstärken von 43.96 A (Erwartungswert 45 A) bzw. 95.61 A (Sollwert 90 A).

Mit den Resultaten bin ich mehr als zufrieden. Die maximale Abweichung beträgt rund 6.3%, was will ich mehr 😉
Wie oben bereits erwähnt bietet die Firma PASCO ein vergleichbares Experimentierset zum Amperegesetz um 1000 Dollar an. Mein Aufbau hat mich nicht einmal 40 Euro gekostet. Damit habe ich abermals den Beweis angetreten, dass auch komplexere Physik keineswegs teuer sein muss. Dieses Projekt eignet sich zum Beispiel vorzüglich für das schulische Physiklabor, Wettbewerbe wie „Jugend forscht“ oder die Matura/Abiturarbeit, etwa die „Vorwissenschaftliche Arbeit“ (VWA) in Österreich.
