Skip to Content

Arduino-Drehzahlmesser mit A3144-Halleffekt-Sensor bauen

Arduino-Drehzahlmesser mit A3144-Halleffekt-Sensor bauen

In diesem Tutorial lernst du, wie du den A3144 Hall-Effekt-Sensor und ein Arduino benutzt, um einen Drehzahlmesserzu bauen. Ein Drehzahlmesser ist ein Gerät zur Messung der Geschwindigkeit eines rotierenden Objekts. Zum Beispiel ist es in der Automobiltechnik üblich, die Umdrehungen pro Minute (RPM) eines Motors zu überwachen.

Der Hall-Effekt-Sensor erkennt das Vorhandensein eines Magnetfelds. Indem man einen kleinen Magneten an einem rotierenden Objekt befestigt, kann man damit die Umdrehungen zählen. Mit einem Arduino können wir dann die Zeit messen, die für eine bestimmte Anzahl von Umdrehungen benötigt wird, und daraus die RPM berechnen.

In den nächsten Abschnitten liste ich die benötigten Teile für dieses Projekt auf, erkläre die Grundlagen von Hall-Effekt-Sensoren und stelle den A3144 Hall-Effekt-Sensor vor, den wir für unseren Drehzahlmesser verwenden werden. Außerdem gebe ich Beispiele für verschiedene Drehzahlmesser-Implementierungen mit dem A3144-Sensor, darunter einen einfachen Drehzahlmesser und einen fortgeschritteneren mit Interrupts.

Also, legen wir los!

Benötigte Teile

Unten findest du die für dieses Projekt benötigten Teile. Wenn du nur Hall-Effekt-Sensoren erkunden und lernen möchtest, kaufe das Sensor-Modul. Es ist etwas einfacher zu verwenden, aber für praktische Anwendungen zu groß. Für diese Fälle kaufe lieber den Hall-Effekt-Sensor selbst, der viel kleiner und auch günstiger ist.

Arduino Uno

USB Data Sync cable Arduino

USB-Kabel für Arduino UNO

Dupont wire set

Dupont-Kabel-Set

Widerstands- & LED-Kit

A3144 Hall-Effekt-Sensor-Modul

A3144 Hall-Effekt-Sensor

Magnete

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Grundlagen der Hall-Effekt-Sensoren

Hall-Effekt-Sensoren sind elektronische Bauteile, die das Vorhandensein eines Magnetfelds erkennen können. Sie basieren auf dem Hall-Effekt, bei dem eine Spannung quer zu einem Leiter entsteht, wenn dieser in einem Magnetfeld liegt und Strom durchfließt.

Wie funktionieren sie?

Hall-Effekt-Sensoren bestehen aus drei Hauptkomponenten: einer Spannungsquelle, einem stromführenden Leiter und einem Magnetfeld. Wenn ein Magnetfeld senkrecht zum Stromfluss im Leiter angelegt wird, erzeugt es eine Lorentzkraft, die die Elektronen auf eine Seite des Leiters drückt. Dadurch entsteht eine Spannungsdifferenz, die gemessen werden kann.

Hall-Effekt (source)

Typische Anwendungen

Typische Anwendungen für Hall-Effekt-Sensoren sind:

  • Näheerkennung: Hall-Effekt-Sensoren können das Vorhandensein oder Fehlen eines Magnetfelds erkennen, was sie für Näheerkennungsanwendungen geeignet macht.
  • Geschwindigkeitsmessung: Indem man einen Magneten an einem rotierenden Objekt befestigt und einen Hall-Effekt-Sensor verwendet, um die Magnetfeldänderungen zu erkennen, kann die Geschwindigkeit des Objekts gemessen werden.
  • Strommessung: Hall-Effekt-Sensoren können den durch einen Leiter fließenden Strom messen, indem sie das vom Strom erzeugte Magnetfeld erfassen.
  • Positionsmessung: Durch das Platzieren von Magneten an bestimmten Positionen und die Verwendung von Hall-Effekt-Sensoren kann die Position eines Objekts bestimmt werden.

Latching vs. Non-Latching

Hall-Effekt-Sensoren können als latching (rastend) oder non-latching (nicht rastend) kategorisiert werden. Latching-Sensoren besitzen ein eingebautes Magnetfeld, das sie im Ein- oder Aus-Zustand hält, bis ein Magnetfeld entgegengesetzter Polarität angelegt wird. Non-latching-Sensoren erkennen nur das Vorhandensein eines Magnetfelds und behalten ihren Zustand nicht bei. Wir verwenden einen non-latching Sensor.

Bipolar vs. Unipolar

Hall-Effekt-Sensoren können auch als bipolar oder unipolar klassifiziert werden. Bipolare Sensoren erkennen sowohl positive als auch negative Magnetfelder, während unipolare Sensoren nur auf eine Polarität reagieren. Der A3144 Hall-Effekt-Sensor ist ein unipolarer Sensor und reagiert nur auf einen Pol eines Magneten.

Schaltend vs. Linear

Hall-Effekt-Sensoren können im Schalt- oder Linearbetrieb arbeiten. Schaltende Sensoren liefern einen digitalen Ausgang, der je nach Vorhandensein oder Fehlen eines Magnetfelds zwischen Ein- und Aus-Zustand wechselt. Lineare Sensoren liefern einen analogen Ausgang, der linear mit der Stärke des Magnetfelds variiert. Wir verwenden den A3144 Hall-Effekt-Sensor, der vom Schalt-Typ ist.

Hall-Effekt-Sensoren vs. Reed-Relais

Neben dem Hall-Effekt-Sensor ist ein weiterer gängiger Magnetschalter das Reed-Relais. Schauen wir uns kurz die Unterschiede an.

Hall-Effekt-Sensoren bieten Vorteile wie berührungslose Erkennung, Halbleitertechnik, schnellere Reaktionszeit, weiten Betriebstemperaturbereich und digitalen Ausgang. Allerdings haben sie eine begrenzte Erkennungsreichweite, höhere Kosten und sind empfindlich gegenüber Störmagnetfeldern.

Reed-Relais hingegen haben eine große Erkennungsreichweite, geringere Kosten und sind unempfindlich gegenüber Störmagnetfeldern. Allerdings leiden sie unter mechanischem Verschleiß, langsamerer Reaktionszeit und begrenztem Betriebstemperaturbereich. Für detailliertere Informationen siehe unser Tutorial zu Interfacing Magnetic Switch To The Arduino.

Im nächsten Abschnitt schauen wir uns den A3144 Hall-Effekt-Sensor und seine Eigenschaften an.

Vorstellung des A3144 Hall-Effekt-Sensors

Der A3144 Hall-Effekt-Sensor ist ein fantastischer, sehr kleiner Magnetsensor mit integrierter Elektronik.

Er kann mit unregulierten Spannungen von 4,5 bis 24 Volt betrieben werden, dank eines eingebauten Spannungsreglers. Zusätzlich besitzt er eine Verpolungsschutzfunktion, das heißt, wenn du ihn falsch anschließt, überlebt er das. Der Stromverbrauch von 3,5 mA (bei 5 V) ist minimal, was ihn für batteriebetriebene Anwendungen geeignet macht.

Das Bild unten zeigt dir das Pinout. Wenn du den Sensor von vorne betrachtest, wo das Label lesbar ist, ist der Plus-Pin (+) links. Masse (-) ist in der Mitte und der Signalausgang (s) ist der rechte Pin.

Pinout of the A3144 Hall Effect Sensor
Pinbelegung des A3144 Sensors

Beachte, dass der A3144 unipolarist. Er reagiert also nur auf einen Pol eines Magneten, nicht auf den anderen. Denk daran beim Testen!

Der Sensor hat einen Open-Collector-Ausgang, was bedeutet, dass er direkt mit Mikrocontrollern verbunden werden kann und bis zu 25 mA treiben kann. Wir nutzen das, um eine LED direkt anzuschließen und seine Funktion zu testen.

Schließlich hat der A3144 Sensor eine hohe Empfindlichkeit (2,5 mV/Gauss), eine hohe Betriebsfrequenz von 2 kHz und einen weiten Betriebstemperaturbereich von -40 °C bis +150 °C. Kurz gesagt, es ist ein großartiger Sensor für fast jede Anwendung, die häufiges, berührungsloses und schnelles Schalten erfordert.

Testen des A3144 Hall-Effekt-Sensors

Wie unter den benötigten Teilen erwähnt, kannst du den Sensor als Modul oder als reinen Sensor kaufen. Das Modul hat eine integrierte LED und einen Pullup-Widerstand (R1) und ist daher sehr einfach zu testen. Schließe einfach 5 V (bis 24 V) an das Modul an und bringe den Magneten nahe an den Sensor. Die LED sollte aufleuchten. Aber denk daran, dass der Sensor unipolar ist. Probiere beide Pole des Magneten aus. Eine Seite funktioniert, die andere nicht.

Testing the A3144 Module
Testen des A3144 Moduls

Wenn du den reinen Sensor testen möchtest, musst du selbst eine LED und einen Pullup-Widerstand anschließen. Das Schaltbild unten zeigt dir, wie das geht.

Testen des A3144 Hall-Effekt-Sensors

Beachte, dass die Logik invertiert ist. Die LED leuchtet schwach (aufgrund des 10 kΩ Widerstands) und schaltet aus, wenn der Magnet dem Sensor nahekommt. Merke dir dieses Verhalten für später. Kurz gesagt, der Ausgang des A3144 wird niedrig, wenn ein Magnetfeld erkannt wird, und ist sonst hoch.

Übrigens: Wenn du das auf einem Breadboard mit der Arduino-Stromversorgung testen möchtest, hier ist die Verkabelung. Vergiss den 10 kΩ Pullup-Widerstand nicht.

Testing the A3144 on a breadboard
Testen des A3144 auf einem Breadboard

Im nächsten Abschnitt zeige ich dir, wie du den A3144 Sensor richtig mit dem Arduino verbindest.

Anschluss des A3144 Hall-Effekt-Sensors

Die meisten notwendigen Verbindungen hast du schon oben gesehen. Der einzige Unterschied ist, dass wir den Ausgang des A3144 Sensors an Pin 2 des Arduino anschließen.

Connecting the A3144 Sensor to the Arduino
Anschluss des A3144 Sensors an den Arduino

Zusammenfassend verbinden wir die Stromversorgung vom Arduino zum Breadboard und von dort zum A3144 Sensor. Dann fügen wir den 10 kΩ Pullup-Widerstand hinzu und verbinden den Ausgang des A3144 mit Pin 2 des Arduino. Falls du Probleme hast, findest du unten die komplette Verkabelungstabelle.

VonPinKabel-FarbeZuPin
Arduino5VRotBreadboardPositive Schiene
ArduinoGNDBlauBreadboardNegative Schiene
A3144GNDBlauBreadboardNegative Schiene
A3144VCCRotBreadboardPositive Schiene
A3144 Out/SignalGelbArduino2
A3144 Out/SignalWiderstand1
Widerstand2RotBreadboardPositive Schiene

Im nächsten Abschnitt zeige ich dir, wie du den A3144 als einfachen Magnetschalter verwendest.

Beispiel 1: Ein Magnetschalter

Schau dir den sehr einfachen Code unten an. Alle 10 ms lesen wir den Sensorwert und wenn dieser LOW ist, schalten wir die eingebaute LED des Arduino ein. Wenn du einen Magneten nahe an den Sensor bringst, sollte die LED aufleuchten.

const int hallPin = 2;
const int ledPin = 13;  // built-in

void setup() {
  pinMode(hallPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = digitalRead(hallPin);
  digitalWrite(ledPin, val ? LOW : HIGH);
  delay(10);
}

Hier eine detaillierte Erklärung des Codes.

Konstanten und Variablen

Der Code beginnt mit der Definition von zwei Konstanten: hallPin und ledPin. Die hallPin Konstante gibt den Pin an, an den der Hall-Effekt-Sensor angeschlossen ist, und die ledPin Konstante den Pin für die eingebaute LED auf dem Arduino-Board.

const int hallPin = 2;
const int ledPin = 13;  // built-in

Setup-Funktion

In der setup() Funktion setzen wir den Modus von hallPin auf INPUT und den Modus von ledPin auf OUTPUT. Dies geschieht mit der pinMode() Funktion.

void setup() {
  pinMode(hallPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

Loop-Funktion

Innerhalb der loop() Funktion lesen wir zuerst den Wert des hallPin mit der digitalRead() Funktion aus. Der gelesene Wert am Pin ist LOW, wenn ein Magnetfeld erkannt wird, und HIGH sonst. Achte auf diese invertierte Logik.

int val = digitalRead(hallPin);

Anschließend verwenden wir die digitalWrite() Funktion, um den Zustand der ledPin basierend auf dem vom Hall-Effekt-Sensor gelesenen Wert zu steuern. Wenn der Wert HIGH ist, bedeutet das, dass kein Magnetfeld erkannt wird, und wir setzen die ledPin auf LOW, wodurch die LED ausgeschaltet wird. Andernfalls setzen wir die ledPin auf HIGH, was die LED einschaltet.

digitalWrite(ledPin, val ? LOW : HIGH);

Zum Schluss fügen wir eine kleine Verzögerung von 10 Millisekunden mit der delay() Funktion ein. Diese Verzögerung sorgt für stabile Messwerte und verhindert schnelles Flackern der LED.

delay(10);

Und das war’s. Jetzt hast du einen einfachen Magnetschalter, der zuverlässig und schnell Magnetfelder erkennt.

Du könntest den obigen Code verwenden, um einen Start- oder Endschalter für einen Gleichstrom- oder Schrittmotor zu bauen. Angenommen, du möchtest einen Motor auf eine bestimmte Position drehen – zum Beispiel eine definierte Startposition eines Schrittmotors, der nach einem Stromausfall eine Uhr antreibt. Oder die Endposition eines Schrittmotors für einen 3D-Drucker.

Dafür befestigst du einfach einen Magneten am Motor, um die gewünschte Position zu markieren, und bringst den Hall-Sensor in die Nähe. Wenn der Sensor den Magneten erkennt, stoppt er den Motor. Um das tatsächlich umzusetzen, müsstest du ein Relais statt einer LED schalten, da Motoren normalerweise nicht direkt vom Arduino-Ausgang gesteuert werden können. Schau dir unser Tutorial zu How To Use A Relay With Arduino an, wenn du das vorhast.

Im nächsten Abschnitt verwenden wir dasselbe Prinzip, um die Drehzahl eines Motors zu messen.

Beispiel 2: Ein einfacher Drehzahlmesser

Im ersten Beispiel haben wir den Code geschrieben, um zu erkennen, wann der Magnet nahe am Sensor ist. Wenn wir zählen, wie oft das innerhalb eines bestimmten Zeitraums passiert, können wir die Geschwindigkeit eines rotierenden Objekts messen. Wir bauen diesen Drehzahlmesser, indem wir den Magneten irgendwo am rotierenden Objekt anbringen und jedes Mal, wenn er am Hall-Effekt-Sensor vorbeikommt, eine Umdrehung zählen.

const int hallPin = 2;
const int maxCnt = 100;

void setup() {
  Serial.begin(9600);
  pinMode(hallPin, INPUT);
}

void loop() {
  unsigned long start = micros();
  int old = 1;
  int cnt = 0;
  while (cnt < maxCnt) {
    int val = digitalRead(hallPin);
    if (!val && val != old) cnt++;
    old = val;
  }
  float seconds = (micros() - start) / 1000000.0;
  float rpm = cnt / seconds * 60.0;
  Serial.print("rpm: ");
  Serial.println(rpm);
}

Genau das macht der obige Code. Schauen wir uns das genauer an und verstehen, wie es im Detail funktioniert.

Konstanten und Variablen

Der Code beginnt mit der Definition von zwei Konstanten: hallPin und maxCnt. Die hallPin Konstante gibt den Pin an, an den der Hall-Effekt-Sensor angeschlossen ist, und die maxCnt Konstante legt den maximalen Zählwert fest. Wir zählen bis maxCounts und messen dann die verstrichene Zeit, um die Geschwindigkeit zu berechnen.

const int hallPin = 2;
const int maxCnt = 100;

Setup-Funktion

In der setup() Funktion initialisieren wir die serielle Kommunikation mit einer Baudrate von 9600 mit Serial.begin(9600). Wir setzen außerdem den hallPin als Eingangspin mit pinMode(hallPin, INPUT).

void setup() {
  Serial.begin(9600);
  pinMode(hallPin, INPUT);
}

Loop-Funktion

Die loop() Funktion implementiert die Hauptfunktionalität des Drehzahlmessers. Wir beginnen damit, die aktuelle Zeit mit micros() zu ermitteln und speichern sie in der Variable start. Wir initialisieren außerdem die Sensor-Lesevariable old mit 1 und die Zählvariable cnt mit 0.

void loop() {
  unsigned long start = micros();
  int old = 1;
  int cnt = 0;

Innerhalb der while-Schleife liest der Code den Wert des hallPin mit digitalRead(hallPin) und speichert ihn in der Variable val. Wenn der Wert 0 ist (Magnetfeld erkannt) und sich vom vorherigen Wert (val != old) unterscheidet, wird die Zählvariable cnt inkrementiert.

  while (cnt < maxCnt) {
    int val = digitalRead(hallPin);
    if (!val && val != old) cnt++;
    old = val;
  }

Das ist wichtig: Wir können nicht einfach jedes Mal zählen, wenn wir eine 0 (Magnet erkannt) feststellen, da wir sonst mehrfach zählen würden, solange der Magnet in der Nähe ist. Wir müssen nur zählen, wenn sich der Zustand ändert. Entweder von 1 auf 0 (fallende Flanke) oder von 0 auf 1 (steigende Flanke). Sieh dir das Bild unten an, das die Ausgabe des Serial Plotters mit zwei Magneterkennungen unterschiedlicher Dauer zeigt.

Falling and raising flanks in detection signal
Fallende und steigende Flanken im Erkennungssignal

Im obigen Code zählen wir nur, wenn der Sensor von 0 (!val) auf 1 (val !=old) wechselt. Kurz gesagt, wir erkennen die steigende Flanke des Signals.

Nach der while-Schleife berechnen wir die verstrichene Zeit in Sekunden, indem wir die Startzeit start von der aktuellen Zeit mit micros() subtrahieren und durch 1000000.0 teilen. Daraus berechnen wir die RPM (Umdrehungen pro Minute), indem wir die Anzahl der Umdrehungen cnt durch die verstrichene Zeit in Sekunden teilen und mit 60 (eine Minute) multiplizieren.

  float seconds = (micros() - start) / 1000000.0;
  float rpm = cnt / seconds * 60.0;

Zum Schluss gibt der Code den berechneten RPM-Wert mit Serial.print() und Serial.println() auf dem seriellen Monitor aus.

  Serial.print("rpm: ");
  Serial.println(rpm);
}

Um den Code zu testen, befestige einen Magneten in der richtigen Ausrichtung an einem rotierenden Objekt, zum Beispiel einem Lüfter. Bring dann den Sensor nah genug heran und stelle sicher, dass der Magnet bei jeder Umdrehung am Sensor vorbeikommt. Wenn du jetzt den Code ausführst, solltest du die Drehzahl des Lüfters messen können.

Measuring the speed of a fan using the A3144 sensor
Messung der Geschwindigkeit eines Lüfters mit dem A3144 Sensor

Der obige Code funktioniert gut. Für schneller rotierende Objekte und genauere Messungen können wir es noch besser machen, indem wir Interrupts verwenden. Wie das funktioniert, zeige ich dir im nächsten Abschnitt.

Beispiel 3: Ein schnellerer Drehzahlmesser mit Interrupts

Das obige Codebeispiel verwendet eine Schleife, um den Zustand des Hall-Effekt-Sensors abzufragen, und zählt eine Umdrehung, wenn wir eine Zustandsänderung von 0 auf 1 erkennen. Die Geschwindigkeit des Arduino ist jedoch begrenzt. Wenn das Objekt schneller rotiert, als wir abfragen können, verpassen wir Zustandsänderungen und zählen zu wenig.

Interrupts bieten eine Lösung für dieses Problem. Anstatt zu pollieren und nach Zustandsänderungen zu suchen, hängen wir einen Interrupt an den Sensor-Pin und immer wenn sich der Zustand ändert, wird eine ISR (Interrupt Service Routine) aufgerufen. Das ist viel schneller und der Code ist sogar einfacher. Schau mal:

const int hallPin = 2;
const int maxCnt = 100;

volatile int cnt = 0;

void count() {
  cnt++;
}

void setup() {
  Serial.begin(9600);
  pinMode(hallPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(hallPin), count, FALLING);
}

void loop() {
  unsigned long start = micros();
  while (cnt < maxCnt) ;
  float seconds = (micros() - start) / 1000000.0;
  float rpm = cnt / seconds * 60.0;
  Serial.print("rpm: ");
  Serial.println(rpm);
  cnt = 0;
}

Lass uns eintauchen und verstehen, wie das im Detail funktioniert.

Konstanten und Variablen

Der Code beginnt mit der Definition der Konstanten und Variablen.

const int hallPin = 2;
const int maxCnt = 100;

volatile int cnt = 0;

Wie zuvor gibt die hallPin Konstante den Pin an, an den der Hall-Effekt-Sensor angeschlossen ist, und die maxCnt Konstante legt den maximalen Zählwert fest. Die Variable cnt wird verwendet, um die Anzahl der Umdrehungen zu verfolgen. Beachte, dass sie als „volatile“ deklariert ist. Das ist notwendig, weil wir sie innerhalb einer Interrupt Service Routine verwenden. Mehr dazu im nächsten Abschnitt.

Zählfunktion

Die count() Funktion ist die interrupt service routine (ISR), die aufgerufen wird, wenn der Hall-Effekt-Sensor eine fallende Flanke am hallPin erkennt. ISRs sollten so kurz wie möglich sein. In unserem Fall erhöht die Funktion nur die Variable cnt um eins, was ideal für eine ISR ist.

void count() {
  cnt++;
}

Setup-Funktion

In der setup() Funktion initialisieren wir die serielle Kommunikation und setzen den hallPin als Eingang. Am wichtigsten ist, dass wir interrupt an den hallPin hängen, der die count() Funktion bei einer fallenden Flanke auslöst.

Beachte, dass nicht alle Pins für Interrupts verwendet werden können! Das hängt vom Mikrocontroller ab. Beim Arduino Uno können nur die Pins 2 und 3 für Interrupts genutzt werden.

void setup() {
  Serial.begin(9600);
  pinMode(hallPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(hallPin), count, FALLING);
}

Loop-Funktion

In der loop() Funktion holen wir die aktuelle Zeit mit der micros() Funktion. Dann betreten wir eine while-Schleife, die einfach wartet, bis die Variable cnt den Wert maxCnt erreicht hat. Das stellt sicher, dass wir genug Umdrehungen gezählt haben, um die Geschwindigkeit genau zu berechnen. Beachte, dass der Zähler außerhalb der Schleife in der Interrupt Service Routine count() inkrementiert wird. Kurz gesagt wartet der Arduino in der while-Schleife, während er parallel auf Interrupts reagiert, indem er die count() Funktion aufruft.

Wenn wir genug Zählungen erhalten haben, verlässt die while-Schleife. Wir berechnen dann wie zuvor die RPM (Umdrehungen pro Minute) und setzen die Variable cnt auf null zurück, bevor die Hauptschleife erneut startet.

void loop() {
  unsigned long start = micros();
  while (cnt < maxCnt) ;
  float seconds = (micros() - start) / 1000000.0;
  float rpm = cnt / seconds * 60.0;
  Serial.print("rpm: ");
  Serial.println(rpm);
  cnt = 0;
}

Für genauere, aber langsamere Messungen der Drehzahl erhöhe den Wert der maxCnt Konstante. Du wirst über mehr Umdrehungen mitteln, was stabilere Messwerte liefert, aber länger dauert. Ein niedrigerer maxCnt Wert gibt schnellere RPM-Messungen, die aber stärker schwanken.
Das war’s! Mit diesem Code kannst du einen Drehzahlmesser mit Arduino und Hall-Effekt-Sensor bauen, um die Geschwindigkeit eines rotierenden Objekts zu messen.

Fazit

In diesem Tutorial haben wir gelernt, wie man einen Drehzahlmesser mit einem Hall-Effekt-Sensor und einem Arduino baut. Wir haben mit den Grundlagen der Hall-Effekt-Sensoren begonnen und dann den A3144 Hall-Effekt-Sensor vorgestellt, der häufig in Geschwindigkeitsmessanwendungen verwendet wird.

Anschließend haben wir den A3144 Sensor getestet, um seine Funktionalität sicherzustellen, und ihn mit dem Arduino verbunden. Wir haben drei verschiedene Beispiele durchgespielt, um die Vielseitigkeit des Sensors zu demonstrieren.

Im Beispiel 1 haben wir den A3144 Sensor als Magnetschalter verwendet, der das Vorhandensein oder Fehlen eines Magnetfelds erkennt. Das kann in verschiedenen Anwendungen wie Tür-/Fenstersensoren oder Näherungserkennung nützlich sein.

Im Beispiel 2 haben wir einen einfachen Drehzahlmesser mit dem A3144 Sensor gebaut. Indem wir den Sensor an einem rotierenden Objekt befestigt haben, konnten wir dessen Geschwindigkeit in Umdrehungen pro Minute (RPM) messen. Das ist praktisch, um die Geschwindigkeit eines Motors oder Lüfters zu überwachen.

Im Beispiel 3 haben wir den einfachen Drehzahlmesser verbessert, indem wir Interrupts verwendet haben. Durch die Konfiguration des Arduino, bei jeder Magneterkennung einen Interrupt auszulösen, erzielten wir genauere und zuverlässigere RPM-Messungen.

Wenn du diesem Tutorial gefolgt bist, solltest du nun ein gutes Verständnis dafür haben, wie man den A3144 Hall-Effekt-Sensor mit einem Arduino verwendet, um einen Drehzahlmesser zu bauen. Wenn du Fragen hast oder weitere Hilfe benötigst, schau dir gerne den Abschnitt mit häufig gestellten Fragen an.

Viel Spaß beim Tüfteln!

Häufig gestellte Fragen

Hier sind einige häufig gestellte Fragen zum Bau eines Drehzahlmessers mit einem Hall-Effekt-Sensor und Arduino:

F: Was ist ein Drehzahlmesser?

A: Ein Drehzahlmesser ist ein Gerät zur Messung der Geschwindigkeit eines rotierenden Objekts. Er liefert Informationen über die Drehzahl in Umdrehungen pro Minute (RPM).

F: Was ist ein Hall-Effekt-Sensor?

A: Ein Hall-Effekt-Sensor ist ein Wandler, der das Vorhandensein eines Magnetfelds erkennt. Er basiert auf dem Hall-Effekt, der besagt, dass in einem Leiter mit Stromfluss, der in ein Magnetfeld gebracht wird, eine Spannung senkrecht zum Strom und Magnetfeld erzeugt wird.

F: Was sind die Vorteile von Hall-Effekt-Sensoren?

Hall-Effekt-Sensoren sind im Allgemeinen unempfindlich gegenüber Störungen durch Licht, Temperatur oder Rauschen. Da sie keine mechanischen Teile haben, reagieren sie schnell und halten praktisch ewig. Außerdem sind sie sehr klein und passen daher auch in enge Räume.

F: Warum einen Hall-Effekt-Sensor für einen Drehzahlmesser verwenden?

A: Hall-Effekt-Sensoren werden häufig in Drehzahlmessern eingesetzt, weil sie die Geschwindigkeit rotierender Objekte genau und berührungslos messen können. Das macht sie ideal für Anwendungen, bei denen eine nicht-invasive Geschwindigkeitsmessung erforderlich ist.

F: Warum reagiert der Hall-Effekt-Sensor nicht?

A: Stelle sicher, dass alles korrekt verkabelt ist. Der A3144 ist ein unipolarer Hall-Effekt-Sensor und reagiert nur auf einen Pol des Magneten. Prüfe, ob dein Magnet stark genug ist.

F: Kann ich den A3144 verwenden, um die Stärke eines Magnetfelds zu messen?

Der A3144 ist ein schaltender Hall-Effekt-Sensor und dafür nicht geeignet. Du bräuchtest einen linearen Hall-Effekt-Sensor.

F: Kann ich den A3144 mit einem ESP32 verwenden?

Nicht direkt. Der A3144 arbeitet mit 5 V, während der ESP32 mit 3,3 V arbeitet. Du benötigst einen Pegelwandler.