Rotary Encoder am CD74HC4067

Hi,

ich bastle gerade an einer RC-Steuerung für ein Futterboot und hab eine Frage zu "Rotary Encoder".

Ist es ratsam/möglich ein Encoder am CD74HC4067 einzuschließen, oder soll/muss ich doch Digitale Pins vom NANO verwenden?
(breakout Joystick kommen nicht in Frage != Genau)

Ich habe hier zwei verschiedene, 3 Pin Encoder (+, Data, -) und Breakout Encoder (+, -, SW, DT, CLK)
8x Taster funktionieren an dem '4067' wie erwartet, hab vor kurzem herausgefunden das ich '4067' zwischen ANALOG und DIGITAL schalten kann (0-1023 vs 0-1) :grin:!

Ach ja, 2 Encoder sind 1x für Vorwerts + Rückwerts und Links + Rechts gedacht, die wo drauf sind fliegen raus, mein Ziel ist etwas mehr Präzision bei der Steuerung der 2x Brushless Motoren.

Hab ich was vergessen?

MfG

Du solltest vieleicht die Frage in https://forum.arduino.cc/index.php?topic=660181.msg4456345#msg4456345 beantworten.
Grüße Uwe

Siehe deinen vorherigen Thread.

@TO: Du meinst ernsthaft, dass Du nach dieser Antwort noch irgendwelche Hilfe bekommen würdest?

Gruß Tommy

Ich habe mich entschuldigt, war nicht so gemeint, ehrlich! > LINK

Und wenn mir jetzt niemand mehr hilft verstehe ich das.

MFG

Also ich würde den direkten Anschluss vorziehen.
Gib uns mal Links zu den Encodern.

Gruß Tommy

Hallo, und danke.
Rotary Encoder
Lineares Potentiometer

Das Potentiometer ist aber kein Encoder. Das ist auch wohl nicht besser, als die Potis in Joysticks.

Gruß Tommy

Ok, ich werde beide direkt am Nano testen.

MfG

Zu den beiden Teilen:
Das Poti kannst du direkt mit einem analogen Eingang abfragen.
Für den Encoder benötigst du eine Software (Libraary), die dir die entsprechenden Schritte und Drehrichtung ausgibt.

Kann ich davon ausgehen das ein Encoder genauer (beim drehen immer ein Wert liefert) als Poti ist?

Die aktuell verbaute und viele Breakout Joysticks für PS/X360/Arduino sind zu ungenau, ±20%, die wo verbaut sind erreichen den maximal Wert schon bei 30° anstatt 40°

Sub7:
Kann ich davon ausgehen das ein Encoder genauer (beim drehen immer ein Wert liefert) als Poti ist?
.....

Da verstehst du etwas falsch.
Die Encoder liefern keinen Wert, sondern Impulse, die du zählen musst.
Die Genauigkeit legst du quasi im Sketch fest.

Die durchschnittlichen Billigpotis / Encoder sind halt nicht sehr genau.

Es gibt auch sehr genaue Ausführungen, die haben aber ihren Preis.

Wir hatten hier mal eine Diskussion und eine SDammelbestellung zu einem Rotara-Encoder so um die 20 €. Das Din ist wirklich extrem gut. Es gibt aber auch sehr gute Potis (Suche mal nach Präzisionspotentiometer).
Dem entgegen steht aber die Auflösung der analogen Eingänge von 0...1023. Die können ein Präzisionspoti nicht annähernd genug auflösen.

Du solltest Dir also esrt mal klarer werden, was Du überhaupt genau willst.

Gruß Tommy

Hi

Dein Encoder wird auch nicht mit viel 'Drum herum' genauer werden, da Dieser für Endlos-Drehungen gedacht ist - nicht für 90° wie bei einem Joystik-Knüppel.
Klar gibt Es auch Encoder mit wesentlich mehr Schritten, als der Kleine auf Deiner Platine und dann auch ohne Rasten, um z.B. von einer Motorwelle angetrieben zu werden.
Aber auch Die sind eigentlich nicht für einen kleinen Winkel gedacht, wenngleich man Diese dafür nutzen könnte.
Habe hier derzeit Drehencoder mit 600 'Rasten' (da Maschinen-Encoder ohne Rasten) pro Umdrehung, mach 2400 Impulse - Das wären immerhin 600 Impulse für 90° - damit könnte man einen Arduino füttern und Dieser könnte einen DAC ansteuern.

Aber recht viel Umstand, also die Ersetzung, um nur ein Poti in einem anderen Widerstandsbereich laufen zu lassen - Das sollte sich ggf. durch Widerstandsanpassungen auf den ganzen Bereich ausbreiten lassen.
Die 'Schwammigkeit' bleibt aber - nur auf einem größeren Bereich.
Wenn man vorher den Knüppel gefühlte zwei Kilometer hin und her ruckeln musste, um halbwegs geradeaus hinzubekommen, wird Das hiermit nicht besser, da das Poti 'nicht taugt'.

MfG

Wunderbar, dann kann ich auch mit den Tastern Trimmen. :slight_smile:

Muss ich den Encoder unbedingt mit der Platine verwenden, oder kann ich ihn trennen?

Du kannst ihn auch ohne Platine verwenden, musst aber entsprechende Widerstände wieder einsetzen.

Oder du besorgst dir gleich einen Encoder ohne Platine. Widerstände brauchst du dann aber auch.

Hallo Sub7,

der Encoder gibt im Gegensatz zum Poti gar keinen (auswert- oder nutz-baren) Wert aus. Ein Encoder gibt während des drehens an 2 Anschlüssen zueinander zeitlich versetzte Impulse aus. Die von HotSystems erwähnte Software/Library wertet diese Impulse aus und ermittelt daraus die DrehRichtung und zählt die Impulse. Damit wird ein (Software-) Zähler hoch-/oder runter-gezählt. der Stand dieses Zählers ist dann Deine Information, wo der encoder grade steht. Du kannst den encoder also nicht wie ein Poti an ein Messgerät anschliessen und dann am Messgerät ablesen , wo der Encoder grad steht.
Wenn du beim Arduino nach dem Einschalten also wissen willst, wo der Encoder steht, musst Du entweder den Zählerstand vor dem Ausschalten gespeichert haben , oder Du startest immer mit dem gleichen Initial-Wert. Also setzt beim programmstart den Zähler auf den Wert, den Du als Startwert brauchst.

LG Stefan

So mache ich das, Taster_1 > write 0 = Motor 1+2 0%, Taster_2 write 0 = Ruder 0% und dann werden Impulse gezählt.

Das war es erstmals.

PS: DANKE für Eure Kulanz.

MfG Sub7 :slight_smile: