Ich messe den Spannungsausgang von einem Gerät mit einer Ausgangsimpedanz von 10 kOhm mit einem analogen Arduino-Eingangspin. Ich sehe, was ich mit einem Multimeter erwarten würde, aber mit dem Arduino bekomme ich entweder Müll oder bestenfalls oszillierende Messungen, die ungefähr dem entsprechen, was ich erwarten würde.
Ich weiß, dass die Impedanz der analogen Pins 100 MOhm beträgt, während sie auf dem DMM etwa 10 MOhm betragen würde, also hatte ich nicht erwartet, dass das Arduino unbrauchbar ist, während das DMM gut funktioniert.
Ich habe schließlich herausgefunden, dass das Kurzschließen der Ausgänge mit einem Kondensator mir das gibt, was ich erwarte, aber nicht wirklich verstehe, warum. Widerstände halfen, aber ich sah immer noch Oszillationen, und ich nahm an, dass die Widerstandsfehlanpassung der Schuldige war, da es anscheinend ein Problem mit der Impedanz war.
Die MCU in Arduino hat einen sukzessiven Approximations-ADC.
Es funktioniert, indem es kurzzeitig eine Spannungsprobe über einen Multiplexer in einen kleinen Speicherkondensator nimmt, um mehrere Eingangskanäle mit einem ADC zu verarbeiten.
Bei einer hohen Quellenimpedanz hat der Abtast/Halte-Kondensator möglicherweise keine Zeit, sich vollständig aufzuladen, und daher ähnelt die Abtastung der Spannung nicht der tatsächlichen Spannung.
Die Impedanz eines analogen Eingangspins beträgt also nicht 100 MOhm, da er momentan einen 14-pF-Kondensator mit einem Reihenwiderstand von 1 kOhm auflädt und Strom in oder aus dem Pin fließen kann.
Daher muss die Quellenimpedanz niedrig genug sein, um den Abtast/Halte-Kondensator während der Abtastzeit auf innerhalb von 0,5 ADC-Zählungen aufzuladen.
Unter der Annahme, dass die MCU auf Ihrem Arduino ein AVR ist, besagen die ADC-Spezifikationen, dass sie am besten funktioniert, wenn die Quellenimpedanz 10 k oder weniger beträgt. Es scheint, dass Ihr Sensor eine hohe Ausgangsimpedanz hat.
Auch wenn der Sensorausgang das periodische Laden des Abtastkondensators nicht bewältigen kann, kann er instabil werden und ein Klingeln zeigen, wenn der leere Kondensator plötzlich zum Laden angeschlossen wird.
Das Gleiche gilt im Grunde, wenn Sie einen Filterkondensator am AVR-Eingang haben, um eine kurzzeitige AC-Impedanz zu haben, die niedrig genug ist, sodass Sie eine Messung durchführen können, ohne den Wert stark zu beeinflussen. Aber wenn die Filterkappe durch einen 1-MOhm-Widerstand aufgeladen wird, hat sie immer noch eine hohe langfristige DC-Impedanz, so dass es lange dauert, den Kondensator wieder auf den ursprünglichen Wert aufzuladen, so dass zu häufige Messungen den Filterkondensator langsam entladen.
Es gibt also viele Gründe, warum analoge Messungen mit Arduino im Vergleich zu einem Multimeter nicht funktionieren. Der Arduino hat keine eingebaute Signalkonditionierung und -pufferung wie ein Multimeter. Die benötigte analoge Eingangsstufe sollte zwischen Sensor und MCU eingebaut werden.
Das Messgerät hat intern entweder einen echten Kondensator oder eine Software-Simulation eines solchen.
Wenn dies nicht der Fall wäre, würden Sie niemals eine stabile Zahl zur Anzeige bekommen und es wäre unmöglich, sie zu lesen.
Sie können sicher sein, dass dies nichts mit einer „Widerstandsfehlanpassung“ zu tun hat.
Eine kleine Geschichte....
Als ich auf dem College war, nahm ich an einem CMOS-Kurs teil - Wir haben integrierte Schaltkreise entworfen und hergestellt. Mein Team entschied sich für ein "Voltmeter auf einem Chip" --- Es hatte die analogen Eingänge und würde direkt an eine typische 7-Segment-LED-Digitalanzeige ausgegeben. Als wir es einschalteten, zeigte es „888“ an. Natürlich waren wir total deprimiert, bis jemand vorschlug, der Eingabe eine kleine Kappe hinzuzufügen. Plötzlich funktionierte es. Was also passierte, war, dass die Zahlen so schnell hüpften, alle LED-Segmente leuchteten so schnell auf, dass sie dauerhaft zu leuchten schienen.
Wenn Sie Ihren Arduino irgendwie in einer Umgebung ohne elektromagnetisches Rauschen betreiben könnten, würden Sie ohne die Kappe vollkommen stabile Messwerte erhalten. Aber eine solche Umgebung existiert nicht. Es wird IMMER etwas geben, das die Drähte bis zu einem gewissen Grad stört. Der Arduino lügt Sie also nicht an. Es meldet, was es an den Pins sieht. So passiert es, dass sich der Wert an den Pins bewegt. Wenn Sie die Kappe dort platzieren, wird die Spannung geglättet, sodass sie stabil genug wird, um eine Messung durchzuführen.
Das heißt, Sie müssen dem Arduino helfen, indem Sie die Spannung so stabil wie möglich machen. Beispielsweise führt die Verwendung von eng verdrilltem Draht anstelle von zwei separaten Leitungen fast immer zu einer Verbesserung. Rauschunterdrückung und richtige Erdungstechniken könnte ich nicht in einem kurzen Beitrag beschreiben, Sie könnten Lehrbücher mit dem Zeug füllen. Aber wenn Sie einfach nicht die gewünschte Stabilität erreichen können, erhalten Sie hier möglicherweise nützliches Feedback, wenn Sie einige Bilder Ihres Setups posten.
Folgen Sie der Antwort von Kyle B, wenn Sie keine GROUND PLANE verwenden, tun Sie dies.
Ich helfe einem Typen beim Erfassen/Digitalisieren von Transienten von Musikinstrumenten.
Im Laufe des letzten Jahres haben er/wir gelernt, wie man den Fehlerboden von 90 Millivolt auf etwa 0,3 Millivolt reduziert.
Haben Sie eine 0,01uF-Kappe am Eingang zum ADC
Haben Sie einen Unity_gain-Puffer vor dieser 0,1-uF-Obergrenze.
Verwenden Sie keine Schaltregler-Netzteile.
Wenn Sie SwitchRegs verwenden müssen, zahlen Sie für die bessere Note.
Verwenden Sie eine Grundebene.
Möglicherweise benötigen Sie Gleichtaktdrosseln für die VDD / GROUND-Verdrahtung zu den SwitchRegs.
In der VDD zu jedem Operationsverstärker-Puffer 10 Ohm in Reihe und 100 uF Rangieren.
brhans
dummGaN