[erledigt] Drehgeber-Tutorial?

Hallo allerseits!

Die Teile für mein „Oszi für arme“-Projekt sind heute angekommen. Darunter befindet sich auch ein Drehgeber mit Taster. Mit Tastern komme ich zurecht, aber mit Drehgebern hatte ich bisher nicht zu tun. Hier im Forum habe ich schon einiges gelesen, bräuchte aber Beispielcode, den ich auseinanderpflücken könnte (diese Art von Auswertung ist mir bislang noch nie begegnet).

Kann jemand helfen?

Gruß

Gregor

PS: Drehgeber ist dieser hier.

Das lässt sich sehr einfach auf den Arduino anpassen:
https://www.mikrocontroller.net/articles/Drehgeber#Solide_L.C3.B6sung:_Beispielcode_in_C

Musst aber einen anderen Timer als Timer0 nehmen! z.B. Timer2. Und die Timer-Register sind auf dem Atmega328 leicht anders als bei dem alten Prozessor in dem Beispiel.
Also alle 1 oder 2ms einen Timer-Interrupt auslösen und darin den Encoder abfragen. Dann kann man diese Variable in loop() beliebig schnell auslesen.

Das hat auch den Vorteil dass man sehr schnell mehrere Encoder auslesen kann. Anders als wenn man dafür externe Interrupts verwendet, bei denen jeder Encoder den Prozessor belastet

Für einen einzelnen Encoder bin ich damit gut gefahren.

Gruß Tommy

Danke Euch!

Gruß

Gregor

Auch ich möchte mich für die Beiträge bedanken :slight_smile:

Als Anfänger stehen die Drehimpulsgeber zwar noch auf einer weit entfernten Liste, aber ich versuche mich ja weiterzubilden.

Danke

Gruß

MiReu

Nur der Vollständigkeit halber: bei Drehgebern empfehlen die Hersteller oft eine hardware-seitige Entprellung / Filterung mit RC-Gliedern. Sind die Drehgeber nicht entsprechend "präpariert", klappen die beschriebenen einfachen Skripte oft nicht zuverlässig. Die Software ist also nur die halbe Miete.

Das ist in den Beschreibungen von Nick Gammon mit drin.

Gruß Tommy

Hallo,

die muss man nicht hardwaremäßig entprellen, wenn man das macht wie Peter Dannegger. Seinen Code habe ich auch als Basis genommen und zum verstehen auseinander genommen was er wie macht. Der Code ist rüttelfest, kannste glauben. Allerdings polle ich das Ganze. Ich frage nicht Timer genau ab. Im Grunde wie Taster abfragen.

Schau dir diese an, habe 2 davon in Verwendung und bin begeistert:

Zeigt her eure geilen Projekte ! #381

Gruß

ich wollte jetzt nicht extra Werbung dafür machen :wink:

mgcss:
Nur der Vollständigkeit halber: bei Drehgebern empfehlen die Hersteller oft eine hardware-seitige Entprellung / Filterung mit RC-Gliedern. Sind die Drehgeber nicht entsprechend "präpariert", klappen die beschriebenen einfachen Skripte oft nicht zuverlässig. Die Software ist also nur die halbe Miete.

Das hatte ich Gregor schon empfohlen, und die Kondensatoren sind in seinerm Schaltbild ja auch schon drin.

MicroBahner:
Das hatte ich Gregor schon empfohlen, und die Kondensatoren sind in seinerm Schaltbild ja auch schon drin.

Und sie liegen hier auch schon herum. Und sie würden garantiert schon arbeiten, wenn mich diese $UNFEINESWORT-Hitze nicht so plätten würde.

Gruß

Gregor

MicroBahner:
Das hatte ich Gregor schon empfohlen, und die Kondensatoren sind in seinerm Schaltbild ja auch schon drin.

Ich glaube nicht, dass jeder, der diese Diskussion hier liest auch die "Ursprungsdiskussion" verfolgt (ich übrigens auch nicht) und zum zweiten reichen Kondensatoren alleine nicht. Diese führen vielmehr sogar zu einem erhöhten Kontaktverschleiß. Deshalb wird für die Entprellung eine RC Kombination genommen, bei der wichtig ist, dass der Widerstand vom Kontakt aus gesehen vor dem Kondensator kommt um den Strom zu begrenzen, der beim Schalten durch den Encoder fließt.

Genau so wird es auch in den meisten Datenblättern empfohlen ... und das aus gutem Grund.

mgcss:
... und zum zweiten reichen Kondensatoren alleine nicht. Diese führen vielmehr sogar zu einem erhöhten Kontaktverschleiß. Deshalb wird für die Entprellung eine RC Kombination genommen, bei der wichtig ist, dass der Widerstand vom Kontakt aus gesehen vor dem Kondensator kommt um den Strom zu begrenzen, der beim Schalten durch den Encoder fließt.

Genau so wird es auch in den meisten Datenblättern empfohlen ... und das aus gutem Grund.

Na, da kann ich ja von Glück reden, dass ich meine Schaltung noch nicht aufgebaut und 10 k-Widerstände en masse hier herumliegen habe :slight_smile:

Dass mich diese $SCHLIMMES_WORT-Hitze dermaßen plätten würde, hätte ich nicht gedacht.

Gruß

Gregor

Hallo,

wie gesagt, man benötigt keine zusätzliche RC Entprellung. Macht ihr doch bei anderen Tastern und Schaltern auch nicht. Warum hier dieser unnötige Aufwand?

Inkrementalgeber lösen viel öfter aus als ein einfacher Taster. Vor allem wenn man sie verwendet um Drehzahlen zu messen. Vor allem wenn man externe Interrupts verwendet ist das angebracht

Hallo,

darf ich einen Einwand äußern? Wenn man mit sowas Drehzahlen messen möchte, nimmt man keine mechanische sondern optische. Der Verschleiß wäre ansonsten viel zu hoch und das entprellen eh zu langsam. Zudem scheinst du doch den Code von Peter Dannegger zu kennen. Dann solltest du doch wissen das dem nichts erschüttert.

Auch die Auswertung unterscheidet sich für einen Incrementalgeber zur Drehzahl/Positionsmessung oder einem für die manuelle Eingabe. Bei der Drehzal/Positionsmessung möchte ich die maximale Auflösung. Die manuellen haben alle Raststellungen, und da interessiert nur die Drehung von Raste zu Raste (=1Step). Dazwischen brauche ich keine Auflösung der Zwischenzustände.

Doc_Arduino:
... Macht ihr doch bei anderen Tastern und Schaltern auch nicht. ...

Äh ... ja ... äh ... ich werde die beiden Kondensatoren und Widerstände wieder aus meinem Schaltplan entfernen. Für das, was bei Elektronikern intuitiv funktioniert, muss ich noch richtig denken. Das funktioniert nicht immer :slight_smile:

Gruß

Gregor

Hallo Gregor,
Du merkst schon das prinzipielle Problem, wenn man um Rat fragt :wink: :
Frage 10 Experten, und Du bekommst (mindestens) 11 verschiedene Ratschläge 8)