mehrere Drehencoder via Multiplexer

Hallo!

Ich möchte für ein Projekt zwei Tast-Drehencoder (2x3), ein Display (1x6) und zwei Taster (2x1) an einem Arduino mini pro anschließen. Damit sind ja alle 14 I/O Leitungen belegt. Nun fehlt mir mind. eine zur Ansteuerung eines MOSFET. Glücklicherweise habe ich noch eine Handvoll Multiplexer hier liegen. Kann ich mit einem Multiplexer MOS4052 Analog (2x4) jeweils ein Taster und Drehencoder anschließen? Oder müssen die Signale vom Drehencoder direkt am Arduino angeschlossen sein weil sie ja im Prinzip simultan abrufbar sein müssen und das ja beim Plexing nicht wären?! Wobei ich A/B parallelisieren könnte, wenn ich die Encoder an die gegenüberliegenden Ports anschließe...

Ergänzung: Oder stören Multiplexer bei den Drehbewegungen? Mit den Drehencodern möchte ich u.a. ein Servo ansteuern, auf einem Display den Cursor bewegen usw.. Wenn sowas hakt wäre es natürlich unschön. Dann würde ich nur die insg. 4 Taster zusammenfassen können, wobei ich damit nur ein Port gewinnen würde...

Vielen Dank für Eure Tips im Voraus!

Hallo Reddi

das wird wohl nicht recht funktionieren.
Da das Timing der Multiplexer ja vom Arduino aus gesteuert wird und Dieser nicht wissen kann wann Du einen Encoder betätigst es werden dann sicher nicht alle Schritte gezählt.
Eventuell kannst Du ja einen Eingang für zwei Drehenkoder nutzen und die Abfrage ,welches Signal gerade ausgewertet werden soll ,über den zweiten Signaleingang des jeweiligen Encoders machst.
Werden mehrere LCD an einem Arduino betrieben funkt es ähnlich.

Grüße Rudi

Das kann ich so nicht bestätigen. Der Arduino ist in der Lage, den Multiplexer mehrere zehntausend Mal pro Sekunden umzuschalten und den (digitalen) Eingang zu lesen. Da alle Bedienelemente vom Menschen ausgelöst werden, genügen bereits 1000 Checks pro Sekunden vollauf, um die Bedienelemente auszulesen. Auch das Multiplexen des Displays sollte möglich sein, da Du ja genau weisst, wann die Pins benötigt werden (wenn etwas geschrieben wird) und wann nicht. Allerdings müsstest Du dort 2-Weg-Multiplexer haben, was der von Dir genannte Chip aber sein sollte.

Ich würde also 2 Multiplexer-Chips nehmen (damit je ein Dreh-Encoder wirklich gleichzeitig ausgelesen werden kann). Mehr Leitungen brauchst Du nicht, da die Pins der Adressleitungen auf beide Multiplexer geführt werden können. Damit brauchst Du 5 Pins (3 Adressleitungen und 2 Common-Pins) und kannst damit 10 Pins aus Deiner Liste ablösen.

Was ist mit den Analogeingängen? 6 von denen haben auch Funktion als digitale I/Os. Verwendest du die schon anderweitig? Nicht vergessen, ein ATmega*8, zu denen auch der Chip der gängigen Arduinos gehört, hat nicht nur 14, sondern 20 I/Os.
Für das Display (falls es ein paralleles LCD a la HD44780 ist) würde sich ein Schieberegister besser eignen als ein Multiplexer.
Das Quadratursignal eines Drehgebers verhält sich wie ein Gray-Code, daher ist zeitliche Parallelisierung nur dann notwendig, wenn die Abtastrate nur unwesentlich schneller als die maximale Drehgeschwindigkeit ist. Ein serielles Auslesen der beiden Kanäle ist also kein Problem, wenn der Encoder gerade während eines Übergangs abgetastet wird wird er einen der beiden Zustände annehmen. Da dein Multiplexer aber sowieso zwei Leitungen parallel durchleitet, ist das relativ egal, da kannst du ruhig die zwei Encoderkanäle parallel durchjagen.