Was ist der Arduino-Encoder-Schnittstellenmodus?

2022-09-08
Encoder-Klassifizierung:

Entsprechend dem Arbeitsprinzip: photoelektrischer Typ, magnetoelektrischer Typ und Kontaktbürstentyp;

Je nach Graviermethode der Codescheibe: Inkrementaltyp und Absoluttyp;


Dies ist eine kurze Einführung aus dem Internet. Ich habe nur die kontaktiertArduinoEncoder, und die anderen wurden noch nicht verwendet.

Die Encoder von Arduino sind inkrementell. Es hat insgesamt 5 Adern.

Sie sind jeweils "CLK", "DT", "SW", "+", "GND".

„+“, „Masse“:

VCC und GND können natürlich mit VCC und GND der Platine verbunden werden.

„SW“:

Laut Arduino gibt der Pin nach einer Drehung des Knopfes ein Pegelsprungsignal aus, das dem „Z“-Signal entspricht, auf das der Drehgeber oft hinweist. Tatsächlich ist dieser, den ich gekauft habe, nur ein Schalter, das heißt, der Knopfteil kann ihn herunterdrücken (ähnlich wie der Lautstärkeregler an einem Auto), und die Schnittstelle erzeugt eine fallende Flanke. Dann führt die MCU die relevante Verarbeitung durch.

"CLK", "DT":

Die auf diesem Modul angezeigten Siebdrucknamen sind diese beiden. Ich verstehe nicht, warum dieser Siebdruck ist. Es sollte eigentlich den vom Encoder üblicherweise verwendeten "A"- und "B"-Signalen entsprechen. Die beiden Signale werden wie folgt erzeugt:

Was ist derArduino-EncoderSchnittstellenmodus

Was ist der Arduino-Encoder-Schnittstellenmodus?
positive Drehung

Wie in der Abbildung oben gezeigt, wechselt „A“ von niedrigem Pegel zu hohem Pegel, wenn der Knopf beginnt, sich vorwärts zu drehen, und „B“ bleibt unverändert; wenn der Knopf in die vorbestimmte Position gedreht wird, bleibt "A" auf hohem Pegel, und "B" folgt dann einem Übergang von niedrig nach hoch. Das heißt, bei Vorwärtsdrehung beginnt „A“ immer zuerst mit „B“ den Niveauwechsel.

Was ist der Arduino-Encoder-Schnittstellenmodus?
Verdrehsicherung

Rückwärtsdrehung: Im Gegensatz zur Vorwärtsdrehung beginnt „B“ den Niveauwechsel immer zuerst mit „A“.
Also hier, der Siebdruck, der diese beiden Drähte als "CLK", "DT" gedruckt hat, verwirrt mich ein wenig. Ich habe keine relevanten Informationen gefunden, also lege ich sie vorerst beiseite und werde wissen, warum, wenn sie das nächste Mal praktische Anwendung findet.

Gemäß dem obigen Vorwärtsdrehungs- und Rückwärtsdrehungsgesetz können die Drehrichtung des Codierers und sein Drehwinkel gemäß der von dem Codierer ausgegebenen Information bestimmt werden. Die spezifischen Methoden sind wie folgt:
Verbinden Sie "CLk" und "DT" mit einem beliebigen IO-Port der MCU mit externen Interrupts. Die Verarbeitungsmethode ist wie folgt:

Konfigurieren Sie die beiden IO-Ports als externe Doppelflanken-Interrupts.
Wenn einer der IO-Ports eine ansteigende Flanke oder eine abfallende Flanke erkennt, wird der Pegelzustand des anderen IO-Ports in der Unterbrechungsfunktion erkannt. Wenn man die Vorwärtsdrehung als Beispiel nimmt, verursacht die ansteigende Flanke von „A“ während der Vorwärtsdrehung zuerst eine Unterbrechung, und der erhaltene Pegelzustand von „A“ und „B“ ist „10“, und dann wird die ansteigende Flanke von „B " erkennt "A". ", "B"-Level-Status ist "11".
Wenn es weiter vorwärts läuft, ist der Pegelstatus von "A" und "B" "10 - 11 - 01 - 00 - 10 - ...".
Wenn es immer umgekehrt ist, ist der Pegelstatus von "A" und "B" "01 - 11 - 10 - 00 - 01 - ..."
Auf diese Weise kann die Drehrichtung des Codierers bestimmt werden, und nachdem der gleichzeitige Übergang von "A" und "B" abgeschlossen ist, kann die Umdrehungszahl des Codierers entsprechend der Drehrichtung des Codierers erhöht oder verringert werden.