Mit dem IC kannst Du an einem Analogpin nacheinander mehrere Signale messen.
Nacheinander, das heißt ich bekomme nicht alle daten auf einmal und habe auch immer nur einen eingnang zum einlesen. läuft der der reihe nach die analog in´s ab und gibt die wieder?
Über die Adresspins des 4051 schaltest Du einen Eingang auf den Ausgang der mit dem Analogeingang des Arduino verbunden ist. Dann machst Du ein Analogread. Dann wiederholst du das selbe mit den nächsten eingang.
Grüße Uwe
Der IC kann bei 5V Versorgung innerhab 600-1200ns Schalten also 0,6-1,2ms der Arduino bekommt das innerhalb eines mittelgroßen Programmes auch so hin du kannst aber ein Zähler bauen der alle 2ms Umschaltet und du so kannst du dann alle 2ms sind lesen das !500! mal pro Sekunde!! und das dürfte wohl reichen.
Nach einem freundlichen Hinweis per KM muss ich mal meine Aussage revidieren habe eine 10³ potenz unterschalge 600-1200ns sind 0,6-1,2µs und so schnell ist der Arduino beim Switchen und anschließenden Analog Read nicht wobei meine Aussage von oben hinfällig ist
ich steig nicht mehr durch...
zuerst stellst du fest dass dir ein arduino MEGA(!!) nicht reicht- und jetzt hättest du gerne weniger (!!!) Eingänge?
Nochmal für alle zum mitschreiben: der MAX127 mach aus DREI (Daten-)Leitungen 8 analoge Eingänge per I2C. Wem das nicht reicht, der benutzt einfach 2, 5 oder 194 MAX127es an DREI Leitung des Arduinos. Wobei das wahrscheinlinch Probleme bei der Adressierung geben würde. Also eher 2,5,10 oder 32 MAX127.
ok war wohl zu unklar, sorry. ich brauche für einen arduino mega eine analog in erweiterung von 4-8 ports, einmal 4 und einmal eine 8 port erweiterung. möglichts zeitgenau, direkt, also nicht erst alle nach einander abfragen.
Du glaubst daß es ein problem ist die Analogwerte nacheinander zu lesen. Ist es nicht; Du kannst sie ja auch nur nacheinander verarbeiten.
Auch wenn der A/D-Wandler sie gleichzeitig mißt kannst Du sie nur nacheinander auslesen.
Grüße Uwe
Moinsen, ja ich auch, sry. Zu lang nicht mehr reingeschaut.
Es geht darum, dass ich einen weg Suche, einen arduino UNO/Mega mit mehr analogen Eingängen auszustatten.
Zum ersten wurde der max127 in den Raum geworfen, ein 12 Bit ad Wandler der seine Daten über den i2c Bus weitergibt.
Zum zweiten wurde der cd 4051 vorgeschlagen. Dieser fasst seine analogen Eingänge zusammen und gibt sie über seinen Ausgang an einen der analogen arduino Ports weiter.
Meine Befürchtung war, dass das zu langsam von statten gehen könnte.
Ich wurde gerne wissen, ob beide ic's meine anforderungen erfüllen und die Daten reibungslos senden und dass in kurzer Zeit.
Damit habe ich den UNO auf 48 analoge Inputs erweitert und ein Schlagzeug gebastelt. Es funktioniert ohne "spürbare" Latenzen. Allerdings nur, wenn einer der drei Muxer im Betrieb ist. Wenn ich den zweiten Muxer auch mit auslese, wird es schon hörbar hakelig, beim dritten gibt es dann unzumutbare Latenzzeiten. Schlagzeugwirbel werden damit unmöglich. Werde mal schauen, ob das per Software optimierbar ist.
Aber man kann mit der gleichen Hardware (und modifizierter Software) weniger zeitkritische Anwendungen daraus basteln. Zum Beispiel eine Heimüberwachung. Statt Piezos einfach andere Sensoren anschliessen (optische, bsw. Laser
der 4051 ist, wie schon von anderen erwähnt, nur eine Art Umschalter für die Anlalogwerte.
Da muss du vom Programm aus erst einen Eingang anwählen, dann wird der Analogwert auf den Analogeingang des Arduino geschaltet, dann musst du im Programm den Analogwert auslesen, dann im Programm den nächsten Eingang am 4051 anwählen, im Programm den Analogwert auslesen, dann im Programm den nächsten Eingang am 4051 anwählen...
Der 4051 sendet also nix von allein und über I2C sowieso nicht. Deswegen ist er ja auch so preiswert.
Das Geschwindigkeit ist ganz sicher nicht ein Problem des 4051. Der schaltet wie der Teufel um (unter 1 Microsekunde), sondern die Geschwindigkeit der AD-Wandlung im Controller spielt da eher eine Rolle. Aber diese Zeit brauchst du bei jedem Lesen eines Analogwertes über den Arduino, egal ob mit oder ohne Umschalter vor dem Analogeingang. Vielleicht weiss ja jemand, wie lange ein Aufruf der Funktion analogRead() dauert.