Forum: Analoge Elektronik und Schaltungstechnik Verarbeitung/Wandlung von Hall-Sensor-Signalen


von Christian (thedjchi)



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 (
 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

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


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.

von Michael B. (laberkopp)


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.

von Christian (thedjchi)


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. :)

von Thomas (kosmos)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.