KY-040 Rotary Encoder funktioniert nicht (Hardware-/Softwareversion von Freddy)

Ich habe vor ein paar Tagen mit dem Zusammenbau meines Hanimandl begonnen und mitlerweile auch alles zusammen. Seid 3 Tagen versuche ich den Rotary Encoder zum laufen zu bringen der nach einer weile einfach aussteigt. Nach dem Start funktioniert er meist problemlos, aber nach einigen Minuten scheint es so, als hinge er zwichen zwei Werten fest.

Ich habe zuerst alle Verbindungen geprüft und danach auch Kabel und Stecker erneuert. Habe den ESP mehrfach neu geflasht mit der version hani_mandl_esp_V2.ino. In einem anderen Script für das HELTEC Modul habe ich eine Änderung gefunden wo

//if (rotating) delay (1); //wait a little until the bouncing is done

ausgeklammert wurde. Aber auch das blieb ohne Erfolg. In einem anderen Beitrag habe ich was davon gelesen, dass ein 470nF Kondensator am Rotary zwichen CLK und GND eventuel was bringt.

#define ROTARY_SCALE 2 habe ich auch mal auf 1 gesetzt.

Ich habe auch alle 3 Rotary Encoder ausprobiert die hier in der Packungseinheit waren, habe einen anderen ESP WROOM 32 verwendet, dann noch mal eine ältere Version von dem ESP WROOM 32 mit micro USB Anschluss (der zuerst verwendete war eine neuere Version mit Typ C Anschluss).

Aber mitlerweile bin ich einfach mit meinem Latein am Ende. Ich kenne mich als gelernte Mechatronikerin zwar gut mit dem Zusammenbau der Hardware aus, allerdings kann ich mit solchen Skripten wenig anfangen leider.

1 Like

Ich hätte jetzt vorgeschlagen die binary-Version des codes zu verwenden: Wie bekomme ich am einfachsten die HaniMandl-Software aufs Board? oder binary-Datei mit Espressif-Tool flashen damit hätten wir zumindest einen definierten Software-Stand und könnten dann weiter schauen, aber du verwendest keinen Heltec, sondern einen anderen ESP, und damit sicher auch andere pins, oder?

Wir hatten tatsächlich mit dem Übergang von der V2 zur V3 des Heltecs, genauer gesagt mit der nun notwendigen Verwendung des Arduino ESP32 core ≥ 2.0 Probleme mit dem Encoder, siehe:

Ich vermute irgendwelche Probleme beim ISR handling und unserem code in Wechselwirkung mit dem verwendeten Arduino ESP32 core, wie hier gut beschreiben. Ggf. könntest du versuchen einen älteren Arduino ESP32 core zu verwenden.

Wenn der Encoder allerdings am Anfang geht, dann nicht mehr, würde ich auch etwas elektronisches / mechanisches in Betracht ziehen. Wenn du allerdings schon drei KY-040 probiert hast …

Das hattest du glaube ich schon entdeckt: Probleme mit dem KY-040 rotary encoder: Gewicht springt auf Werte ausserhalb der 5 g-Schritte - #23 by Andreas

2 Likes

Mit dem Espressif Tool habe ich es mehrfach nach der Anleitung von der Hanimandl Homepage versucht, dass hat aber leider gar nicht geklappt. Danach Zeigt der Display zumindest nichts an.

Ich habe mich an dieser Anleitung/Schaltplan orientiert.

Hier ist mal der Amazon Link von meinem verwendeten ESP
https://amzn.eu/d/iCfFqXN

und hier von den Rotery Encodern
https://amzn.eu/d/adSzxMK

Den Artikel

hatte ich auch schon komplett durchstöbert, daher kam auch die Idee mit dem 470nF Kondensator zwichen CLK und GND. Das hat aber leider auch nicht geholfen.

bei der esp32 Bibliothek von Espressif kann ich auch nur version 1.0.6 Stabiel verwenden. Bei höheren versionen, bzw der Aktuellen 2.0.11 habe ich nur Balken auf dem Display aber keine Anzeige.

Zur Not muss ich mir wirklich noch einen Heltec V3 bestellen und das alles wieder umbauen. Nur ich dachte die Version mit dem 2.4" Display gefällt mir eigendlich ganz gut und bin halt im Netz über den Plan auf GitHub gestolpert.

1 Like

Ich habe hier noch mal den Github Link an dem ich mich Orientiert habe. Da ist genau der verwendete Schaltplan und auch die verwendete Software drin.

1 Like

Nach einiger Tüftelei habe ich eine Lösung gefunden. Pin 26 am ESP macht die Probleme, daran angeschlossen war DT des Rotary Encoders. Ich habe die Pinbelegung dager wie folgt geändert, Pin 33 CLK, Pin 32 DT und Pin 26 SW. Nun machte der Schalter Probleme was meine vermutung noch bestätigte. Zwar ist Intern das ganze als Pull Up gesetzt und es kommen auch 3,3V an, allerdings erkennt er irgendwie das Eingangssignal nicht.

Auf der Suche nach einem geeigneten Pin bin ich dann auf Pin 35 gekommen, dieser hat zwar keine internen Pull Up oder Pull Down Wiederstände und ist ein reiner Eingang, aber dass passt ja für meinen Fall. Denn am Rotary sind ja 10k Ohm Pullup Wiederstände für CLK, DT und SW verbaut (Ich habe gesehen das es auch Versionen gibt wo bei SW der Wiederstand fehlt).

Also habe ich jetzt:

CLK auf Pin 33
DT auf Pin 32
SW auf Pin 35

Und Schwups, alles Funktioniert Wunderbar :smiley:

2 Likes

Ah, jetzt wird einiges klar, du hast einen fork der HaniMandl-Software verwendet, ich bin davon ausgegangen, dass du “unsere” Software von GitHub - hiveeyes/hanimandl: HaniMandl ist ein halbautomatischer Honig-Abfüll-Roboter. verwendest.

Dann bitte mit Supportanfragen an Freddy wenden. Ich sehe hier schon etwas: Rotary Encoder Probleme · Issue #2 · Freddy3108/HaniMandl-3.0 · GitHub

Das kann dann nicht funktionieren, da unsere binary ja a) für den Heltec compiliert wurde und vermutlich (habe ich jetzt nicht nachgeprüft) b) die pin-Zuordnung ja auch eine andere ist.

Aber prima, dass du die Sache nun zum Laufen bekommen hast!