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) !
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.
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°
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.
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'.
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.