PIC - Wie umgeht man eine niedrige maximale ADC-Eingangsimpedanz?

Das Lesen einer 9-V-Batterie auf einem PIC ist nichts Neues . Am einfachsten und unkompliziertesten geht es mit einem Spannungsteiler. Ich möchte die Teilerwiderstände auf Hunderte von kOhm hochdrehen, damit ich meine Batterie nicht unnötig töte, aber ich habe mir das Datenblatt für den PIC18F4550 angesehen und die maximale "empfohlene" analoge Eingangsimpedanz beträgt 2,5 kOhm. Das bedeutet, dass ich 2 5Ks für meinen Teiler kleben kann, aber 900uA sind viel zu verschwenden, um nur die Batterie zu überprüfen. Was kann ich an meinem Design (passiv) tun, um den Batterieverbrauch zu minimieren? Ich habe aktive Lösungen wie ein softwaregesteuertes Pfet oder einen Puffer in Betracht gezogen, aber Platinenplatz und Budget sind ein bisschen Luxus, also werde ich es nur tun, wenn ich muss. Ich frage mich auch, ob ich mir um nichts Sorgen mache.

Ich habe diesen Beitrag gerade bei meiner Google-Suche gefunden. Nur um zu sagen, dass Sie meine Frage beantwortet und mir viel geholfen haben !!! Mein Versuch, ADC mit meinem PIC18 zu lesen, wurde blockiert, weil der von der MCU gelesene Wert immer schwankt ... Ich habe den von Alex vorgeschlagenen RC eingesetzt und alle Probleme gehen aus !! Danke vielmals ! PS: Entschuldigen Sie mein Englisch, ich bin Franzose.

Antworten (3)

Der ADC benötigt eine niedrige Quellenimpedanz, weil er über einen geschalteten Kondensatoreingang verfügt. Grundsätzlich wird immer dann, wenn der ADC die Spannung am Pin „abtastet“, ein kleiner Kondensator angeschlossen, aufgeladen und dann getrennt. Wenn die Impedanz zu groß ist, zieht das Aufladen des Kondensators genug Strom, um einen Spannungsabfall zu erzeugen, der groß genug ist, um den Messwert zu beeinflussen.

Wenn Sie ein Hochgeschwindigkeitssignal lesen müssen, ist es am besten, einen Verstärker hinzuzufügen, um dem ADC eine niedrige Quellenimpedanz zu verleihen. Wenn Sie jedoch ein relativ langsames Signal betrachten, gibt es ein paar andere Optionen.

Eine Lösung hierfür besteht darin, die Abtastzeit zu erhöhen - die Zeitdauer, für die der Kondensator mit dem Pin verbunden ist. Der Chip hat jedoch normalerweise eine Begrenzung, wie lange diese Zeit sein kann.

Alternativ können Sie einen anständigen Kondensator parallel zum ADC-Eingangspin hinzufügen. Dadurch wird die Droop-Menge verringert, die auftritt, wenn sich der ADC-Abtastkondensator auflädt, da der größte Teil seiner Ladung aus dem Kondensator und nicht über den Widerstand gezogen wird.

Kondensator ist der Weg zu gehen. ADC gibt eine Quellenimpedanz an , keinen Widerstand. Konvertieren Sie die Abtastzeit in eine Frequenz und verwenden Sie eine Kappe mit einer viel niedrigeren Impedanz bei dieser Frequenz.

Es gibt ungefähr 4 Möglichkeiten, einen Spannungsteiler an einen A/D anzuschließen und mit der Anforderung an die maximale Eingangsimpedanz umzugehen.

  1. Verwenden Sie einen ausreichend kleinen Widerstand. Das macht der OP bereits.
  2. Setzen Sie einen OpAmp-Puffer zwischen den Teiler und den A / D-Eingang. OpAmp sollte eine hohe Eingangsimpedanz und eine niedrige Ausgangsimpedanz haben. [Wie bereits von Alex erwähnt.]
  3. Verwenden Sie einen größeren Widerstand und fügen Sie einen Kondensator vom Analogeingang zur Masse hinzu. [Wie bereits von Alex erwähnt.] Der Kondensator sollte deutlich größer sein als der in Sample and Hold. Sie werden versehentlich einen RC-Filter erstellen, aber dies funktioniert immer noch, wenn das Signal langsam ist. Eine Kombination aus 10 kΩ und 0,1 μF hat für mich gut funktioniert.
  4. [last but not least] Schalten Sie den Spannungsteiler mit einem MOSFET-Schalter aus und verwenden Sie relativ kleine Widerstände. Dadurch können Sie die Leckage praktisch vollständig beseitigen, wenn Sie nicht messen. Dies ist eine gängige Technik zur Batteriemessung.

Ersetzen Sie R1 und R2 durch die benötigten Werte. Der Schaltplan wurde ursprünglich in diesem Thread gepostet .

Warum nicht einfach den Spannungsteiler an einen Pin am PIC anschließen? Fahren Sie den Pin auf Low, um zu samplen, stellen Sie High-Z auf Disconnect ein.
@Bitrex Angenommen, Sie machen aus einem digitalen Ausgangspin einen Low-Side-Schalter, wie Sie ihn beschreiben. An der Spitze des Spannungsteilers werden +9V angelegt. Wenn der Low-Side-Schalterstift auf Low getrieben wird, ist alles in Ordnung. Wenn Sie es auf High-Z stellen, erscheinen +9V auf dem A/D-Pin und auch auf dem Switch-Pin. PIC-Pins sind nicht für +9 V ausgelegt.
Ups, aus irgendeinem Grund habe ich die "9V"-Anforderung verpasst!
Eine Idee, die mit dem obigen Schema funktionieren könnte, das einen MOSFET spart, ist das Ansteuern des PNP im obigen Bild direkt von demselben Pin, an den der Widerstandsteiler angeschlossen ist; Fahren Sie zum Messen auf 0 und zum Abschalten auf Vss. Bei geeigneter Auswahl von Pullup-/Pulldown-Widerständen für den Pfet funktioniert dies, solange die 9-Volt-Batteriespannung nicht weit genug abfällt, um die Körperdiode des Fets in Vorwärtsrichtung vorzuspannen.

Die Idee von Bitrex würde funktionieren, wenn der digitale PIC-Pin als "Open Drain" konfiguriert und dann mit einem Zener auf 2,7 V geklemmt würde, um ihn vor 9 V zu schützen.

Um es "EIN" und "AUS" zu schalten, initialisieren Sie den Pin, indem Sie ein logisches Low darauf schreiben (und es dort belassen), und schalten Sie dann den Pin "EIN" und "AUS", indem Sie in den TRIS-Latch schreiben, wodurch der Pin veranlasst wird entweder ein logisch niedriges oder hohes z.

Der Pin schaltet von 0 auf 2,7 V um, was ausreichen sollte, um einen MOSFET mit niedriger Gate-Schwelle anzusteuern.