Hallo, Ich habe ein Problem damit, meinen STEC12E08 Drehencoder auszuwerten. Ich habe ein ESP32 Board und Programmiere mit der Arduino IDE. Ich habe schon einige Libraries ausprobiert, jedoch scheint keine richtig zu funktionieren. Die bisher am Vielversprechenste ist diese hier: https://github.com/igorantolic/ai-esp32-rotary-encoder Jedoch wird bei mir immer nur zwischen zwei Werten gependelt, wenn ich das Beispielprogramm der Library auf das ESP32 lade. Ich habe auch einen Blick in diesen Artikel zu Drehencodern geworfen: https://www.mikrocontroller.net/articles/Drehgeber Hierbei ist mir nicht ganz klar wie beim letzten C-Code Beispiel die Tabelle zustande kommt. Mit einem Blick in den Code der oben angegebenen Library habe ich festgestellt, dass auch diese mit einer Tabelle arbeitet. Der Versuch, die Tabelle nach dem Artikel umzuändern schlug jedoch fehl, auch nachdem ich alle 1 und -1 vertauschte. Außerdem habe ich auch bereits (erfolglos) versucht, die Pins A und B beim initialisieren des Encoders zu vertauschen. Wie könnte ich mein Problem lösen? Mfg
Julian L. schrieb: > Ich habe ein Problem damit, meinen STEC12E08 Drehencoder auszuwerten. > Ich habe ein ESP32 Board und Programmiere mit der Arduino IDE. Alles klar. Hauptsache nicht selber denken müssen. Der Arduino-Schrott verspricht dir das, kann dieses Versprechen aber nicht wirklich halten. Ist im Prinzip genau so, wie den Senioren versprochen wird, dass sie auf Kaffee-Fahrten nur gewinnen können... > Wie könnte ich mein Problem lösen? Lerne DENKEN, ersetze den Encoder. Oder passe zumindest die Konfiguration der Lib an die tatsächlichen Fähigkeiten des Encoders an. Beides führt letztlich zum Ziel. Der Kernpunkt ist: SELBER DENKEN rules. Auch wenn immer wieder mal wer verspricht, dass es auch ohne dies geht. Immer genau dann sollte man sogar besonders vorsichtig werden... Erwachsenen, die noch nicht an Demenz leiden, sollte man sowas eigentlich auch nicht extra erklären müssen...
Julian L. schrieb: > Ich habe ein Problem damit, meinen STEC12E08 Drehencoder auszuwerten. > Ich habe ein ESP32 Board und Programmiere mit der Arduino IDE. Wie hast du ihn GENAU angeschlossen? Hast du externe oder interne Puul-Up widerstände drin? > Jedoch wird bei mir immer nur zwischen zwei Werten gependelt, wenn ich > das Beispielprogramm der Library auf das ESP32 lade. Das könnte ein Fehler beim Anschluß sein. Entweder fehlende Pull-Up Widerstände oder du hast Masse (COM) mit einem der Kanäle A oder B vertauscht, dann gibt es so einen Effekt. > Hierbei ist mir nicht ganz klar wie beim letzten C-Code Beispiel die > Tabelle zustande kommt. Durch die Auswertung der Codefolge beim Gray-Code. > festgestellt, dass auch diese mit einer Tabelle arbeitet. Der Versuch, > die Tabelle nach dem Artikel umzuändern schlug jedoch fehl, auch nachdem > ich alle 1 und -1 vertauschte. Ist Unsinn. Der Code funktioniert, der Fehler liegt in deinem Aufbau. > Außerdem habe ich auch bereits (erfolglos) versucht, die Pins A und B > beim initialisieren des Encoders zu vertauschen. > > Wie könnte ich mein Problem lösen? Mit einer systematischen Fehlersuche. Gib mal den Zustand deiner beiden Eingänge auf zwei andere Ausgänge mit LEDs aus. Halte den Encoder mit den Fingern sehr fest und drehe langsam. Dann musst du das bekannte Muster auf den LEDs sehen, das jeder Cray-Code macht. https://www.mikrocontroller.net/articles/Drehgeber#Funktion Sprich A geht auf HIGH B geht auf HIGH A geht auf LOW B geht auf LOW Und wieder von vorn. Oder das Ganze rückwärts. Wenn das nicht so ist, stimmt was mit der Verdrahtung nicht.
Julian L. schrieb: > Ich habe schon einige Libraries ausprobiert, jedoch scheint keine > richtig zu funktionieren. Trial & Error Dir ist schon klar, dass die Rastung von dem Teil unspezifisch nahe bei den Flanken des B-Kanals liegt? Der Algorithmus muss dazu passen.
Falk B. schrieb: > Wie hast du ihn GENAU angeschlossen? Hast du externe oder interne > Pull-Up widerstände drin? Ich habe externe Pull-Up Widerstände verwendet. Außerdem habe ich wie empfohlen noch einen Kondensator eingebaut um beim Entprellen zu helfen. Falk B. schrieb: > Das könnte ein Fehler beim Anschluß sein. Entweder fehlende Pull-Up > Widerstände oder du hast Masse (COM) mit einem der Kanäle A oder B > vertauscht, dann gibt es so einen Effekt. Die Verdrahtung habe ich schon überprüft, daran scheint es nicht zu liegen. Falk B. schrieb: > Durch die Auswertung der Codefolge beim Gray-Code. Ah, okay. Danke. Falk B. schrieb: > Ist Unsinn. Der Code funktioniert, der Fehler liegt in deinem Aufbau. Hatte ich mir gedacht, wollte es dennoch nicht unprobiert lassen. Falk B. schrieb: > Gib mal den Zustand deiner > beiden Eingänge auf zwei andere Ausgänge mit LEDs aus. Halte den Encoder > mit den Fingern sehr fest und drehe langsam. Ich schaue mal, ob ich kurz zwei LEDs auftreiben kann. Danke für die Hilfe!
Falk B. schrieb: > Gib mal den Zustand deiner > beiden Eingänge auf zwei andere Ausgänge mit LEDs aus. Halte den Encoder > mit den Fingern sehr fest und drehe langsam. Dann musst du das bekannte > Muster auf den LEDs sehen, das jeder Cray-Code macht. Ich habe mal zwei LEDs direkt angeschlossen und ein sehr unerwartetes Muster bekommen: A HIGH; B LOW Halfstep A LOW; B LOW Halfstep A HIGH; B LOW Halfstep A LOW; B LOW Muss wohl doch die Verdrahtung nochmal SEHR GENAU unter die Lupe nehmen.
Julian L. schrieb: > Falk B. schrieb: >> Wie hast du ihn GENAU angeschlossen? Hast du externe oder interne >> Pull-Up widerstände drin? > > Ich habe externe Pull-Up Widerstände verwendet. Außerdem habe ich wie > empfohlen noch einen Kondensator eingebaut um beim Entprellen zu helfen. Wenn Du die Signale A und B regelmässig pollst so im Bereich 1...2ms und in einer kleinen State-Maschine die Signale auswertest, dann braucht es keine Entprellung in Hardware und funktioniert einwandfrei. Eine Library kannst Du Dir sparen, da wir hier von einem Code in der Grössenordnung von ca. 5...10 Zeilen reden.
Julian L. schrieb: > Falk B. schrieb: >> Wie hast du ihn GENAU angeschlossen? Hast du externe oder interne >> Pull-Up widerstände drin? > > Ich habe externe Pull-Up Widerstände verwendet. Außerdem habe ich wie > empfohlen noch einen Kondensator eingebaut um beim Entprellen zu helfen. FALSCH! Denn damit schließen deine Kontakte im Drehgeber immer die voll geladenen Kondensatoren kurz, das erzeugt sinnlosen Verschleiß. Wenn schon Entprellen, dann richtig! Da muß ein Längswiderstand rein, so wie hier. https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster Das ist aber bei einem Drehgeber meistens nicht nötig, der Gray-Dekoder macht das automatisch. Nur in ganz schweren Fällen ist das nötig, dann ist aber meist der Drehgeber Schrott.
Falk B. schrieb: > Da muß ein Längswiderstand rein, so wie > hier. Genau so habe ich das auch angeschlossen, tut mir Leid wenn ich mich ungenau ausgedrückt habe. Ich habe auch nochmal die Verdrahtung unter die Lupe genommen, und es scheint hier keine Probleme zu geben. Falk B. schrieb: > Das ist aber bei einem Drehgeber meistens nicht nötig, der Gray-Dekoder > macht das automatisch. Nur in ganz schweren Fällen ist das nötig, dann > ist aber meist der Drehgeber Schrott. Also sollte ich es mal ohne Kondensator probieren? Im Datenblatt des Drehgebers sind Kondensatoren empfohlen, daher hatte ich sie mit dran gemacht.
Julian L. schrieb: > Ich habe auch nochmal die Verdrahtung unter die Lupe genommen, und es > scheint hier keine Probleme zu geben. Aber deine Codefolge stimmt nicht. > Also sollte ich es mal ohne Kondensator probieren? Nein, das ist schon OK. Wie groß sind denn deine Kondensatoren? Möglicherweise ist dein Drehgeber kaputt.
Falk B. schrieb: > Wie groß sind denn deine Kondensatoren? 0.01µF Falk B. schrieb: > Möglicherweise ist dein Drehgeber kaputt. Wäre nicht das erste Mal, dass ich kaputte Bauteile bekommen habe Falk B. schrieb: > Aber deine Codefolge stimmt nicht. Du meinst die Beobachtete oder die ich im tatsächlichen Code stehen habe? So oder so muss ich dir zustimmen. Die im Code werde ich aber noch beheben bevor ich den wieder nutze.
Julian L. schrieb: > Falk B. schrieb: >> Wie groß sind denn deine Kondensatoren? > > 0.01µF Aka 10nF, ist OK, wenn gleich sehr klein. >> Möglicherweise ist dein Drehgeber kaputt. > > Wäre nicht das erste Mal, dass ich kaputte Bauteile bekommen habe In welchem Ramschladen kaufst du denn? > Du meinst die Beobachtete Diese. >oder die ich im tatsächlichen Code stehen > habe? Woher soll ich das wissen, ich kenne die ja nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.