Unabhängige analoge Sensoren haben abhängige Messwerte?

Ich arbeitete mit einem Nucleo f411re (STM32 MCU), um mehrere analoge Sensoren zu lesen.
Ich fing an, einen einzelnen Temperatursensor (LM35) zu testen, und alles war in Ordnung. Als ich ein lineares Potentiometer zum Lesen seiner Verlängerung hinzufügte, geschah eine seltsame Tatsache: Die abgelesene Temperatur stieg proportional zur Verlängerung des Potentiometers. Hier ist die Schaltung:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

PA0 und PA1 sind analoge Pins, die mit stm32 ADC verbunden sind. Hier finden Sie das ADC-Datenblatt.

Also habe ich die Ausgangsspannung von LM35 mit einem Multimeter gemessen und sie war stabil, selbst wenn ich das Potentiometer verlängerte; während, wenn von Nucleo gelesen, die Temperatur dem abgelesenen Potentiometer "folgte".

Ich habe dieses Problem gelöst, indem ich einen 1-µF-Kondensator zwischen Masse und V_out von LM35 hinzugefügt habe. Aber ich bin nicht zufrieden, denn ich würde gerne den Grund für das seltsame Temperatur-Leseverhalten wissen. Irgendeine Idee?

BEARBEITEN : Ich habe etwas gefunden, das dieses Problem in Abschnitt 3.4.1 des ADC-Datenblatts erklären könnte. Es scheint ein bekanntes Problem zu sein, das auf den Abtastschalter in der internen Abtastschaltung des ADC zurückzuführen ist. Können Sie das bestätigen?

Wir brauchen eine schematische Darstellung. Es gibt eine Schaltfläche in der Editor-Symbolleiste. Klick es! " Als ich ein lineares Potentiometer hinzufügte ... " Wie können wir möglicherweise erraten, wo Sie es hinzugefügt haben?
Bitte poste auch deinen Code.
Wahrscheinlich war Ihre Abtastzeit zu kurz für die Impedanz des Sensors und Sie haben sie unmittelbar nach dem Topf gelesen (ich gehe davon aus, dass ein einzelner ADC an Pins gemultiplext ist).
@pjc50, ich denke, das Problem liegt etwas im ADC. Kannst du mir deine Hypothese erläutern?
@Bernheart Diese Geräte verwenden normalerweise einen Multiplex-ADC, das Datenblatt enthält Details. Sie haben uns das Datenblatt nicht gegeben, daher müssen wir zusätzliche Arbeit leisten, um Ihnen zu helfen . Deshalb können wir nur vermuten und andeuten.
@pipe, sorry, ich konnte mir die Art des Problems nicht vorstellen. Ist in meinem Interesse, Sie in der Lage zu halten, mir zu helfen
Nun, mit einem Datenblatt und einem Schaltplan ist dies jetzt eine gute und positive Frage.
Wenn Ihre Kabel zum LM35 lang sind, müssen Sie die Empfehlungen des Datenblatts befolgen, um Instabilität zu vermeiden.
@SpehroPefhany, nein, die Drähte sind wirklich kurz.
Unter deinem Link ist kein Datenblatt.
@ScottSeidman versuchen Sie es jetzt
@ScottSeidman: Das ist nicht das Datenblatt des ADC, aber in diesem Fall ein hilfreicheres Dokument: ein Dokument zur Fehlerbehebung für den ADC.
Dein Mikro hat keine Masse. Gibt es eine in der realen Version? Sowohl LM35 als auch Pot sollten daran angeschlossen werden.
@Transistor natürlich nein, mein STM32 ist mit Masse verbunden!

Antworten (1)

Es gibt viele Dinge, die dieses Problem verursachen können. siehe hier . Was jedoch am offensichtlichsten zu sein scheint, ist ein Problem mit der Abtastzeit.

Auf Seite 35 wird erwähnt, dass der ADC ein Sample-and-Hold-Wandler ist: Er hat einen Kondensator, der sich auflädt (oder entlädt), bis er die gleiche Spannung wie die Quelle hat, und dann diesen Wert liest. Die Zeit dafür wird durch die Zeit eingestellt, in der SW1 eingeschaltet ist: die "Abtastzeit". Wenn der Kondensator nicht genügend Zeit hat, sich auf die richtige Spannung zu entladen/aufzuladen, bevor Sie den Schalter ausschalten und den Wert ablesen (abhängig vom Widerstand der Quelle), erhalten Sie nicht den richtigen Wert.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Dies ist im Abschnitt über Probleme beim Lesen von Quellen mit hoher Impedanz. Der LM35 hat einen niederohmigen Ausgang, wenn er Strom liefert, er kann jedoch nur 1 µA Strom aufnehmen, was ihn zu einer Stromsenke mit sehr hoher Impedanz macht.

Wenn Sie mit dem Poti eine höhere Spannung einstellen, als Sie vom LM35 ablesen, muss der Strom vom Kondensator aus C_sh durch den LM35 fließen: Dies ist sehr langsam (wegen dieser Stromsenke von 1 µA) und somit Ihre Abtastzeit ist zu kurz.

Ein Kondensator hilft, dies zu glätten, verlangsamt aber auch die Reaktionszeit des LM35.

Eine schnelle Lösung besteht darin, einen >1kΩ-Widerstand parallel zum LM35 zu schalten. Dies senkt den Strom, wenn Sie ihn brauchen, und gibt einen Strompfad zur Erde für den Strom von C_sh.

Danke schön! Aber ich habe nicht verstanden, wie ein Kondensator helfen kann, dieses Problem zu lösen: Wie kann ein externer Kondensator tatsächlich die Entladezeit von C_sh reduzieren?
Einige Erklärungen: 1) Wenn der Schalter anfänglich angeschlossen wird, sieht der externe Kondensator wie ein Kurzschluss für den schnellen Übergang der höheren Spannung von C_sh aus, sodass ein Großteil des Stroms auf diese Weise schnell abfließt. Die niederfrequenten Anteile des Transienten sind kleiner und können über den LM35 abfließen. 2) Sie haben einen größeren Kondensator als C_sh am Ausgang. Wenn die beiden parallel geschaltet werden, wird die gesamte Ladung gleichmäßig zwischen ihnen verteilt. Da der Ausgangskondensator größer ist, nimmt er die zusätzliche Ladung des internen Kondensators auf und ändert seine Spannung kaum.