Das Signal eines Hall-Drehencoders mit analogem Ausgang soll so
ausgewertet werden. Die Größe des analogen Signals entspricht dem
Drehwinkel.
Es gibt zwei Herausforderungen:
1. Nach 360° wiederholt sich das Signal, sodass man die Umdrehungen per
Programm zählen muss
2. Der Magnet kann auf der Achse leicht verdreht montiert sein. Dieser
Winkel soll per Software korrigierbar sein.
Welche Probleme könnte es bei der Auswertung geben?
Christoph M. schrieb:> 1. Nach 360° wiederholt sich das Signal, sodass man die Umdrehungen per> Programm zählen muss
Die letzte Possition mit der aktuellen vergleichen und daraus auf die
Drehrichtung schließen.
> 2. Der Magnet kann auf der Achse leicht verdreht montiert sein. Dieser> Winkel soll per Software korrigierbar sein.
Meinst du (a) "nicht konzentrisch" ausgerichtet, oder (b) um einen
gewissen Winkel in Ruhestellung verdreht?
(a) müsste sich in den Messwerten bemerkbar machen... (ausprobieren).
Dann ist eine Korrekturfunktion nütig.
(b) Nullen, also einmalig die Ruhepostion bestimmen und als Offset
verwenden
Christoph M. schrieb:> Welche Probleme könnte es bei der Auswertung geben?
Kein, weil das Signal schon digital auslesbar ist.
Man muss halt oft genug auslesen, damit nie mehr als eine halbe
Umdrehung zwischen beiden Werten liegt, damit man die Überläufe zählen
kann.
Christoph M. schrieb:> Die Größe des analogen Signals entspricht dem> Drehwinkel.
Theoretisch mag das so sein, nur kannst Du Dich dann von 12Bit Auflösung
verabschieden.
Christoph M. schrieb:> 1. Nach 360° wiederholt sich das Signal, sodass man die Umdrehungen per> Programm zählen muss
Am einfachsten läßt sich das in Software lösen, d.h. den Sensorwert per
I2C auslesen.
Christoph M. schrieb:> 2. Der Magnet kann auf der Achse leicht verdreht montiert sein. Dieser> Winkel soll per Software korrigierbar sein.
Wenn Du I²C nimmst, kannst Du den Offset direkt in den Sensor
programmieren.
Ich verwende einen Sensor, der dem AS5600 ähnlich ist. Der hat leider
nur einen Analogausgang.
Mittlerweile wird mir das Problem mit dem Analogausgang klar: Der Sensor
erzeugt eine sägezahnförmige Schwingung, da er beim erreichen des
maximalen Winkels wieder bei Null anfängt. Für die Positionserkennung
ist da jetzt ein Problem, weil durch die endliche Geschwindigkeit des
Phasensprungs ein Samplewert genau die Flanke treffen kann und dann es
so aussieht, als wenn der Encoder rückwärts läuft.
Man braucht also eine Art Filter, um dieses Problem zu unterdrücken.
Christoph M. schrieb:> Man braucht also eine Art Filter, um dieses Problem zu unterdrücken.
Erstmal solltest du das Datenblatt lesen, bevor du solche voreiligen
Schlüsse ziehst.
Was meinst du wohl, wozu AMS dem Sensor in der Signalverarbeitung eine
10 Bit Hysterese verpasst hat. (DS Page 25).
Hallo Christoph,
Christoph M. schrieb:> Mittlerweile wird mir das Problem mit dem Analogausgang klar: Der Sensor> erzeugt eine sägezahnförmige Schwingung, [...]> Man braucht also eine Art Filter, um dieses Problem zu unterdrücken.
Nein, man braucht keinen Filter. Sondern eine ausreichend hohe
Abtastrate (Nyquist), so wie Michael B. das schon geschrieben hat. Bei
digitalen Encodersignalen ist das im Prinzip nichts anderes.
Mit freundlichen Grüßen
Thorsten Ostermann
Christoph M. schrieb:> Ich verwende einen Sensor, der dem AS5600 ähnlich ist
Das ist ja nichtmal Salami, das sind Blutwurstscheiben. Die fake news
wirst du selber essen müssen.
>Nein, man braucht keinen Filter. Sondern eine ausreichend hohe>Abtastrate (Nyquist), so wie Michael B. das schon geschrieben hat.
Hast du dir meinen Screenshot oben angeschaut? Mit einer höheren
Abtastrate wird der Punkt in der Flanke nicht verschwinden, sondern es
werden mehr. Die höhere Abtastrate hat also eher einen gegenteiligen
Effekt und der Filter muss länger werden.
Christoph M. schrieb:> Hast du dir meinen Screenshot oben angeschaut? Mit einer höheren> Abtastrate wird der Punkt in der Flanke nicht verschwinden, sondern es> werden mehr.
Der Sensor wird nicht ohne Grund als "Position Sensor" und nicht als
Drehsensor vermarktet. Der soll ein Potentiometer ersetzen und darauf
ist die Signalverarbeitung und der Ausgang ausgelegt.
Für einen Drehsensor nimmt man nicht ohne Grund einen mit
Sin/Cos-Ausgang.
Christoph M. schrieb:> Ich verwende einen Sensor, der dem AS5600 ähnlich ist.
Und der wäre ...?
>Der Sensor wird nicht ohne Grund als "Position Sensor" und nicht als>Drehsensor vermarktet.
Seltsam .. und das obwohl sich über die zeitliche Veränderung der
Position die Geschwindigkeit der Drehachse eines Motors bestimmen lässt.
https://ams-osram.com/products/sensors/position-sensors
Du hast recht: Osram hat spezielle, schnelle Sensoren für die Bestimmung
einer kontinuierliche Rotation. Einen klaren Grund, warum der AS5600 für
Rotationen mit begrenzter Geschwindigkeit nicht geeignet sein soll, kann
ich nicht erkennen.
Bau Dir doch 2 übereinander, entweder gegeneinander verdreht oder
unterschiedlich programmiert, so dass die steile Flanke bei
verschiedenen Winkeln kommt.
Ich möchte ebenfalls diesen Sensor einsetzen und hätte eine Frage
abseits der Auswertung, die ich mit I2C machen möchte (was laut
Datenblatt geht):
Wie verbaue ich den Sensor zusammen mit dem Magneten so, dass ein
richtiges Poti daraus wird? Es ist mir bisher weder gelungen, ein fertig
gebautes Modul zum Einschrauben zu bekommen, noch Komponenten dafür zu
finden.
Es müsste eine Art einschraubare Spindel mit Gewinde sein, die (wie ein
konventionelles Poti) mit z.B. einer M10-Mutter im Gehäuse verschraubt
wird und unten den Magneten hat.
Wo bekommt man so etwas?
Martin K. schrieb:> Ich möchte ebenfalls diesen Sensor einsetzen und hätte eine Frage> abseits der Auswertung
Sinnvollerweise solltest du für eine neue, unabhängige Frage einen neuen
Thread beginnen. In deinem Fall wohl am besten im Mechanik-Unterforum.
Denn du hast ja offenbar kein elektronisches Problem.
Denn sonst liest jeder erst mal die alten Posts und denkt sich eine
Antwort dazu aus, um dann zum Schluss herauszufinden, dass es nun auf
einmal um ganz was anderes geht.