Feedback von einem Hall-Effekt-Sensor mit Video

Hall-Effekt-Sensor

Hall-Effekt-Sensoren können das Vorhandensein eines Magnetfelds erkennen und eine Ausgangsspannung erzeugen, wenn eines erkannt wird. Hall-Effekt-Sensoren bei Verwendung mitLinearantriebesind typischerweise zusammen mit einer Magnetscheibe im Getriebe des Aktuators positioniert. Wenn sich der Linearantrieb aus- oder zurückzieht, dreht sich diese Scheibe am Hall-Effekt-Sensor vorbei, wodurch der Sensor einen digitalen Ausgang in Form eines Spannungsimpulses erzeugt. Diese Impulse können gezählt und verwendet werden, um zu bestimmen, wie weit sich der Aktuator bewegt hat.

Lesen des Feedbacks eines Linearantriebs

Positionsrückmeldung von einem Hall-Effekt-Sensor

Ein Nachteil der Verwendung eines Hall-Effekt-Sensors für Positionsrückmeldungen besteht darin, dass keine absolute Position gemessen wird. Stattdessen erzeugen sie Impulse, die gezählt werden können, um festzustellen, wie weit sich der Aktuator bewegt hat. Um diese Impulse für die Positionsrückmeldung zu verwenden, müssen Sie a verwenden Mikrocontroller die erzeugten Impulse zu zählen. Dazu müssen Sie externe Interrupt-Pins Ihres Mikrocontrollers verwenden, um diese Impulse zu zählen, sobald sie auftreten. Externe Interrupts sind Pins, die eine Spannungsänderung erfassen und in unserem Fall zur Erfassung des Spannungsimpulses vom Hall-Effekt-Sensor verwendet werden können. Sie müssen das Datenblatt Ihres Mikrocontrollers konsultieren, um sicherzustellen, welche Pins Ihres Mikrocontrollers als Interrupt-Pins verwendet werden können. Verwenden eines Arduino Uno Beispielsweise können die Pins 2 und 3 für externe Interrupts verwendet werden. Sobald Sie einen geeigneten Interrupt-Pin ausgewählt haben, können Sie das Kabel des Hall-Effekt-Sensorausgangs mit diesem Pin verbinden sowie die Eingangsspannung mit 5 V und Masse mit einem Erdungsstift verbinden.

Hall-Effekt-Sensor an Arduino anschließen 

Das folgende Codebeispiel zeigt, wie ein Interrupt in der Arduino IDE eingerichtet wird, bei dem der Interrupt bei der ansteigenden Flanke des Spannungsimpulses ausgelöst wird. Sie können Ihren Interrupt so einrichten, dass er an verschiedenen Punkten einer Spannungsänderung ausgelöst wird, und sollten das Datenblatt Ihres Mikrocontrollers konsultieren, um die verfügbaren Optionen zu ermitteln. Der letzte Aspekt, den Sie zum Einrichten Ihres Interrupts tun müssen, ist das Schreiben Ihrer Interrupt-Serviceroutine. Dies ist die Funktion, die der Code jedes Mal ausführt, wenn der Interrupt ausgelöst wird. Diese Funktion sollte kurz sein und nur einfache Aufgaben wie das Zählen der Anzahl der Impulse von unserem Hall-Effekt-Sensor ausführen. Die Funktion countSteps () im folgenden Codebeispiel wird verwendet, um die Anzahl der Impulse vom Hall-Effekt-Sensor zu zählen.

Um diese Impulse zur Bestimmung eines Positionswerts zu verwenden, müssen Sie die vorherige Position des Linearantriebs und die Richtung kennen, in die sich der Linearantrieb bewegt. Ihr Mikrocontroller weiß bereits, in welche Richtung Sie Ihren Linearantrieb fahren. Sie können also einfach eine Variable einrichten, um die Richtung des Stellantriebs in Ihrem Code zu verfolgen, anhand derer bestimmt wird, ob Sie die Impulse von Ihrer vorherigen Position addieren oder subtrahieren. Sobald Sie Ihre Position aktualisiert haben, müssen Sie die gezählten Impulse auf Null zurücksetzen. Das folgende Codebeispiel zeigt Ihnen eine Funktion, die die Position basierend auf der Anzahl der gezählten Impulse aktualisiert. Sobald Sie eine Position in Bezug auf Impulse haben, können Sie diese anhand der Impuls-pro-Zoll-Spezifikation Ihres Linearantriebs in Zoll umrechnen. Im folgenden Codebeispiel beträgt der Impuls pro Zoll Hub 3500.

Referenzieren Sie Ihren Linearantrieb

Um die Positionsrückmeldung eines Hall-Effekt-Sensors genau nutzen zu können, müssen Sie immer die Startposition Ihres Linearantriebs kennen. Obwohl Ihr Mikrocontroller beim ersten Einschalten Ihres Systems nicht erkennen kann, ob der Aktuator ausgefahren ist oder nicht. Dazu müssen Sie Ihren Linearantrieb in eine bekannte Position bringen. Um Ihren Linearantrieb nach Hause zu bringen, müssen Sie ihn in eine bekannte Position fahren, z. B. vollständig eingefahren. Sie könnten auch nutzen externe Endschalter um Ihre bekannte Position auf eine andere Stelle als vollständig ausgefahren oder eingefahren einzustellen. Am Beispiel des folgenden Arduino-Codes möchten wir eine WHILE-Schleife einrichten, die unseren Linearantrieb in Ihre bekannte Position treibt, in diesem Fall vollständig eingefahren. Wir wissen, dass Sie sich an unserer bekannten Position befinden, da die Unterbrechung des Hall-Effekt-Sensors nicht ausgelöst wird. In diesem Fall prüfen wir, ob sich die Schrittvariable geändert hat, um festzustellen, ob der Interrupt ausgelöst wurde. Wir müssen auch sicherstellen, dass genügend Zeit vergangen ist, um zu erwarten, dass der Interrupt ausgelöst wird. Dazu verwenden wir die Funktion millis (), die die Zeit in Millisekunden seit dem Start des Codes ausgibt, und vergleichen diese mit dem vorherigen Zeitstempel . Sobald wir festgestellt haben, dass sich der Linearantrieb in unserer Ausgangsposition befindet, stoppen wir den Antrieb des Antriebs, setzen die Schrittvariable zurück und verlassen die WHILE-Schleife.

Umgang mit falschen Auslösern

Während Hall-Effekt-Sensoren nicht so empfindlich auf elektrisches Rauschen reagieren wie ein Potentiometer, kann elektrisches Rauschen dennoch das Ausgangssignal beeinflussen. Das Abprallen von Schaltern kann auch bei Hall-Effekt-Sensoren ein Problem sein, bei denen möglicherweise falsche Impulse gezählt werden. Dies würde sich darauf auswirken, wie weit sich Ihr Mikrocontroller von Ihrem Linearantrieb bewegt hat. Ein paar zusätzliche Impulse wirken sich nicht sehr auf die Positionierung aus, da 1000 Impulse pro Zoll vorhanden sind. Im Laufe der Zeit kann dies jedoch ein größeres Problem darstellen. Sie können diese Probleme bekämpfen, indem Sie einen internen Timer verwenden, um falsche Auslöser herauszufiltern. Da Sie bestimmen können, wie häufig neue Impulse erkannt werden sollen, können Sie herausfiltern, wann der Interrupt durch Rauschen ausgelöst wurde. Im folgenden Codebeispiel ist Trig-Delay die Zeitverzögerung zwischen den einzelnen Impulsen. Wenn der Interrupt vor dieser Verzögerung ausgelöst wurde, wird der Impuls nicht gezählt.

Die Dauer dieser Verzögerung hängt von Ihrer Anwendung ab. Wenn sie jedoch zu kurz ist, wird das Rauschen nicht richtig herausgefiltert, und wenn sie zu lang ist, werden die tatsächlichen Impulse vom Linearantrieb übersehen. Die Drehzahl des Linearantriebs wirkt sich auch auf diese Verzögerung aus. Wenn Sie die Drehzahl anpassen möchten, muss diese Variable möglicherweise geändert werden, um sie an die neue Frequenz der erwarteten Impulse anzupassen. Um eine genaue Verzögerung zwischen jedem Impuls genau zu bestimmen, können Sie einen Logikanalysator verwenden, um das tatsächliche Signal vom Hall-Effekt-Sensor anzuzeigen. Während dies in den meisten Anwendungen nicht erforderlich ist, möchten Sie möglicherweise eine genaue Verzögerung bestimmen, wenn Sie eine sehr genaue Positionierung benötigen.

Eine andere Möglichkeit, falsche Auslöser zu bekämpfen, besteht darin, den Positionswert jedes Mal zu korrigieren, wenn der Aktuator eine bekannte Position erreicht. Wie beim Referenzieren des Linearantriebs, wenn Sie den Linearantrieb in eine vollständig eingefahrene oder ausgefahrene Position gefahren haben oder wenn Sie ihn verwenden externe EndschalterSie werden wissen, wie weit sich der Antrieb bewegt hat. Da Sie wissen, wie viele Schritte der Hall-Effekt-Sensor senden sollte, um Ihre bekannte Position zu erreichen, können Sie den Wert einfach korrigieren, wenn wir ihn erreichen. Im folgenden Codebeispiel erfolgt dies für die vollständig ausgefahrenen und vollständig eingefahrenen Positionen. Da sich der Aktuator nicht bewegt, sobald er eine dieser Positionen erreicht hat, wissen wir, dass wir am Limit sind, wenn wir versuchen, den Aktuator anzutreiben und sich der Positionswert nicht ändert. Diese Methode bietet eine praktische Lösung, um sicherzustellen, dass Ihr Positionswert genau bleibt, insbesondere wenn Sie Ihren Stellantrieb zu einem bestimmten Zeitpunkt während des Betriebs vollständig ein- oder ausfahren. Sie können diese Methode in Verbindung mit der oben beschriebenen Methode verwenden, um die Genauigkeit Ihres Positionswerts zu erhalten.

Zusammenfassung

Die Verwendung eines Hall-Effekt-Sensors für die Positionsrückmeldung bietet eine viel höhere Auflösung als die Rückmeldung eines Potentiometers. Da es 1000 Impulse pro Zoll Bewegung geben kann, bieten Hall-Effekt-Sensoren Präzision und Zuverlässigkeit bei der Positionierung Ihres Linearantriebs. Hall-Effekt-Sensoren bieten auch eine größere Möglichkeit, sicherzustellen, dass sich mehrere Linearantriebe gleichzeitig bewegen, da die Impulszahlen genauer sind als die sich ändernde Spannung des Potentiometers. Nutzen Sie unsere FA-SYNC-X Mit der Aktuatorsteuerung können Sie sogar sicherstellen, dass sich die Aktuatoren unabhängig von der Last im Gleichlauf bewegen. Für Heimwerker können Sie mit einem Arduino überprüfen, wie sich Ihre Aktuatoren im Einklang bewegen Hier.

Unten finden Sie den vollständigen Beispielcode, der in diesem Blog verwendet wurde und zur Steuerung einer Hublänge von 14 Zoll erstellt wurde Bullet Series 36 Cal. Linearantrieb. Der Linearantrieb wird mit a angetrieben Kraftfahrer, die Sie lernen können, wie man einrichtet Hier

[1] Monari, G. (Juni 2013) Grundlegendes zur Auflösung in optischen und magnetischen Encodern. Abgerufen von: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders

Share This Article
Tags:

Share this article

Need Help Finding the Right Actuator?

We precision engineer and manufacture our products so you get direct manufacturers pricing. We offer same day shipping and knowledgeable customer support. Try using our Actuator Calculator to get help picking the right actuator for your application.