analoge Eingänge - übersprechen unbeschalten

Hallo,

ich arbeite gerade das Arduino Buch durch von Erik Bartmann und beschäftige mich gerade mit Processing weiter hinten. Habe den Code vom AnalogTracker abgetippt. Erstmal funktioniert das soweit. Allerdings nicht mit der hohen seriellen Bitrate von 38400 sondern nur mit 14400. Mein Arduino hängt am USB Port und geht beim Rechner in eine Front USB 3.0 Buchse. COM4. Kabel müßte 1,5m sein. Vielleicht kürzeres Kabel und direkt hinten auf Slotblende gehen?

Was mich jedoch mehr wundert ist, dass die unbeschalteten analogen Eingänge auf Änderungen von anderen mit reagieren. Das ein unbeschalteter Eingang irgendeinen Wert haben kann ist mir klar. Aber das er sich zeitgleich mit anderen Eingängen ändert ist mir auch neu. Ich habe nur an A0 ein Poti angeschlossen und A2 auf Masse gelegt. A1 ändert sich mit A0 mit. Das wundert mich etwas? :~

Code erforderlich?

Wundert mich überhaupt nicht. Intern sind die Eingänge am gleichen Multiplexer + ADC. Und das unbeschaltete nahe beeinanderliegende hochohmige Eingänge übersprechen ist normal. Davon abgesehen ist das Verhalten im unbeschalteten Zustand undefiniert --> Übersprechen ist spezifikationskonform.

Hallo,

okay. Aber warum sprechen die analogen Eingänge dann nicht über wenn sie beschalten sind? Dem µC ist es doch egal was "draußen" angeschlossen ist. Er weis es ja nicht. Also wenn am A0 "199" eingelesen wird und an A1 stehen volle "1023" an. Warum wird dann A0 nicht verfälscht?

Also wenn am A0 "199" eingelesen wird und an A1 stehen volle "1023" an. Warum wird dann A0 nicht verfälscht?

Weil der Eingang, wenn er beschaltet ist, vielleicht nicht mehr gar so hochohmig ist ? Warum bleibt es bei 199, selbst wenn du gleichzeitig mit einem Multimeter ca.0.97 V misst, oder gar mit dem Finger dranfasst ?

Doc_Arduino: Dem µC ist es doch egal was "draußen" angeschlossen ist.

Ist es eben nicht.

hier gehts um winzige Leckströme im NanoAmpere Bereich. Ein offener AD ist letztlich ein Kondensator, der sich über Leckströme, am Pin eingefangene Störungen etc auf einen Wert einstellt. Wenn der Nachbar-pin einen definierten Pegel hat, dann fließen halt auch höhere Leckströme.

wenn du aber aussen eine Beschaltung anschließt, beispielsweise einen Sensor mit 10k Pullup, dann wird der Kondensator im Pin über die Außenbeschaltung auf einen definierten Pegel gezwungen. Die Leckströme erzeugen dann höchsten noch einen minimalen Fehler, den du aber vernachlässigen kannst, wenn du unter 10k Innenwiderstand der Außenbeschaltung bleibst.

Hallo,

vielen Dank @ all für die Erklärung(en). Jetzt ist mir alles klar.

Des weiteren ist zu sagen daß der ATmega nur einen AD-Wandler hat und einen Analogmultiplexer um 6 bzw 8 analoge Eingänge (genaugesagt 3 mehr) zu haben. Damit die analoge Spannung während der Wandlung sich nicht ändert wird ein kleinen Kondensator geladen und mit dieser Spannung die Wandlung gemacht. (Sample and Hold Schaltung) Da der Kondensator nach der Wandlung nicht entladen wird sondern mit der Spannung am nächsten Eingang geladen wird, passiert es, daß wenn nichts angeschlossen ist, sich die Spannung am internen Kondensator nur wenig ändert. So mißt Du bei einem unbeschaltenen Eingang die Spannung des vorher gemessenen Eingangs. Wenn 2 beschaltene Eingänge hintereinender gemessen werden so wird der Kondensator jedesmal vor der Messung auf die analoge Spannung geladen. Das einzige Problem ist wenn die analoge Spannungsquelle einen zu hohen Innenwiderstand at so wird der Kondensator in der Ladezeit nicht ganz auf die analoge Spannung geladen und somit die Messung verfälscht. Abhilfe schafft hier ein Operationsverstärker als Impedanzwandler geschalten oder mehrere Messungen des gleichen Pins. Durch das mehrmalige laden des Kondensatore kann dieser auf den Endwert geladen werden.

Grüße Uwe

Hallo,

Danke Uwe. Interessant. Gut zu wissen.