Drehencoder by ESPuino

Bestandsaufnahme

Jeder, der mal einen ESPuino aufgebaut hat, kennt bestimmt das Problem, dass das Anbinden des Drehencoders etwas frickelig ist. Grund: Üblicherweise sind Pinleisten schon beim Kauf eingelötet. Diese muss man also entweder auslöten und die Drähte stattdessen anlöten oder man lötet die fünf Drähte an die Pinleiste an. Weiterhin sind diese Pinleisten beim Einbau in’s Gehäuse mitunter mal im Weg, da der Kragen des Drehencoders relativ kurz ist. Ich habe jedenfalls bei meinen Holzgehäusen an dieser Stelle etwas Material wegfräsen müssen.

Vorteile

Ich habe aus diesem Grund bereits vor einer ganzen Weile „nackte“ Drehencoder bestellt und für diese nun eine Platine designed, die folgende Vorteile bietet:

a) Es ist ein JST-Anschluss vorhanden, so dass man keine Drähte mehr anlöten muss. Einfach anstecken und fertig.
b) Der JST-Anschluss geht nach unten weg, so dass er beim Einbau nicht im Weg ist.

Bilder

Da ich in Zukunft gerne weniger löten möchte, biete ich das Ganze nur als Bausatz an. D.h. es gibt eine Platine, auf der sind drei SMD-Widerstände vorgelötet. Dazu gibt es dann den Drehencoder und eine JST-Buchse. Das sind einfach nur Durchsteckteile (kein SMD!) - von daher keine allzu große Schwierigkeit. Die Anschlussleitung gibt’s natürlich immer dazu.

Lötvorgabe:

Der Drehencoder ist von der Seite aus durchzuführen, wo auch das Rechteck aufgedruckt ist und die JST-Buchse von der anderen Seite aus. Einfach immer merken:
:exclamation: Die Nummer, die man im Drehencoder-Rechteck sieht, muss am Ende durch den Drehencoder verdeckt sein. Und die JST-Buchse wird von der anderen (!) Seite aus angelötet. Hier gibt es ein kleines Rechteck, das ebenfalls verdeckt werden möchte. JST-Buchsen sind nicht symmetrisch, insofern würde falsches Einstecken dazu führen, dass das Rechteck nur halb verdeckt wäre. :exclamation:

Hier ein Bild, welches die Drehencoder-Platine von oben (links) und von unten (rechts) zeigt. SMD-Bestückung ist hier noch nicht drauf, was wird jedoch bei den Sachen, die ich rausschicke, der Fall sein.

Bausatz

So sieht dann der fertige Bausatz aus:

STEP-File

STEP-File; jedoch nur für die Basisplatine:
Basisplatine Drehencoder.step (467,8 KB)

Nachtrag 12/2023:
Ich habe den Drehencoder nun fest ins Programm aufgenommen und schicke nun auch „Drehregler-Kappen“ mit.

Ausblick

Ich habe davon jetzt erstmal 20 Stück hier und werde schauen, ob es dafür dauerhaft Interessenten gibt. Was bisweilen noch fehlt sind die hübschen „Drehregler-Kappen“, die man oben draufsteckt. Vielleicht habt ihr ja Vorschläge dazu.

8 „Gefällt mir“

Tolle Idee mit dem kleinen Board. Das Problem mit dem Platz kenne ich nur zu gut.
Als Kappe verwende ich jeweils (habe immer Holzgehäuse gebaut) einen Holzknopf für Schubladen. In der Regel ist dann da ein Messinggewinde eingelassen, welches mit etwas Kraft herausgezogen werden kann. Loch aufbohren und auf den Drehregler stecken. Sieht aus meiner Sicht elegant aus.

1 „Gefällt mir“

Gibt es dazu evtl. ein STEP oder DXF File? :smiling_face:

Dankeschön!

Also ich kann dir nur für die Platine ein STEP-File anbieten. Hilft dir das?

1 „Gefällt mir“

Alles gut…danke dir, hatte gehofft mir die Fummellei sparen zu können! :sweat_smile:

@biologist das STEP file würde ich schonmal nehmen. Was für ein Encoder ist das genau?

@Expello Hast du zufällig schon ein fertiges Model gebaut?

für 3D bin ich zu blöd…ich bau mir gerade die Skizzen zusammen und lass das dann CNC fräsen…

Hab’s verlinkt auf der Seite des Drehencoders.
Der Drehencoder selbst ist der hier. Ein EC11 also.

Danke.

hier mal ein quick and dirty 3D model:


Basisplatine Drehencoder v6.step (1,5 MB)
Basisplatine Drehencoder v6.f3z.txt (378,2 KB) (.txt entfernen für das Fusion 360 File)

4 „Gefällt mir“

Respekt…ich bewundere die Menschen die so gut mit Fusion 360 umgehen können!

Hi, einen Lautstärke unterschied konnte ich bis jetzt noch nicht feststellen. Aber mein Drehencoder ändert die luststärke erst nach mehrere positionen auf dem drehencoder und dann springt die lautstärke immer zwischen den werten hin und her, dabei drehe ich in eine richtung und habe dabei den drehencoder mehrmals um 360 gedreht.
Kennt jemand das Problem?

I [35149] Neue Lautstärke empfangen via Queue: 2
I [38701] Neue Lautstärke empfangen via Queue: 1
I [41418] Neue Lautstärke empfangen via Queue: 0
I [42819] Minimale Lautstärke bereits erreicht!
I [42844] Minimale Lautstärke bereits erreicht!
I [45539] Minimale Lautstärke bereits erreicht!
I [48988] Neue Lautstärke empfangen via Queue: 1
I [49696] Neue Lautstärke empfangen via Queue: 3
I [52413] Neue Lautstärke empfangen via Queue: 2
I [53121] Neue Lautstärke empfangen via Queue: 1
I [53980] Neue Lautstärke empfangen via Queue: 2

Du musst im Webinterface die max. Lautstärke anpassen. Ich habe im DEV-Branch kürzlich einen Commit gemacht, dass das künftig automatisch auf MAX steht. Weil da sind auch schon Andere drauf gestoßen.

2 „Gefällt mir“

Hi, die Lautstärke war tatsächlich schon auf max eingestellt. Das Verhalten wie iben beschrieben besteht weiterhin. Ich suche mal nach dem Thread den du erwähnt hast, eventuell sind da noch weitere Lösungsansätze.

Zusätzlich habe ich gesehen das DT und CLK auf der Platine des Encoders vertauscht sind. Ist das im Extender berücksichtigt? oder muss ich die Pins im Verbindungsstecker tauschen? beste Grüße

OK, dann habe ich das Problem falsch verstanden.
Ja, es gibt einen Bug bei Richtungsänderung. Da wird vermutlich irgendwas nicht richtig zwischengespeichert. In der Praxis drehen Kinder aber auch einfach am Drehencoder und hören wieder auf, wenn es laut genug ist. Von daher habe ich mir das bisweilen nicht näher angeschaut.

Die lange Story geht so:
Ich habe mich am Anfang für eine Drehencoder-Library entschieden und dabei festgestellt, dass die Drehrichtung nicht zu den Drehencodern passt, die man bei eBay, Amazon und AliExpress gemeinhin so kauft. Also habe ich halt jedem, der mit der Drehrichtung ein Problem hatte, gesagt, dass man wahlweise CLK und DT vertauscht (anders anlöten) oder eben REVERSE_ROTARY aktiviert. Da das Anlöten der Drähte lästig ist, habe ich irgendwann diese Platine hier entwickelt, so dass man einfach nur noch mit JST-Anschluss stecken muss. Fein. Ich habe diese Platine also entwickelt auf Basis eines Drehencoders, von dem ich irgendwann mal irgendwo 20 Stk bestellt hatte. Das war dann ok. Den alten Händler gab’s nicht mehr und so habe ich, nachdem die 20 Stk weg waren, woanders neue Drehencoder nachgeordert. Hier war jetzt die Drehrichtung anders und ich hab’s einmalig angepasst (Routing auf der Platine) + auch die Beschriftung geändert. War dann wieder ok. Ich habe weiterhin immer beim gleichen Händler bestellt und irgendwann hat sich einfach die Ware stillschweigend geändert. D.h. der Körper hatte etwas andere Maße und DT/CLK haben sich erneut geändert. Bemerkt habe ich das aber erst, als ich die Biobox designed habe und mich wunderte, warum der Drehencoder nicht passt.

TL;DR
Da bin ich jetzt an einem Punkt, wo ich sage: Boah, dann isses halt so! Das Vertauschen von DT/CLK macht nix kaputt, es führt einfach nur dazu, dass die Drehrichtung nicht stimmt. Um diese in Software umzukehren gibt es REVERSE_ROTARY. Es wäre aber auf jeden Fall probat, diese Einstellung möglichst bald in das Webinterface zu übernehmen, so dass man dafür nicht neu kompilieren muss. Andererseits ist es aber auch keine Einstellung, die man ständig ändern muss.

1 „Gefällt mir“

Hi das Problem mit der sprunghaften Lautstärke liegt anscheinend woanders. Ich habe den Drehencoder abgenommen. Das heißt die Ursache lst eine andere, hat jemand eine Idee? Zur Veranschaulichung ein kleines Video

Liebe Grüße

Hast du die Lötbrücken JP2 und JP3 gesetzt? Wenn ja: Auf was? Am besten mal Bilder zeigen.

Ansonsten bitte mal die Änderungen der settings.h und …sdmmc_pe.h zeigen, die vom Standard abweichen.

Jp 2 und jp3 sind bei beiden die Brücken 2+3 geschlossen

Die settings werde ich heute Abend erst uploaden können

Das sollte 1+2 sein, so dass GPIOs und nicht der Port-Expander benutzt wird. Oder hast das absichtlich so konfiguriert?

Ach verdammt :sweat_smile:, danke dir. Ich sollte besser lesen. Ich war automatisch davon ausgegangen das der Drehencoder auf dem extender liegt. Danke dir für den Tipp. Ich löten den eben um und melde mich obs funktioniert. Danke dir schon mal

An für sich ist das auch so vorgesehen, aber dafür musst du einerseits die Config anpassen. Andererseits wird der PE nicht schnell genug ausgelesen, so dass das nicht gut funktioniert.