3 Pin Encoder an Arduino

Hallo zusammen,
Ich bin aktuell dabei, zwei 3-Pin Drehgeber in mein Arduino Projekt zu implementieren.
Diese sollen später eine durch zwei Motoren erzeugte, lineare Bewegung synchronisieren.

Anders als „herkömmliche“ Encoder hat meiner lediglich nur einen Output Pin, auf dem je nach Drehung, prozentual von 10-90% die Spannung der Eingangsspannung (5V) anliegen.

Weiß jemand, ob es hierfür bereits eine fertige Library gibt?

Anbei die Logik als Bild.

Danke für eure Hilfe und viele Grüße
David

Klingt für mich nach Poti, nicht nach Encoder.
Läßt sich das Ding mehr als 270 Grad drehen oder ist da Schluss?

Zeig doch mal ein aussagefähiges Bild.

Das wird wohl der hier sein: siehe #5
https://wiki.keyestudio.com/Ks0014_keyestudio_Analog_Rotation_Sensor
Dazu bedarf es keiner lib.

1 Like

Danke für eure Antworten.
Es handelt sich um einen analogen Encoder des Herstellers Vishay.
Anbei zwei Fotos.


Der Encoder lässt sich endlos drehen (+360°)

Ich ziehe zurück.
Das ist ein Hallgeber.

Der hat nen PWM CW-Ausgang. Die 10-97% beziehen sich auf den Pegel des Signales ggü. Vsupply.
Typebezeichnung aufgelöst:
0 - Umlaufende Rotation ohne Anschlag
B - Genauigkeit +-0,5%
4 - Umalauf 360°
W - Mit Anschlüsse
A - Analog CW
Also doch Pegel direkt am AnalogPin auslesen.

1 Like

Danke für deine Mühe @my_xy_projekt !

Gibt es hierfür bereits eine Library? Ich konnte leider nichts finden.
Das Auslesen ist das eine, das Verarbeiten und somit Synchronisieren zweier Motoren, das andere…

Danke und Grüße

Ja, das sehe ich auch...
Du bräuchtest dann zwei von den Dingern und müsstest beiden jeweils einen AnalogPin spendieren.
Der analog hat eine Auflösung von 0-1023, davon gehen unten 10% und oben 10% weg. Bleiben Dir ca. 819 auswertbare Werte.
Bei 360° macht das ca. 0.5° ein neuer Wert.
Das dürfte reichen.
Also nur ne Funktion schreiben, das Du beide Analog ausliest und den Wert vergleichst und je nach Abweichung drauf reagierst.

Oder falsch verstanden was Du willst?

Danke für deine Hilfe. Genau so soll das dann am Ende aussehen.
Ich denke, dass ich das auch ohne Library geschrieben kriege.

Danke erneut! :slight_smile:

Willst Du sowas machen?

Die Leitspindel der Drehbank dreht sich proportional (mit einem Wählbaren Verhältnis) zum Backenfutter.

Grüße Uwe

1 Like

Hi Uwe,
so ähnlich soll das aussehen.
Im Detail geht es um eine Kleine Hebevorrichtung (ähnlich wie eine Scherenhebebühne).
Habe hierzu bisher leider keinen passenden Code gefunden.

Grüße
David

Was fehlt denn, was Du nicht selbst schreiben kannst?

Um ehrlich zu sein fehlt mir hier die Erfahrung, um überhaupt etwas brauchbares aufzustellen. Ich habe mich mal in die PID Thematik eingelesen aber komme nicht voran.

Ich habe es geschafft, die Encoder auszulesen und mir grafisch im Serial Plotter anzeigen zu lassen

Ich denke, die brauchst du auch nicht, wenn du zwei Motoren synchron laufen lassen willst und deren Bewegung aus den beschriebenen Analog-Gebern ermittelt wird.
Nehmen wir mal an, du hast es geschafft, beide Geber auszulesen und zu vergleichen.

Geht es jetzt darum, dass beide Motoren gleich weit drehen, oder um deren Drehgeschwindigkeit? Oder drehen sie mehrere Umdrehungen und du musst den blinden Fleck bei +-10 % (324° ... 36°) überbrücken?

Danke für deine Antwort.

Die Encoder werden über die Übersetzung keine gesamte Drehung ausführen. Der Blind Spot muss also nicht überbrückt werden.

Sie sollen den Ablauf regeln, dass die beiden Scheren in gleicher Geschwindigkeit verfahren und unter Berücksichtigung einer gewissen Toleranz, auch stetig auf selber Position bleiben. Die Motoren werden über ein Relais Board angesteuert.

Also nur vor/aus/zurück, und beide nur in die gleiche Richtung, bis beide am Ziel sind. Sehr einfach. Dazu hast du nur max. 819 Zielpositionen (1024*80%) , die du anfahren kannst.

Ich würde mal sagen, dass es per Relais sinnlos ist, bei ungleich schnellen Motoren den schnelleren stottern zu lassen, um den Unterschied auszugleichen. Lieber laufen sie nicht unbedingt auf die Zehntelsekunde gleich lang, bis sie jeweils am Ziel sind.

Genau, es ist nicht optimal aber das Niveau der Scheren sollte nicht allzu sehr voneinander wegdriften