Auswahl der Batteriespannung und ADC-Messung (OpAmp + uC)

Ich muss die Batteriespannung messen, die meine Elektronik versorgt.

Vbat versorgt den Buck-Boost-DC / DC-Wandler und geht dann zu uC und anderen ICs (3,3 V). Ich möchte 3x2 Goldpins in Verbindung mit OpAmp verwenden, um den Vbat-Spannungsbereich auszuwählen: U1 (3,6 V Li-Ion) oder U2 (7,2 2x Li-Ion) oder U3 (12 V Pb), die 0 V bis 3,3 V erzeugen uC ADC-Eingang / OpAmp-Ausgang.

Das ist klar.

Jetzt möchte ich uC über GPIO auf irgendeine Weise zurückmelden, damit ich weiß, welcher Jumper- / Batterietyp ausgewählt wurde (das muss ich in der Software wissen). Ich stelle mir einige zusätzliche OpAmps vor, die an R2 / R2 '/ R2 '' angeschlossen sind, aber ich habe keine Ahnung, wie das geht.

Ich werde deine Hilfe zu schätzen wissen :)

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan


Bearbeiten 1:

Das Gerät dient zur Messung des pH-Wertes und der Leitfähigkeit von Wasser. Es benötigt Temperatur-Feedback für pH- und Leitfähigkeits-ICs und kommuniziert über GSM. Es wird mit Batterien betrieben, also muss es energiesparend sein. Die meiste Zeit schläft es und alle 5 Minuten misst es. GSM wird nur für tägliche Berichte oder wenn Messungen außerhalb des Bereichs liegen eingeschaltet (GSM-Schlafmodus oder DC/DC-Schlafmodus). Wenn Sub-ICs schlafen, dauert es: 1 mA (pH) + 0,4 mA (Leitfähigkeit) + 1 mA (GSM-Schlafmodus) oder 1 uA (GSM-DC/DC-Ruhestrom) + ?? mA (PT1000 - noch nicht bestimmt) + ??mA (uC - noch nicht bestimmt, aber niedrig).

Die Batteriespannungs-ADC-Messung wird benötigt, um den Batterieprozentsatz der Kapazität und die Lebensdauer (basierend auf vergangenen Statistiken) zu berechnen, zusätzlich eine Rohspannungsanzeige. Für oben brauche ich OpAmp oder Spannungsteiler. Die Auswahl des Batterietyps (Eingangsspannung) ist obligatorisch, um Berechnungen detaillierter durchzuführen. Ich möchte keine Softwareberechnungen durchführen und gegebenenfalls herausfinden, ob die Batterie 12 V oder 3,6 V beträgt, da es möglich ist, jede Batteriekombination anzuschließen, deren Summenspannung zwischen 3 V und 15 V liegt. Natürlich lässt sich anhand eines Spannungsteilers leicht der Batterietyp bestimmen: 3,2–4,2 V für Einpack-Li-Ion, 6,4–8,4 V für Zweipack und 10,8–12,6 V. Nur laut gedacht :)

Zurück zu Merritum: Ich muss zwischen OpAmp und Spannungsteiler wählen, basierend auf Energieeinsparung. Der Spannungsteiler (Mega-Ohm) verbraucht uA für den Ruhestrom des OpAmp im Abschaltmodus. Ich bin verwirrt, weil ich zuerst dachte, OpAmp wird energiesparender sein. Was denkst du, Jungs und Mädels? :)


Bearbeiten 2:

Genauigkeit und Auflösung. Der ADC stammt von STM32F091 und hat 12 Bit. Wenn Sie also das Rauschen abschneiden, können Sie davon ausgehen, dass es sich um 10 Bit handelt. Der schlimmste Fall ist ein Li-Ionen-Akku, dessen Spannung zwischen 3,4 V und 3,7 V liegt. Das ergibt 300mV Delta. Um den Prozentsatz darzustellen, benötige ich einen Schritt von 0,5%, sodass die Auflösung 1,5 mV pro Schritt beträgt. Dies ist bei Verwendung eines dedizierten Spannungsteilers der Fall.

Bei Verwendung eines einzelnen Spannungsteilers für alle Batterietypen: Die maximale Batteriespannung kann etwa 13 V (für Blei) betragen, daher muss ich sie auf 3,3 V skalieren => div = 4. Bei Verwendung eines einzelnen Li-Ion erhalte ich mit diesem Teiler Werte von 925 mV bis 850 mV, also ist Delta 75 mV. Die benötigte Auflösung beträgt 75 mV/200 = 0,375 mV. Schritt für 0 V-3,3 V 10 Bit ist 3,2 mV, also 10-mal zu klein. Selbst wenn ich alle 12 Bit verwende, ist der Schritt zu klein - 0,8 mV.

Ich denke, ich brauche einen dedizierten Spannungsteiler für den Batterietyp oder wieder OpAmp? Was wäre energiesparender??

Ich habe einen anderen Vorschlag, anstelle von Goldpins im Opamp-Feedback einen Multiplexer wie 74HC4051 zu verwenden. Programmieren Sie dann die Eingänge des 74HC4051 mit Goldstiften (Sie benötigen nur 2 Goldstifte, da Sie mit 2 Bits 4 Zustände auswählen können). Die gleichen 2 Bits können Sie direkt in den uC einspeisen. Beachten Sie jedoch, dass der Multiplexer einen gewissen Serienwiderstand hat, daher würde ich die Werte von R1 und R2 im Bereich von xx kOhm festlegen, um diesen Serienwiderstand unbedeutend zu machen.
Ein bloßer Spannungsteiler sollte in der Lage sein, die Arbeit zu erledigen, denke ich.
Sie erkennen, dass der gezeichnete Operationsverstärker invertiert und dass ein + V-Eingang einen "unterirdischen" Ausgang erzeugt.
@NickAlexeev - Das denke ich auch, schalten Sie dann verschiedene Widerstände im Tap-to-Ground-Teil des Teilers mit uC-Pins als Open-Drain-Pulldown. Sie müssen auf Überspannung achten oder einen billigen FET verwenden.
@FakeMoustache: +1 nett! :)
@Nick Alexeev: Ich habe meinen Beitrag aktualisiert
@Andy alias: Danke! Ich bin nicht gut in Analog und OpAmps. Nicht invertierender Operationsverstärker hat eine Verstärkung von 1 + (R2 / R1) und ich brauche eine Verstärkung unter 1. Wie soll ich 0 bis V + am Ausgang mit einer Verstärkung von <1 erreichen? OpAmp Spannungsinverter am Ausgang?
@ChrisR: Was ist mit Zenner am Spannungsteilerausgang, um Überspannung zu schneiden?
@killdaclick entscheiden Sie zunächst, wie viel Genauigkeit und Auflösung Sie für Ihre Messung benötigen, und teilen Sie uns mit, was Sie in Ihrer Frage benötigen. Erklären Sie als Nächstes, welches ADC-Gerät Sie verwenden, dann kann ich besser antworten. Eine Dämpfung zu erhalten ist nur ein Widerstandsteiler. Das Anschließen an einen ADC kann niedrige Werte für die Genauigkeit erfordern. Aber ich verstehe dieses Detail nicht, weil Sie es nicht gesagt haben. Mein Bauch sagt mir, dass Sie keinen Operationsverstärker brauchen, aber Sie müssen die Informationen liefern.
@Andy aka: Ich habe meinen Beitrag aktualisiert (edit2)
@killdaclick - der übliche Weg zum Schutz besteht darin, Schottkys zur Versorgung von Schienen zu verwenden. Oft bereits in Opamp eingebaut. Der -v-Opamp-Eingang weicht in allen außer in katastrophalen Fällen nie vom +ve-Eingang ab. In LTSpice simulieren.
Verwenden Sie einfach einen PGA und steuern Sie ihn über den uC. Passen Sie dann die Verstärkung entsprechend dem Maß an, das Sie erhalten haben. Unterbrechen Sie dann, wenn Sie möchten, die Versorgung des Batteriekonditionierungskreises, damit Sie ihn vom uC aus ein- und ausschalten können

Antworten (3)

Da die Jumper manuell gesetzt werden müssen, könnte eine einfache Lösung darin bestehen, einen zweiten Jumper zu verwenden, der dem Mikrocontroller die ausgewählte Verstärkung anzeigt. Der Benutzer muss also zwei Jumper auf identische Positionen setzen. Oder verwenden Sie einfach einen Drehschalter mit zwei Polen und drei Positionen (zB: SS-10-23NPE ).

Ein ganz anderer Ansatz wäre die Implementierung einer Autoranging-Funktion, bei der der Mikrocontroller den Verstärkungsfaktor automatisch auswählt. Verwenden Sie einfach einen kleinen analogen Schalter , der vom Mikrocontroller gesteuert wird. Jetzt ist es möglich, das Eingangssignal automatisch zu verstärken: Beginnen Sie mit dem niedrigsten Verstärkungsfaktor und arbeiten Sie sich nur einen Schritt nach oben, bevor eine Sättigung des ADC-Eingangs eintritt. Schützen Sie ggf. den ADC-Eingang vor Überspannung: Fügen Sie einfach eine Klemm-Zehner- oder TVS-Diode (wichtig: niedriger Leckstrom!) zum Ausgang des Verstärkers hinzu.

Ich verwende den Multiplexer 74HC4051 mit 8 Widerständen im Teiler, der mit einer Zenerdiode und Software-Autoranging für ADC gesichert ist. Vielen Dank! :)

Die zu messende Spitzenspannung kann 13 V betragen, und wenn Sie einen 10-Bit-ADC haben, können Sie diesen mit einem geeigneten Widerstandsteiler so einrichten, dass er ~ 13 mV pro Bit ergibt.

Wie viel Genauigkeit benötigen Sie beim Messen der Spannung - reichen 13 mV nicht aus?

Jedenfalls ist dies die einfachste Methode, und Sie müssen sich keine Gedanken darüber machen, welchen Link Sie ausgewählt haben.

Ich habe meinen Beitrag aktualisiert. Ich denke, ich werde mich für einen einzelnen Spannungsteiler entscheiden, da die Messauflösung nicht das Problem ist. Ich muss mehr oder weniger wissen, wie viel Prozent der Batteriekapazität ist. Die Verwendung von Li-Ion anstelle von Pb verschlechtert die Auflösung, ist aber akzeptabel.
Erstens hilft Rauschen (das nennt man Dithering). Es funktioniert, indem das Signal zufällig ein wenig gewobbelt wird, und Sie können eine zusätzliche Auflösung von einem Bit erzielen, indem Sie 4 Samples mitteln. Sie sollten also 12 Bit und über einen Bereich von (sagen wir) 15 V verwenden, ein LSb = 3,66 mV. Wollen Sie sagen, das ist zu klobig für das, was Sie erreichen wollen? Das Bauchgefühl sagt mir, dass eine Auflösung von 3,66 mV in Ordnung sein sollte, aber vielleicht können Sie ein Dokument oder eine Website verlinken, die etwas anderes sagt?
Bitte überprüfen Sie meine Edit2. 3,66 mV würden ausreichen, wenn ich OpAmp oder Spannungsteiler mit Jumpern verwenden würde, um den geeigneten Batterietyp (Spannungsanpassung) auszuwählen. Wenn ich für alle Batterietypen einen einzelnen OpAmp / VD verwende, reicht dies nicht aus -> meine Bearbeitung 2. Bitte geben Sie an, welcher zu verwenden ist: Spannungsteiler mit hohem Widerstand oder Operationsverstärker unter Berücksichtigung der Energieeinsparung? Irgendwelche Fallstricke? Wenn nicht, gehe ich mit Spannungsteiler + analogem Multiplexer :)
Sie müssen hier über die größeren Probleme nachdenken. Sie müssen den Eingang absenken, und um eine Genauigkeit von etwa 4 mV zu erhalten, benötigen Sie einen temperaturangepassten Potentialteiler mit einer ratiometrischen Genauigkeit von 0,025 % oder besser. Alles andere verschlechtert die ganze Idee, also würde ich zu einem einzelnen hochgenauen Teiler raten. Wenn Sie anfangen, Operationsverstärker oder andere Widerstandsteiler zu verwenden, werden Sie mit Sicherheit auf Probleme stoßen. Ja, Sie können einen sehr temperaturstabilen Topfteiler finden, aber jetzt möchten Sie vielleicht einen analogen Schalter verwenden, um diesen zu modifizieren, und dies wird Ihnen erhebliche Stabilitätsprobleme bereiten ...
Auf dieser Grundlage und ohne Ihr Budget, Ihre Ausrüstung oder Ihre Fähigkeiten zu kennen, kann ich nur einen einzigen genauen potenziellen Teiler empfehlen, und es kostet ~ 10 US-Dollar, um die gewünschte Genauigkeit zu erzielen. Sie benötigen sowieso einen Topfteiler. Ist Ihr Design so budgetiert, dass es diese Kosten abdeckt? Wenn es die Kosten für mehrere hochwertige Topfteiler nicht bewältigen kann, müssen Sie Ihre Anforderungen herabsetzen.

Ersetzen Sie Ihre MCU durch ein STM32F2- oder F3-Gerät mit eingebauten Operationsverstärkern.

Einige sind Pin-kompatibel und haben einen internen PGA, Sie können den Großteil oder den gesamten externen Operationsverstärker und die zugehörigen Schaltkreise aus dem Design entfernen.

ST haben einen Anhang, bei dem Oversampling und Rauschen zusätzliche zwei Bits ergeben (dh eine effektive 14-Bit-Genauigkeit).

http://www.st.com/web/en/resource/technical/document/application_note/CD00211314.pdf

http://www.st.com/web/en/resource/technical/document/application_note/CD00004444.pdf

Ich habe dies getestet und es funktioniert, insbesondere bei der DC-Messung mit niedriger Impedanz.

Das F373-Gerät hat auch 16-Bit-ADCs, aber das wäre wirklich ein Overkill.

Sie können Ihren Operationsverstärker auch durch einen PGA MCP6S21/2/6/8 oder MCP6S91/2/3 ersetzen.

Ihre Genauigkeit, Kalibrierung, Prüfung, Leiterplatte und Herstellung werden alle einfacher und kosten weniger.

Der Stromverbrauch ist minimal, da Sie das gesamte Gerät mit einer sehr niedrigen Geschwindigkeit (32 kHz) takten können. Ich würde auch das ganze Gerät in den Ruhezustand versetzen oder vielleicht das Analog für längere Zeit zwischen den Messungen ausschalten, je nachdem, was Sie sonst noch tun müssen.

Auf diese Weise Strom zu sparen, ist bei externen Operationsverstärkern eine Herausforderung.

Für Einzelstücke kosten die Nucleo-Boards < 10 $, Discovery etwas mehr.