Der analoge Arduino-Eingangspin beeinflusst das eingehende Signal

Ich habe eine Hallsensordrossel, die ein Signal ausgibt, das zwischen 0,8 und 3,6 V skaliert. Das Problem ist, dass, wenn ich es an einen analogen Eingangspin des Arduino MEGA2560 anschließe, die Spannung nie über 2,3 V geht, weder beim Messen mit einem Multimeter noch beim Verwenden des seriellen Anschlusses. Es ist, als ob etwas im Arduino die Spannung auf diesen Wert begrenzt. Woran kann das liegen und wie kann ich es lösen?

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Die 2,3 V werden zwischen dem A2-Pin am Arduino und der Drosselklappe gemessen

Sie geben uns nicht viele Hinweise, um Ihnen zu helfen. (1) Schema. (2) Datenblatt für Drosselklappe. (3) Konfiguration des Analogeingangs im Code. Bitte bearbeiten Sie Ihre Frage.
Tut mir leid, habe gerade meine Frage bearbeitet. Ich habe sehr begrenzte Informationen über die Drosselklappe, abgesehen von der Tatsache, dass es sich um eine Hallsensor-Drosselklappe und den Bereich des von ihr erzeugten Ausgangssignals handelt. Der Eingangspin wird einfach initialisiert als: pinMode(A2, INPUT);//Throttle in

Antworten (2)

Wie wir im Datenblatt lesen können:

Der ADC ist für analoge Signale mit einer Ausgangsimpedanz von ca. 10 k oder weniger optimiert. Wenn eine solche Quelle verwendet wird, ist die Abtastzeit vernachlässigbar. Wenn eine Quelle mit höherer Impedanz verwendet wird, hängt die Abtastzeit davon ab, wie lange die Quelle benötigt, um den S/H-Kondensator aufzuladen, was stark variieren kann. Dem Anwender wird empfohlen, nur niederohmige Quellen mit langsam variierenden Signalen zu verwenden, da dies den erforderlichen Ladungstransfer zum S/H-Kondensator minimiert.

Wenn dies ein Fall von Impedanzfehlanpassung ist, benötigen Sie eine Art Impedanzpuffer.

Eine der möglichen Lösungen könnte ein Operationsverstärker in "Voltage Follower" -Konfiguration sein.Geben Sie hier die Bildbeschreibung ein

http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

Ich denke, etwas in Ihrem Setup ist nicht konfiguriert oder verhält sich nicht so, wie Sie es erwarten.

Wenn Sie das Signal mit einem Multimeter messen, ohne dass es mit dem Arduino verbunden ist, geht das Signal über 2,3 V?

Wenn es nicht über 2,3 V geht, hat dies nichts mit dem Arduino zu tun, oder das Signal geht möglicherweise nur für sehr kurze Zeiträume über 2,3 V und Sie tasten einfach nicht schnell genug ab, um diese Ereignisse zu sehen. (Das Abtasten in einer Schleife während der Ausgabe von Informationen an den seriellen Monitor ist nicht sehr schnell und Multimeter sind nicht dafür ausgelegt, Hochfrequenzinformationen zu erfassen.)

Wenn Sie sicher sind, dass das Signal über 2,3 V liegen sollte, könnte ich vermuten, dass Letzteres passiert. Zum besseren Verständnis können Sie das Signal mit einem digitalen Oszilloskop betrachten, das Wellenformen mit höheren Frequenzen erfassen kann.

Wenn es über 2,3 V geht, wenn es nicht mit dem Arduino verbunden ist, scheint es eine gewisse Wechselwirkung mit Ihrem Signal und dem ADC-Eingangswiderstand zu geben. Der ADC-Eingangswiderstand ist bei 100 M gesprenkelt Ω , also scheint dies unwahrscheinlich, könnte aber passieren.

http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf

BEARBEITEN:

Nachdem Sie Ihren Kommentar gelesen haben, scheinen Sie den analogen Eingang als digitalen Eingang eingerichtet zu haben, der sich nicht wie erwartet verhält. Sie müssen nur den Pinmode für digitale Pins einstellen. Um die Spannung zu lesen, entfernen Sie einfach den PinMode (A2, INPUT); Zeile Ihres Codes und wenn Sie den analogen Wert lesen möchten, verwenden Sie einfach analogRead (A2);

https://www.arduino.cc/en/Reference/PinMode

https://www.arduino.cc/en/Reference/AnalogRead

Wenn ich das Signal mit einem Multimeter messe, ohne dass es an das Arduino angeschlossen ist, geht das Signal über 2,3 V und ist in seinem vollen Bereich (0,8 bis 3,6 V) betriebsbereit.
Hast du versucht, den Code zu ändern, wie ich vorgeschlagen habe?
Ja, danke, aber das Problem war, dass ich das Arduino zu wenig mit Strom versorgte und nur 5 V an die Platine fütterte!