vielleicht könnt ihr mir helfen. Ich bin recht neu im Bereich Microcontroller und beschäftige mich zurzeit mit Multiplexern.
Mein Ziel ist es eine Art Spannungsmatrix mithilfe von Multiplexern zu erzeugen.
Dabei wollte ich folgendermaßen vorgehen:
Zunächst versuche ich die Spannung auf einer Zeile mit einem WRITE-Multiplexer zu halten. Iterativ lese ich mit einem READ-Multiplexer Spalte für Spalte aus.
Dann geht es zur nächsten Zeile.
Meine naive Überlegung ist jetzt, dass wenn ich einen Kanal von einem WRITE-Multiplexer mit einem Kanal von dem READ-Multiplexer verbinde, ein hohen Spannungswert in dem jeweiligen Feld in der "Spannungsmatrix" sehe.
Das ist leider nicht der Fall. Ich erhalte kein sauberes Signal, sondern überall hohe Werte.
Ich habe jetzt etwas recherchiert und folgende Ideen um das Signal zu verbessern:
ein Kondensator zwischen VCC und GND zu schalten
Vorwiderstände an die Kanäle vom Multiplexer zu schalten
Multiplexer mit geringerem Channel Bleeding zu verwenden
andere Microcontroller zu verwenden
Habt ihr Idee wie ich eine Art Spannungsmatrix erzeugen kann ? Gerne könnt ihr Links zur weiterführenden Literatur posten.
Als neuer Nutzer darf ich leider keine Anhänge hochladen. Ansonsten hätte ich gerne ein Fritzing PDF und den entsprechen Arduino Code hochgeladen.
Reicht das ? Sonst kann ich auch explizit die Schaltplanansicht von Fritzing nachliefern. Ich habe da gerade ein Problem, Fritzing konvertiert die Steckplatinenansicht nicht zu einer Schaltplanansicht. Ich muss das leider manuell machen.
Die Multiplexer 4051 verbinden immer einen Common Pin mit einem anderen der 8 möglichen Pins. Das funktioniert in beide Richtungen also Ausgaag am Common und Eingang am Pin oder umgekehrt.
Eingänge Multiplexen um zB aus einem Analogeingang 8 zu machen geht gut. Umgekehr ist es schwieriger.
Die Pins des 4051 halten dei Spannung an den ausgängen nicht. Der ausgesuchte ist wie ein Stufenschalter mit dem common verbinden aber die anderen 7 sind nicht verbunden also haben keinen definierten Zustand.
Daurm kann man mit Multiplexern keine Ausgänge vermehren.
Aus Deiner Beschreibung erschließt sich mir nicht was Du machen willst. Kannst Du es besser erklähren damit wir Dir zu etwas raten können.
Grüße Uwe
was ich gerne hätte, wäre folgende "Spannungsmatrix":
Kanal 1
Kanal 2
Kanal 3
Kanal 1
0
0
0
Kanal 2
0
255
0
Kanal 3
0
0
0
Dabei entsprechen die Werte in der Matrix der Spannung (bspw. 8 Bit Auflösung).
die Spalten in der Matrix sind Kanäle eines READ-Multiplexers
die Zeilen in der Matrix sind Kanäle eines WRITE-Multiplexers
Um eine Matrix wie oben zu erzeugen, würde ich gerne, dass der WRITE-Multiplexer beim Channel 2 die Spannung hält während ich beim READ-Multiplexer
durch die Kanäle iteriere.
Und was soll sonst passieren? Wirf mal nicht nur Brocken hier rein, sondern eine genaue Beschreibung, was insgesamt passieren soll. Für Deine Tabelle brauchst Du keinen Multiplexer, sondern nur eine Verbindung.
Was für ein Verhalten ich eigentlich erwarten würde, wenn ich nur Kanal 2 des WRITE-Multiplexers mit Kanal 2 von dem READ-Multiplexer verbinde:
SOLL-Zustand
Kanal 1
Kanal 2
Kanal 3
Kanal 1
0
0
0
Kanal 2
0
255
0
Kanal 3
0
0
0
Was ich stattedessen erhalte, ist folgende Matrix:
IST-Zustand
Kanal 1
Kanal 2
Kanal 3
Kanal 1
243
245
241
Kanal 2
241
255
234
Kanal 3
243
239
221
Um zu meiner Ausgangsfrage zurückzukommen, wie erklärt sich dieses Verhalten ?
Warum erhalte bei allen anderen Einträgen außer (2,2) hohe Spannungswerte auch wenn sie überhaupt nicht miteinander verbunden sind ?
Ist habe unten nochmal das erwartete Verhalten dem aktuellen Verhalten gegenüber gestellt. Mir ist bewusst, dass man dafür keinen Multiplexer braucht. Ich würde trotzdem gerne das Verhalten verstehen.
Genau weil sie "überhaupt nicht miteinander verbunden sind" erhällst Du Spannungswerte.
Zuerst mal bist Du uns immernoch die Schaltung schuldig.
Du hast 9 Messungen aber nur eine hat ein definierten Spannungspegel. Die anderen hängen in der Luft (sind an nichts angeschlossen).
Der AD Wandler hat intern einen Kondensator der mit dem Meßwert geladen wird und diesen für die Dauer der Messung, die in mehreren Schritten nacheinander von statten geht, konstant hält. Wird bei einer Messung kein Spannungspotential an den analogen Eingang gelegt (in der Luft gemessen) so wird der interne Kondensator weder geladen noch entladen. Du mißt (fast) den gleichen Wert der letzten Messung erneut. Darum mißt Du Werte nahe an 255 wo gar nichts sein sollte.
Leere Eingänge sollten mittels eines Widestandes auf Masse gezogen werden. Das meint combie mit
die 3 x 3 Matrix oben war nur als Beispiel gedacht um das Verhalten zu erläutern. Im Schaltplan habe ich natürlich eine 8 x 8 Matrix.
Ignoriert die INH Pins. Im Code sind sie nicht zu finden. Ich würde sie entweder mit Ground verbinden oder auf LOW setzen.
Der AD Wandler hat intern einen Kondensator der mit dem Meßwert geladen wird und diesen für die Dauer der Messung, die in mehreren Schritten nacheinander von statten geht, konstant hält. Wird bei einer Messung kein Spannungspotential an den analogen Eingang gelegt (in der Luft gemessen) so wird der interne Kondensator weder geladen noch entladen. Du mißt (fast) den gleichen Wert der letzten Messung erneut. Darum mißt Du Werte nahe an 255 wo gar nichts sein sollte.
Leere Eingänge sollten mittels eines Widestandes auf Masse gezogen werden. Das meint combie mit
Ok das ergibt natürlich Sinn. Das heißt, dass ich die Kanäle vom READ-Multiplexer die nicht verbunden sind, mit einem Widerstand mit Ground verbinden müsste ?
Warum kannst Du den Plan nicht hier einstellen?
Kein Mensch weiss, was Du da hast und wenn das Bildchen irgendwann weg ist, kann niemand mehr nachvollziehen, wie Dein Aufbau ist.