super VIDEO - FRAGE: wenn nun 16 Drehgeber stÃĪndig "gleichzeitig" ausgewertet werden sollen, werden dann entsprechend 16 einzelne Interrupts im Programm benÃķtigt, oder kann man das auch multiplexen? beste GrÞÃe,
Super! Ich hab hier einen Drehgeber mit 1000 Strichen, den ich fÞr eine Bohrtiefenanzeige an meiner Tischbohrmaschine verwursten will und bin nicht so der Programmier-Held. Hast Du sehr gut erklÃĪrt, wie man die Signale auswertet. Danke dafÞr.
erstmal wÞnsch ich dir ein frohes neues jahr =) vielen dank, dass du so schnell auf meinen wunsch eingegangen bist (y) das ist ein richtig tolles und sehr sehr einfaches umsetzen! was ich da so im inet gefunden habe, mit zig librays und zusÃĪtzlichen, nicht erklÃĪrten befehlen und und und.... einfach super und einfach umzusetzen =)
Hi Pierre, vielen Dank! Ja, mit Hardware kann man viel vorab regeln. Wenn der Kondensator nicht reicht, kann man noch nen Widerstand zwischen Kondensator und ÂĩC packen. Oder dann halt doch im Zweifel noch Software-Entprellen.
Hallo HaJo, ich habe wie einige hier das Problem, dass der Drehgeber an meinem (Wemos) D1 Mini ein wenig hÞpft, wenn ich Kondensatoren zwischen schalte (10Âĩf und 100Âĩf) wird es aber nicht besser, sondern noch schlimmer. Die Verkabelung sieht folgendermaÃen aus (ich bin mir nicht sicher ob sie stimmt): Drehgeber -> D1 Mini CLK -> D6 (gpio_12) DT -> D7 (gpio_13) SW -> nicht angeschlossen GND -> G + -> 5V Alles wird Þber den USB-Port meines PCs befeuert. Der Sketch ist genau wie der von dir, habe nur deine "2" durch meine "13" und deine "3" durch meine "12" ersetzt. Wenn du oder iregendjemand mir helfen wÞrde, wÃĪre das super :) P.S.: Was tun die eigentlich die einzelnen Pins genau? Gerade der der Sinn des "SW" hat sich mir noch nicht erschlossen... edit: OK, man kann den auch drÞcken, so erklÃĪrt sich der SW pin...
eHaJo danke fÞr das Þbersichtliche Video. Ich benÞtze einen KY040 Drehregler um die LautstÃĪrke beim Raspberry PI 2 zu regulieren und habe diesen wie folgt angeschlossen: GPIO 5 (Pin 29) CLK GPIO 6 (Pin 31) DT GPIO 13 (Pin 33) SW 3.3V (Pin 1) + GND (Pin 6) GND WiederstÃĪnde habe ich keine dazwischen. Der Drehregler funktioniert zwar, springt aber immer unkontroliert umher. Kannst du mir sagen, zwischen welche AnschlÞsse ich nun die Kondesatoren hÃĪngen muss und ob ich noch WiederstÃĪnde (wenn ja, welche) brauche? Vielen Dank
@@eHaJo Servus, kÃķnntest Du einem Laien kurz erklÃĪren was damit gemeint ist? Ich verstehe nicht wie ich CLK + DT mit GND verbinden soll. Diese gehen bei mir direkt auf die GPIO Pins. Wie bei Simon geht GND direkt auf GND vom HifiBerry / Raspberry. Soll man nun von CLK -> Kondensator -> GND? Dann frage ich mich wie das Signal ankommen soll, da es ja nur im GND "landet" oder wie ist das gemeint? Sorry, bin absoluter Neuling und hab praktisch Þberhaupt keine Ahnung. Der Regler soll als LautstÃĪrkeregler fÞr Volumio eingesetzt werden. Danke und Ciao
Hab' gerade vor kurzem ein Poti mit einem Inkrementalgeber ersetzt (und ein DS1882 als elektronisches Poti) - und damit dann eine Infrarotfernbedienung fuer die ganze Sache gebaut. Auf github hzeller/DerKnopf.
Ich habe eine Mikrowelle und da spinnt der Regler auch. Das heiÃt also das nicht unbedingt der Inkrementalgeber kaputt sein muss sondern die GlÃĪttungskondensatoren.
Obwohl das Auslesen solch eines Gebers sehr einfach ist, schaffen es einige Oszi-Hersteller (z.B. Owon) nicht, dies vernÞnftig in den GerÃĪten zu implementieren. Es kommt dann dazu, das beim Drehen die Einstellungen entweder gar nicht, sprunghaft oder in die falsche Richtung gehen.
Also ich habe angefangen mit Visual Code zu programmieren und das geht viel schneller . Habe auch noch ein kleines Programm geschrieben was mir erlaubt das ich das Programm direkt auf denn Arduino spielen kann . Es geht zwar genauso schnell aber in Visual Code kann man deutlich besser programmieren.
Ein Heimkino Freund Programmiert in Visual Studio, und hat sich jetzt einen Arduino zugelegt, da Seine Harmony Fernbedienung nicht alles kann hat er zum Arduino gegriffen der Diverse Steueraufgaben Þbernimmt die er per IR Signalcode dann ausfÞhrt, z.b. Funk Steckdose, Philips HUE oder auch den VerstÃĪrker schaltet fÞr den KÃķrperschall Wandler Da er Besten mit Visual Studio vertraut ist, auch Vom Job her Damit Arbeitet, es die Arduino IDE dafÞr gibt sich die Arduino eigene IDE Anwendung sparte.
Die erklÃĪrte Logik nach Minute 12:00 verstehe ich nicht. Du erklÃĪrst, dass, "wenn beide Pegel low sind, dass du dann gegen den Uhrzeigersinn gedreht hast". Auch in der Sequenz, wo du in der Software den Drehregler betÃĪtigst benutzt du eine identische Formulierung. Aber nach meiner Auffassung fehlt bei deiner Auswertung ein Teil der Aussage. Nicht der Pegel, der an beiden Pins gleichzeitig den gleichen Wert (hier low) hat, ist entscheidend fÞr die Drehrichtung, sondern: wer ist zuerst niedrig oder hoch gewesen, sonst kannst du die Richtung nicht bestimmen, sondern nur, dass Þberhaupt gedreht worden ist. Du meinst sicherlich das richtige und die Bilder unterstÞtzen deine Worte, aber die Aussage alleine ist unvollstÃĪndig
Er hat das falsch erklÃĪrt. Man muss nur die steigende Flanke eines Signals detektieren. Dann sind bei einer Drehrichtung die Signale gleich, bei der Anderen ungleich. Wenn man die steigende und fallende Flanke detektiert sind die Signale immer unterschiedlich. Der Code funktioniert nur zufÃĪllig durch die Entprellroutine.
@@Netsroht72 gleiche Richtung und entgegengesetze Richtung klingen schon besser, als rechts und links das mit dem Zufall und dem Entprellen verstehe ich - mindestens jetzt - nicht
Die Entprellroutine wird ja nicht gezeigt. Ich kann daher nur vermuten, dass die steigende Flanke korrekt detektiert wird, bei der fallenden Flanke, die eigentlich nicht ausgewertet werden darf, so lange gewartet wird, dass das Ergebnis wieder korrekt ist. Eigentlich dÞrfte sein Code nicht funktionieren, da die Signale ja Phasenverschoben (im Idealfall 90 Grad) sind, die Signale also definitionsgmÃĪà unterschiedlich sind, wenn man beide Flanken detektiert. So versteh ich es zumindest. Beim AVR kann man einstellen ob bei steigender, fallender oder beides ein Interrupt ausgelÃķst wird. Beim Arduino werden, glaube ich, standartmÃĪÃig immer beide Flanken ausgewertet.
@@Netsroht72 hmmpf, da bin ich auÃen vor. Zum Entprellen gibt es immerhin einen Teil eines talks beim ccc, der sich seine Tastatur selbst gebaut hat und auf Performance getrimmt hat... mit USB
super VIDEO - FRAGE: wenn nun 16 Drehgeber stÃĪndig "gleichzeitig" ausgewertet werden sollen, werden dann entsprechend 16 einzelne Interrupts im Programm benÃķtigt, oder kann man das auch multiplexen? beste GrÞÃe,
Richtig starkes Video! Toll erklÃĪrt, vor allem die Signalauswertung, dass daraus resultierende Entprellen und die Richtungsanalyse. Mega!
8:25 ð
SchÃķnes Video, vor allem die sehr gute Bild in Bild Technik macht das Video sehr informativ und angenehm anzuschauen!
Hi Ralf, vielen Dank! Ja, Bild in Bild ist super und geht dank OBS sehr gut!
Super! Ich hab hier einen Drehgeber mit 1000 Strichen, den ich fÞr eine Bohrtiefenanzeige an meiner Tischbohrmaschine verwursten will und bin nicht so der Programmier-Held. Hast Du sehr gut erklÃĪrt, wie man die Signale auswertet. Danke dafÞr.
Sehr gut erklÃĪrt, vielen Dank!
Hallo eHaJo, super erklÃĪrt. Bitte mehr von diesen Videos. Danke und dicker Daumen nach oben.
Vielen Dank Markus!
erstmal wÞnsch ich dir ein frohes neues jahr =)
vielen dank, dass du so schnell auf meinen wunsch eingegangen bist (y) das ist ein richtig tolles und sehr sehr einfaches umsetzen! was ich da so im inet gefunden habe, mit zig librays und zusÃĪtzlichen, nicht erklÃĪrten befehlen und und und....
einfach super und einfach umzusetzen =)
Hi Pierre, vielen Dank! Ja, mit Hardware kann man viel vorab regeln. Wenn der Kondensator nicht reicht, kann man noch nen Widerstand zwischen Kondensator und ÂĩC packen. Oder dann halt doch im Zweifel noch Software-Entprellen.
Sehr anschaulich erklÃĪrt. :) Danke
Hallo HaJo,
ich habe wie einige hier das Problem, dass der Drehgeber an meinem (Wemos) D1 Mini ein wenig hÞpft, wenn ich Kondensatoren zwischen schalte (10Âĩf und 100Âĩf) wird es aber nicht besser, sondern noch schlimmer. Die Verkabelung sieht folgendermaÃen aus (ich bin mir nicht sicher ob sie stimmt):
Drehgeber -> D1 Mini
CLK -> D6 (gpio_12)
DT -> D7 (gpio_13)
SW -> nicht angeschlossen
GND -> G
+ -> 5V
Alles wird Þber den USB-Port meines PCs befeuert.
Der Sketch ist genau wie der von dir, habe nur deine "2" durch meine "13" und deine "3" durch meine "12" ersetzt.
Wenn du oder iregendjemand mir helfen wÞrde, wÃĪre das super :)
P.S.: Was tun die eigentlich die einzelnen Pins genau? Gerade der der Sinn des "SW" hat sich mir noch nicht erschlossen...
edit: OK, man kann den auch drÞcken, so erklÃĪrt sich der SW pin...
Exzellent.
eHaJo danke fÞr das Þbersichtliche Video.
Ich benÞtze einen KY040 Drehregler um die LautstÃĪrke beim Raspberry PI 2 zu regulieren und habe diesen wie folgt angeschlossen:
GPIO 5 (Pin 29) CLK
GPIO 6 (Pin 31) DT
GPIO 13 (Pin 33) SW
3.3V (Pin 1) +
GND (Pin 6) GND
WiederstÃĪnde habe ich keine dazwischen. Der Drehregler funktioniert zwar, springt aber immer unkontroliert umher. Kannst du mir sagen, zwischen welche AnschlÞsse ich nun die Kondesatoren hÃĪngen muss und ob ich noch WiederstÃĪnde (wenn ja, welche) brauche?
Vielen Dank
Probier mal 100nF zwischen CLK und GND und zwischen DT und GND.
Vielen Dank, ich probiers gerne mal aus.
Grossartig! Jetzt treten die unkontrollierten SprÞnge nur noch selten auf. Vielen Dank fÞr die Fernheilung.
@@eHaJo Servus, kÃķnntest Du einem Laien kurz erklÃĪren was damit gemeint ist? Ich verstehe nicht wie ich CLK + DT mit GND verbinden soll. Diese gehen bei mir direkt auf die GPIO Pins. Wie bei Simon geht GND direkt auf GND vom HifiBerry / Raspberry. Soll man nun von CLK -> Kondensator -> GND? Dann frage ich mich wie das Signal ankommen soll, da es ja nur im GND "landet" oder wie ist das gemeint? Sorry, bin absoluter Neuling und hab praktisch Þberhaupt keine Ahnung. Der Regler soll als LautstÃĪrkeregler fÞr Volumio eingesetzt werden. Danke und Ciao
On my encoder are the following pins:
GND = Ground
+ = 5Volt
SW
DT
CLK
Do you know, what the last three pins are for???
SW stands for an internal switch, whitch get activated by pushing the shaft of the encoder.
DT (data) and CLK (clock) are the two Signals A and B.
Hab' gerade vor kurzem ein Poti mit einem Inkrementalgeber ersetzt (und ein DS1882 als elektronisches Poti) - und damit dann eine Infrarotfernbedienung fuer die ganze Sache gebaut. Auf github hzeller/DerKnopf.
Ich habe eine Mikrowelle und da spinnt der Regler auch. Das heiÃt also das nicht unbedingt der Inkrementalgeber kaputt sein muss sondern die GlÃĪttungskondensatoren.
also ich wÞrde nem mechanischem bauteil weit weniger trauen als nem passiven elektrischen.
@@eHaJo NatÞrlich. Am Ende ist es nur Dreck. Aber das die MÃķglichkeit bestehen kÃķnnte, war jedenfalls sehr interessant.
Obwohl das Auslesen solch eines Gebers sehr einfach ist, schaffen es einige Oszi-Hersteller (z.B. Owon) nicht, dies vernÞnftig in den GerÃĪten zu implementieren. Es kommt dann dazu, das beim Drehen die Einstellungen entweder gar nicht, sprunghaft oder in die falsche Richtung gehen.
Ja, so ein Kondensator kostet halt extra Geld und Software-Entprellen funktioniert auch nicht immer zuverlÃĪssig
Drehencoder verschleiÃen auch mit der Zeit. ;)
Es gibt auch optische und magnitische inkrementalgeber. Da fÃĪllt das Prellen weg.
Die muss man sich aber erst mal leisten kÃķnnen! vor allem ist die Beschaltung wegen Durchlichtschranke etc komplizierter
warum nutzt du noch die ArduinoIDE ?
weil es damit verdammt schnell und einfach geht, ein programm zu erstellen.
Also ich habe angefangen mit Visual Code zu programmieren und das geht viel schneller . Habe auch noch ein kleines Programm geschrieben was mir erlaubt das ich das Programm direkt auf denn Arduino spielen kann . Es geht zwar genauso schnell aber in Visual Code kann man deutlich besser programmieren.
Ein Heimkino Freund Programmiert in Visual Studio, und hat sich jetzt einen Arduino zugelegt, da Seine Harmony Fernbedienung nicht alles kann hat er zum Arduino gegriffen der Diverse Steueraufgaben Þbernimmt die er per IR Signalcode dann ausfÞhrt, z.b. Funk Steckdose, Philips HUE oder auch den VerstÃĪrker schaltet fÞr den KÃķrperschall Wandler
Da er Besten mit Visual Studio vertraut ist, auch Vom Job her Damit Arbeitet, es die Arduino IDE dafÞr gibt sich die Arduino eigene IDE Anwendung sparte.
@@hannhank mit Visual Code meinst du VisualStudio? Und was ist das fÞr ein Programm, mit dem du den Code auf den Arduino spielst?
Die erklÃĪrte Logik nach Minute 12:00 verstehe ich nicht. Du erklÃĪrst, dass, "wenn beide Pegel low sind, dass du dann gegen den Uhrzeigersinn gedreht hast".
Auch in der Sequenz, wo du in der Software den Drehregler betÃĪtigst benutzt du eine identische Formulierung.
Aber nach meiner Auffassung fehlt bei deiner Auswertung ein Teil der Aussage. Nicht der Pegel, der an beiden Pins gleichzeitig den gleichen Wert (hier low) hat, ist entscheidend fÞr die Drehrichtung, sondern: wer ist zuerst niedrig oder hoch gewesen, sonst kannst du die Richtung nicht bestimmen, sondern nur, dass Þberhaupt gedreht worden ist.
Du meinst sicherlich das richtige und die Bilder unterstÞtzen deine Worte, aber die Aussage alleine ist unvollstÃĪndig
Er hat das falsch erklÃĪrt. Man muss nur die steigende Flanke eines Signals detektieren. Dann sind bei einer Drehrichtung die Signale gleich, bei der Anderen ungleich. Wenn man die steigende und fallende Flanke detektiert sind die Signale immer unterschiedlich.
Der Code funktioniert nur zufÃĪllig durch die Entprellroutine.
@@Netsroht72 gleiche Richtung und entgegengesetze Richtung klingen schon besser, als rechts und links
das mit dem Zufall und dem Entprellen verstehe ich - mindestens jetzt - nicht
Die Entprellroutine wird ja nicht gezeigt. Ich kann daher nur vermuten, dass die steigende Flanke korrekt detektiert wird, bei der fallenden Flanke, die eigentlich nicht ausgewertet werden darf, so lange gewartet wird, dass das Ergebnis wieder korrekt ist. Eigentlich dÞrfte sein Code nicht funktionieren, da die Signale ja Phasenverschoben (im Idealfall 90 Grad) sind, die Signale also definitionsgmÃĪà unterschiedlich sind, wenn man beide Flanken detektiert.
So versteh ich es zumindest.
Beim AVR kann man einstellen ob bei steigender, fallender oder beides ein Interrupt ausgelÃķst wird. Beim Arduino werden, glaube ich, standartmÃĪÃig immer beide Flanken ausgewertet.
@@Netsroht72 hmmpf, da bin ich auÃen vor. Zum Entprellen gibt es immerhin einen Teil eines talks beim ccc, der sich seine Tastatur selbst gebaut hat und auf Performance getrimmt hat... mit USB