Ein magnetischer Hall Sensor ist ein Schlüsselelement in der Welt der Sensorik, das durch präzise Messungen magnetischer Felder eine bedeutende Rolle einnimmt. Von der Automobilindustrie bis zur Elektronik hat der magnetische Hall-Sensor in verschiedensten Anwendungsbereichen an entscheidender Bedeutung gewonnen. In diesem Beitrag möchte ich dir nun gerne zeigen, wie du diesen Sensor am Arduino anschließt und programmierst.
(Dieser Sensor ist extrem klein, daher bitte ich für die Pixel zu entschuldigen.)
Der magnetische Hall Sensor reagiert auf ein Magnetfeld und je nachdem wie dieses gepolt ist (+ / -) reagiert der Sensor.
Dieser Sensor kann bei Amazon.de* oder aber auch bei ebay.de* günstig erworben werden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Technische Daten
- Betriebsspannung: 5V
- Stromaufnahme im Ruhezustand 3mA
- Stromaufnahme bei ausgelöstem Signal 8mA
Leider konnte ich keine weiteren technisches Daten zu diesem Sensor finden.
Der Schaltplan
Der magnetische Hall Sensor arbeitet wie ein Schalter und daher gibt es „nur“ 3 PINs, welche wie folgt, belegt werden müssen:
- G – GND
- R – 5V
- Y – digitaler PIN 10
In der folgenden Schaltung habe ich zusätzlich eine LED integriert, damit der Zustand des Sensors besser zu erkennen ist.
Der Quellcode
Da wie schon angesprochen der Sensor quasi als Schalter dient haben wir nur die beiden Zustände „LOW“ bzw. „HIGH“ abzufragen.
int statusLed = 12 ; // PIN für die LED zur anzeige des Sensor zustandes int mhSensor = 10 ; // PIN für den Magnetischen Hall Sensors void setup (){ pinMode (statusLed, OUTPUT) ; // definieren des PIN's für die StatusLED als Ausgangssignal pinMode (mhSensor, INPUT) ; // definieren des PIN's für den Sensor als Eingangssignal } void loop (){ int val = digitalRead (mhSensor) ; // Lesen des Zustandes des Sensors. if (val == LOW){ //Wenn dieser AN ist dann soll die StatusLed leuchten. digitalWrite (statusLed, HIGH); } else { //Wenn dieser AUS ist dann soll die StatusLed NICHT leuchten. digitalWrite (statusLed, LOW); } }
Das Ergebnis
Ich habe hier nun ein kleines Video welches demonstriert wie der oben dargestellte Code funktioniert. Es ist gut zu erkennen, dass der Sensor erst reagiert, wenn der Magnet direkt davor ist. Je nachdem wie stark der Magnet ist variiert der Abstand zwischen Sensor und Magnet.
Der Sensor reagiert auch nur auf den Pluspol eines Magneten, d.h. beim Minuspol wird kein Signal empfangen.
Der Download
Den Quellcode zum Download möchte ich hier anbieten.
Guten tag Herr Draeger.
Ich soll im Rahmen meiner Ausbildung einen KY-024 über „C“ programmieren. Leider bin ich völlig überfordert. Haben Sie zufällig für „C“ ebenfalls einen Quellcode, respektive ein Tutorial. Es dankt, ein Verzweifelter!
Hallo,
also von 0 auf 100 in C ist schon etwas schwierig.
Da kann ich mir gut vorstellen das man da an einigen Stellen verzweifelt.
Zuerst sollte man bedenken das ein Arduino nicht komplett in C geschrieben wird sondern immer etwas C++ dialekt vorhanden ist. Daher muss man immer prüfen ob bestimmte Funktionalitäten unterstützt werden.
Jetzt zu dem Sensor KY-024, leider habe ich diesen nicht auf Lager, nach einer kurzen Suche im Internet habe ich aber herausgefunden das dieser über einen digitalen sowie analogen Ausgang verfügt. Daher würde ich diesen mit dem Board wiefolgt verbinden :
– VCC – 5V
– GND – GND
– A0 – analoger PIN A0
Also Board empfehle ich den Arduino UNO.
Im Sketch würde dann „nur“ über analogRead(A0); der Wert ausgelesen. Diesen gelesenen Wert kann man nun auf der seriellen Konsole über
Serial.begin(9600);
Serial.println(analogRead(A0));
ausgeben.
Ein „delay(2500);“ zusätzlich, würde dafür sorgen das die Ausgabe nur alle 2,5 Sekunden erfolgt.
Gruß,
Stefan
Hallo,
ich würde gerne eine Prüfvorrichtung bauen, welche sicherstellt ob der Magnet richtig verbaut ist. Meine Frage dazu wäre. Denken Sie das der Sensor eine verkehrte Einbaulage erkennen würde?
Grüße
Philipp
Hi,
du möchtest prüfen ob der Magnet korrekt gepolt eingebaut wurde?
Gruß,
Stefan Draeger
Hi,
genau. Was würde passieren wenn der Magnet falsch gepolt wäre? Würde der Sensor trotzdem anspringen?
Es geht um eine Prüfvorrichtung die anzeigt ob der Magnet korrekt gepolt verbaut wurde.
Grüße
Hi,
ich habe gerademal die kleine Schaltung aufgebaut und konnte feststellen das der Sensor nur auf den Pluspol reagiert. D.h. beim Minuspol wird kein Signal gesendet.
https://youtu.be/IPKCKORC3kg
Gruß,
Stefan Draeger
Hi,
krass vielen vielen Dank für deine Hilfe.
Dann geh ich mal was bauen.
Grüße
Philipp