Verarbeitung/Wandlung von Hall-Sensor-Signalen

OP #7601809
Lesenswert?

Hallo zusammen. :)

ich wende mich heute an euch, da ich mit meinem Wissen nicht weiter komme und hoffe, hier die passenden Denkanstöße und/oder Lösungsansätze mitgeteilt zu bekommen. Für alle Versuche in diese Richtung, und die damit verbundene Inanspruchnahme eurer Zeit, möchte ich mich im Vorfeld bereits bedanken!

Thematik

Ich bin einer der Menschen, der gerne und viel am PC spielt, unter Anderem auch Simulatoren. Und da ich diese Spiele sehr gerne "realitätsnah" spielen möchte, baue ich mir hierfür diverse Erweiterungen, wie z.B. Seitenkonsolen.

In der Vergangenheit habe ich mir zwei PC-Joysticks gekauft und diese so modifiziert, dass sie Griffstücke aus Baggern besaßen. Somit war das "Feeling" deutlich angenehmer und vor allem gewohnter (ich selber bin Servicetechniker für Baumaschinen).

Problem

Die meisten PC-Controller (unabhängig ob Joystick oder Gamepad) nutzen Potentiometer zum Erfassen der Analogsignale und können demzufolge mit ihren verbauten Mikrocontroller auch nur diese Art Signal verarbeiten. Joysticks aus Baumaschinen hingegen verwenden heutzutage fast nur noch Hall-Sensoren zur Erfassung von elektrischen Winkelsignalen.

Aus diesem Grund konnte ich die Daumenräder (Hall-Sensor) der Baggergriffstücke (stammten aus einem ATLAS-Bagger) nicht verwenden, da der Mikrocontroller des verwendeten PC-Joysticks (Logitech Extreme 3D Pro) diese nicht verarbeiten konnte (ein Versuch endete mit einem permanent schwankendem Signal im Spiel -> der PC "dachte" da wackelt jemand die ganze Zeit am Daumenrad). Hall-Sensoren sind eben deutlich empfindlicher als Potis. :D

Ziel

Zwei separate Joysticks (einen für links, einen für rechts) als Eingabegeräte am PC verwenden zu können, die Hall-Sensoren zur Erfassung nutzen.

Gegebenheiten

Nach etwas Recherche habe ich ein Gamepad gefunden, das seine Analogsticks via Hall-Sensoren erfasst. Hierbei handelt es sich um das "Gamesir T4 Kaleid". Dieses nutzt je einen Hall-Sensor für die X- und Y-Achse. Die Spannungsversorgung des Gamepads beträgt 5,0 Volt via USB-C-Verbindung zum PC (kein kabelloser Betrieb), die des Sensors selbst 3,3 Volt. Jeder Sensor liefert ein Signal von 0,0 bis 3,3 Volt (Anschlag <-> Anschlag im 1-Achs-Betrieb) und in Mittelstellung 1,65 Volt. Im Diagonalbetrieb (gleichzeitig in X- und Y-Richtung) sind die Minimal- bzw. Maximalwerte nicht am Endpunkt, da der Bewegungsraum ja kreisfürmig und nicht quadratisch ist.

Als Joysticks sollen zwei aus einem "Bobcat S450 mit vollelektrischer Steuerung" zum Einsatz kommen. Diese werden original mit 12 Volt betrieben und sind an die Maschine via CAN-Bus angeschlossen. Um dies zu gewährleisten besitzt jeder Joystick eine eigene Steuerplatine. Die Hallsensoren, die original verbaut waren, waren "Micronas HAL 401", welche zwei gegenläufige Signale ausgeben. Verbaut waren dabei je Joystick 4 Stück, also 2 für die X-Achse und 2 für die Y-Achse, wobei die Paare jeweils gegenüber angeordnet sind. Somit ergibt sich für jede Achse, dass insgesamt 4 Signale erfasst werden, in Summe also 8 Signale je Joystick.

Ein erster Versuch, diese Hall-Sensoren (je einer für X und Y und auch nur ein Ausgang je Sensor) direkt (auf der kleinen Platine der "HAL 401" sind noch ein paar Kondensatoren und Widerstände, ich vermute zur Entstörung und Versorgunsspannungsstabilisierung) an das Gamepad mit 3,3 Volt anzuschließen, ergab, dass das Signal des "HAL 401" in Ruhestellung nicht "mittig" lag und auch einen viel zu geringen Ausschlag bei Ansteuerung brachte (getestet über die Webseite "hardwaretester.com"). Erster Problempunkt hierbei war schon, dass der "HAL 401" laut Datenblatt mit einer Versorgungsspannung von 4,8 bis 12 Volt angegeben ist.

Also habe ich mich etwas belesen und mir verschiedene Hall-Sensoren bestellt. Dabei waren sowohl Bipolare als auch Unipolare, damit ich ein wenig mit dem Einfluss des Magnetfeldes "spielen" und testen kann.

Nach all den Versuchen zeigte sich, dass die "besten" Ergebnisse mit dem "Allegro A1304ELHLX-T" erziehlt worden, wenn gleich sie nicht einmal in die Nähe von "so soll es sein" kamen. Ausgewechselt wurden alle 4 Sensoren auf der Platine (Sensor 1 und 3 = Y-Achse; Sensor 2 und 4 = X-Achse).

Folgende Messwerte der Sensoren ergaben sich anschließend:

Mittelstellung des Joysticks:

  • Sensor 1 -> 1,05 Volt
  • Sensor 3 -> 1,06 Volt
  • Sensor 2 -> 1,01 Volt
  • Sensor 4 -> 1,05 Volt

Anschlag Vor:

  • Sensor 1 -> 1,20 Volt
  • Sensor 3 -> 0,82 Volt
  • Sensor 2 -> 1,02 Volt
  • Sensor 4 -> 1,05 Volt

Anschlag zurück:

  • Sensor 1 -> 0,74 Volt
  • Sensor 3 -> 1,24 Volt
  • Sensor 2 -> 1,02 Volt
  • Sensor 4 -> 1,05 Volt

Anschlag links:

  • Sensor 1 -> 1,05 Volt
  • Sensor 3 -> 1,05 Volt
  • Sensor 2 -> 0,73 Volt
  • Sensor 4 -> 1,22 Volt

Anschlag rechts:

  • Sensor 1 -> 1,06 Volt
  • Sensor 3 -> 1,07 Volt
  • Sensor 2 -> 1,19 Volt
  • Sensor 4 -> 0,79 Volt

Alles in Allem also ein recht kleiner Arbeitsbereich der Sensoren. Außerdem merkt man nach kurzem Überlegen (am Beispiel von Sensor 1), dass der Nullpunkt des Joysticks (1,05 Volt) nicht der Mittelpunkt des Spannungsverlaufes (

$$\frac{1,20 - 0,74}{2} + 0,74 = 0,97$$

Volt) ist.

Ein physischer Umbau des Joysticks, sodass die Sensoren näher am Magneten sind oder gar andere Magneten ist für mich nicht realisierbar.

Vorgaben / Hindernisse

Da das Gamepad via USB an den PC angeschlossen wird, habe ich ohnehin nur maximal 5 Volt als Spannungsquelle zur Verfügung. Allerdings konnte ich auf der Platine keinen frei zugänglichen Punkt finden, der mir mit Sicherheit die 5 Volt vom USB-Port zur Verfügung stellt. Sicher ist nur die Versorgung mit 3,3 Volt am Anschluss des ehemaligen Analoggebers (ist bereits ausgelötet).

Fragestellung

Was in meinem Augen nun gemacht werden müsste, wäre die Wandlung der Spannung des Bereiches (im Falle des Sensor 1) von 0,74 bis 1,20 Volt auf 0,05 bis 3,3 Volt, wobei 1,05 Volt eben 1,65 Volt entsprechen müssten. Der Spannungsverlauf eines Sensors ist meiner Auffassung nach nicht linear. Meine Idee hierzu war, das man jeweils das zusammengehörende Sensorpaar (Sensor 1 zsm. mit Sensor 3; Sensor 2 zsm. mit Sensor 4) auswertet, bspw. durch Mittelwertbildung. Dies sollte ja einen geradlinigen Verlauf ergeben. Zugegebener Maßen habe ich das aber noch nicht berechnet, ob dem auch wirklich so ist; wird aber noch nachgeholt.

Frage 1: Kann ich die Wandlung der Spannung mit einer elektronischen Schaltung realisieren? Und wenn ja, in welcher Form?

Frage 2: Kann man die Wandlung über einen Mikrokontroller laufen lassen und den gewandelten Wert direkt aus einem Analogausgang auf den Eingang des Gamepads schicken?

Vielen Dank und Gruß, CHI

#7601822
Lesenswert?

Christian schrieb:

Frage 2: Kann man die Wandlung über einen Mikrokontroller laufen lassen und den gewandelten Wert direkt aus einem Analogausgang auf den Eingang des Gamepads schicken?

Ich fang mal mit Frage 2 an: Wenn du einen Mikrocontroller in Betracht ziehen möchtest, dann kannst du einen nehmen, der nativ USB mitbringt und sich am PC als Joystick/Gamepad vorstellt. Denkbar wäre der klassische STM32F103, bekannt als "Blue Pill"

Der ADC hat 12bit, mit der richten Referenzspannung sollte das direkt eine ausreichend hohe Auflösung liefern.

Mit USB selber muss man sich dabei dann nicht viel rumschlagen. Ich werfe mal das böse Wort "Arduino" in den Raum - In dem Ökosystem ist auch der STM32F103 sehr gut eingepflegt und für USB-Joysticks gibt es bereits entsprechende Bibliotheken, die einem die Bitpopelei auf Fußpilzebene abnehmen:

https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries/USBComposite

Für Frage 1: Mit Operationsverstärkern geht das. Aus den 0.8...1.2V kann man mit einem Subtrahierer 0.8V abziehen, dann hat man 0...0.4V, das ganze dann etwa um Faktor 8 verstärken, macht 0...3.2V - Die Details mit Offset und so sind dann auch nicht mehr schwierig.

#7602007
Lesenswert?

Christian schrieb:

Hall-Sensoren sind eben deutlich empfindlicher als Potis. :D

Nein, sie sind anders.

Christian schrieb:

Nach etwas Recherche habe ich ein Gamepad gefunden, das seine Analogsticks via Hall-Sensoren erfasst.

Egal, du kannst den schon vorhandenen Logitech Extreme mit dem HAL 401 Hallsensor aus dem Bobcat S450 nutzen.

Christian schrieb:

Allerdings konnte ich auf der Platine keinen frei zugänglichen Punkt finden, der mir mit Sicherheit die 5 Volt vom USB-Port zur Verfügung stellt

Keine Sorge, den gibt es, direkt an der USB Buchse.

Christian schrieb:

Folgende Messwerte der Sensoren

Sind vermutlich nutzlos weil sie die Offsetkompensation nicht beachten. Dem Datenblatt nach muss die Differenz zwischen OUT2 und OUT4 mit einem DualSlope Multimeter ausgewertet werden

Christian schrieb:

Frage 1: Kann ich die Wandlung der Spannung mit einer elektronischen Schaltung realisieren? Und wenn ja, in welcher Form?

Ja, ein Differenzverstärker. ABER: Du musst wissen, auf welche Art dein Joystick seine alten Potis oder Hallsensoren ausgewertet hat. Da gibt es mehrere Möglichkeiten und ohne Kenntnis der Beschaltung und Auswertung ist es NICHT möglich, das nachzubilden. Glaskugeln sind gerade ausverkauft.

Also erst mal den Schaltplan deiner Logitech Extreme abzeichnen und vorstellen, mit Messwerten ja nach Joystickstellung.

Ausserdem die Schaltung der kleine PLatine am HAL 401 abzeichnen, es kann gut sein, daß es GENAU die Beschaltung ist die man zum Ausgleich der Offsetkorrektur braucht.

Ohne solche Fakten aus der Schaltungenanalye ist jegliches Gebastel nutzloses stochern im Nebel.

OP #7602796
Lesenswert?

Vorweg vielen Dank für eure Antworten!

Sebastian R. schrieb:

Ich fang mal mit Frage 2 an: Wenn du einen Mikrocontroller in Betracht ziehen möchtest, ........

....... gibt es bereits entsprechende Bibliotheken, die einem die Bitpopelei auf Fußpilzebene abnehmen:

Danke für den Schubs in diese Richtung. Ich schaue mir das einmal an, bestelle mir einen und versuche einmal mein Glück in der Programmierung. Mal schauen, wie Feinfühlig oder grobmotorisch das Ganze dann ausschauen wird.

Sebastian R. schrieb:

Für Frage 1: Mit Operationsverstärkern geht das. Aus den 0.8...1.2V kann man mit einem Subtrahierer 0.8V abziehen, dann hat man 0...0.4V, das ganze dann etwa um Faktor 8 verstärken, macht 0...3.2V - Die Details mit Offset und so sind dann auch nicht mehr schwierig.

Auch hier werde ich mich einmal belesen. Wenn ich etwas in meinen Augen brauchbares erstellt habe, melde ich mich dazu wieder.

Michael B. schrieb:

Nein, sie sind anders.

Ja, so kann man das auch sagen, das stimmt wohl. Für mich kam es in den Versuchen "feinfühliger" vor, daher meine Aussage.

Michael B. schrieb:

Egal, du kannst den schon vorhandenen Logitech Extreme mit dem HAL 401 Hallsensor aus dem Bobcat S450 nutzen.

Das hatte ich ja versucht, erhielt dabei aber nur "schwammige" Signale am PC, oder anders formuliert, der PC empfing ständig eine Betätigung, obwohl er nicht bewegt wurde.

Michael B. schrieb:

Keine Sorge, den gibt es, direkt an der USB Buchse.

Die USB-C-Buchse des Gamesir T4 Kaleid ist in SMD-Bauweise und übersteigt meine Löttechnik. Leiterbahnen verfolgen ist leider nicht möglich, da es verdeckte Layer gibt.

Michael B. schrieb:

Sind vermutlich nutzlos weil sie die Offsetkompensation nicht beachten. Dem Datenblatt nach muss die Differenz zwischen OUT2 und OUT4 mit einem DualSlope Multimeter ausgewertet werden

Dies hatte ich zwar im Datenblatt gelesen, überstieg aber mein Verständnis. An dieser Stelle stand für mich erstmal das probieren.

Michael B. schrieb:

Ja, ein Differenzverstärker. ABER: Du musst wissen, auf welche Art dein Joystick seine alten Potis oder Hallsensoren ausgewertet hat. Da gibt es mehrere Möglichkeiten und ohne Kenntnis der Beschaltung und Auswertung ist es NICHT möglich, das nachzubilden. Glaskugeln sind gerade ausverkauft.

Wenn du mit "ausgewertet" meinst, welche Spannungen über den Signaleingang vom Poti kamen: das kann ich nachmessen. ich habe die alten Joysticks ja noch.

Michael B. schrieb:

Also erst mal den Schaltplan deiner Logitech Extreme abzeichnen und vorstellen, mit Messwerten ja nach Joystickstellung.

Werde ich versuchen nachzuholen, sofern es für mich machbar ist.

Michael B. schrieb:

Ausserdem die Schaltung der kleine PLatine am HAL 401 abzeichnen, es kann gut sein, daß es GENAU die Beschaltung ist die man zum Ausgleich der Offsetkorrektur braucht.

Das habe ich bereits skizzenhaft gemacht. Ich versuche mal es lesbar zu gestalten und poste ihn dann hier. Meiner Auffassung nach könnte es sich aber nach der Beschaltung handeln, wie sie im Datenblatt des HAL401 auf Seite 18 Fig. 4-1 zu sehen ist.

  • ein Kondensator zwischen VDD und GND
  • je ein Widerstand (Aufdruck "102") in Reihe zum Output
  • je ein Kondensator zwischen Output und GND vor dem Widerstand
  • je ein Kondensator zwischen Output und GND nach dem Widerstand

Michael B. schrieb:

Ohne solche Fakten aus der Schaltungenanalye ist jegliches Gebastel nutzloses stochern im Nebel.

Ich bin gewillt zu lernen, zu lesen und zu verstehen, aber ich bin nicht "vom Fach" und kann damit nicht direkt mit allem wichtigen Informationen aufwarten, die ein Anderer, der deutlich mehr Verständnis und Kenntnis der Materie hat, benötigt. Dies hoffe ich mir nachzusehen.

Ich mach dann mal Hausaufgaben. :)

#7602820
Lesenswert?

du musst dir das wie eine Open Kollektor Schaltung bei einem Optokoppler vorstellen. Der Hallgeber zieht die 5V die am Pullup anliegen gegen Masse, mit einem weiteren Widerstand(R2) kannst du gleich einen Spannungsteiler draus machen falls du statt 5V nur 3,3V benötigst.

https://i.stack.imgur.com/O77bb.png

Bei so Landmaschinen ist das aus Sicherheitsgründen meisten doppelt und gegenläufig ausgeführt. Man hat also ein Signal das von 0-5V geht und das andere geht von 5-0V zusammen ergeben Sie dann immer 5V.

Beispiel: 25% Stellung Poti/Hallgeber1 gibt 1,25V aus und das gegenläufige Poti/Hallgeber2 3,75V. 1,25V+3,75V=5V also ist das Signal plausibel.

Gäbe es nur 1 Poti/Hallgeber und dieses/r zeigt 1,25V an weiß man nicht obs defekt ist, es könnte ja sein das der Hebel auf 100% steht.

Für deine Spiele ist das egal, da nimmst du dir eben das eine welches an oder absteigt und da Hallgeber eh verschleißfrei sind, hast du eben nur das Risiko wenn ein Kabel abfällt aber das macht sich im Spiel ja sofort bemerkbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren