Welchen Multiplexer nutzt man, um möglichst viele Eingänge zu bündeln?

Hallo :smile:

ich möchte eine Sensormatte mit 16x16 Gewichtssensoren mit einem Arduino auslesen. Dieser bietet dazu ein paar digitale und analoge Ein- und Ausgänge, aber natürlich nicht genug um alle 256 Sensorwerte auszulesen. Eine Möglichkleit die ich bereits gefunden habe ist, die Eingänge durch einen 16-Eingang Multiplexer wie den 4067 zu selektieren. Um diesen anzusteuern, benötige ich aber wieder 4 der kostbaren Digital-Ausgänge. Für 256 Sensoren reichen die Pins zum ansteuern dann wieder nicht aus.

Meine Frage nun: Gibt es einen Multiplexer, der mir anhand eines Steuerpins (z.B. beim Wechsel von low auf high) sequentiell alle angelegten Eingänge anlegt…? Wie würdet ihr das machen…?

Das Arduino arbeitet übrigens auf CMOS level (5V) an den digitalen Ausgängen.

VG,

Frederic

normalerweise liest man diese sensoren nicht alle gleichzeitig aus, sondern nacheinander. dazu ordnet man sie in einer matrix an (hier: 16 x 16). jede gruppe von 16 sensoren wird durch einen digitalausgang einzeln eingeschaltet, dann durch 16 analogeingänge einzeln abgefragt. man benötigt also einen 16fach-schalter/multiplexer zum einschalten, einen 16fach-schalter/multiplexer am eingang des a/d-wandlers. dabei müssen die multiplexer unabhängig voneinander geschaltet werden können.
um möglichst wenige ports zu blockieren, nimmt man dafür sehr gerne bausteine mit i2c-bus. hast du damit schon mal gearbeitet?

Hallo Frederic,

Eine weitere Möglichkeit sind Schieberegister.
Je nach Variante kannst du dann mit 2 oder 3 digitalen Ausgängen um praktisch beliebig viele Bits erweitern.
Dies funktioniert für digitale Ein- und Ausgänge.
http://rn-wissen.de/wiki/index.php?title=Portexpander_am_AVR

Für I2C gibt es auch Portexpander:
PCF 8574 8 Bit I/O port
PCF 8574A 8 Bit I/O port different address.
PCF 8575 16 Bit I/O port
SAA 1300 5 Bit high current driver

MfG Peter(TOO)

Hallo und danke für die vielen Antworten :smile:
I2C sagt mir fürs erste nichts, nach meiner Google-recherche scheint mir das Arduino selbst mit einem Atmel AVR Microcontroller ein I2C-baustein zu sein, korrekt…? Den Arduino kann man ja auch mit Quellcode frei programmieren, es wäre also auch möglich ein entsprechendes Protokoll per Software zu implementieren.
Ein Schieberegister würde nur bei digitalem Input funktionieren, oder?

Hallo,

I2C kann man per Software implementieren aber auch mit spezieller Hardware.
Der Arduino hat entsprechende Hardware auf dem Chip, diese funktioniert aber nur mit bestimmten Pins. Für den Arduino und Andere findest du jede Menge fertigen Code und Bibliotheken.

Du brauchst natürlich Analogschalter wie z.B. den CD4066, 74HC4852, 74HC4851 usw. Diese musst du aber wiederum mit digitalen Signalen ansteuern. Die nötigen digitalen Ausgänge kannst du mit den Schieberegistern erzeugen.

MfG Peter(TOO)