Wählbarer Spannungsteiler Optimaler Schaltpunkt

Ich habe eine Schaltung gebaut, um einen unbekannten Widerstand (über einen großen Bereich) zu messen, der im Grunde wie folgt ist:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Range_Select_1 und Range_Select_2 können durch einen Mikrocontroller auf GND oder hochohmig gesetzt werden. Wenn sie auf GND eingestellt sind, schließen sie den Spannungsteiler effektiv kurz und entfernen Widerstände unter dem Knoten. Also in der Schaltung oben.

  • Range_Select_1 = GND => Low-Side-Widerstand = 1 kOhm
  • Range_Select_1 = Z, Range_Select_2 = GND => Low-Side-Widerstand = 11 kOhm
  • Range_Select_1 = Z, Range_Select_2 = Z => Low-Side-Widerstand = 111 kOhm

Gibt es eine optimale Möglichkeit, die Einstellungen Range_Select_1 und Range_Select_2 auszuwählen, um die besten Ergebnisse bei der Rx-Messung zu erzielen?

Ich denke, ich werde 3 ADC-Messwerte erhalten (einen für jede Bereichsauswahl) und einen davon als meine beste Wahl auswählen. Wie wähle ich welche aus, ohne den wahren Wert von Rx im Voraus zu kennen (was den Zweck der Messung überhaupt zunichte machen würde).

Beachten Sie, dass ein logischer „0“-Ausgang nicht genau 0 Volt beträgt, wenn er Strom aufnehmen muss. Dadurch werden Ihre Messwerte auf einer niedrigen Widerstandsskala sehr ungenau, wo eine logische 0 etwa 0,5 Volt sein könnte.
@JoeHass guter Punkt, ich erwarte nicht, mehr als ein Milliampere oder so zu sinken

Antworten (3)

Die Frage ist etwas zweideutig, daher werde ich mein Bestes geben, um Ihre Frage richtig zu interpretieren.

Der Begriff „optimal“ bedarf einer weiteren Klärung. Vorausgesetzt, Sie haben drei Lesungen von an gemacht R X Wert, der sich zwischen den Lesungen nicht ändert, stellt sich nun die Frage, wie man den Wert herleitet R X Ist. Obwohl Sie einen der drei auswählen könnten, der dem wahren Wert am nächsten kommt, ist dies nicht der einzige Weg.

Durch eine ADC-Konvertierung werden die unteren Teile der Ziffern von einem analogen Lesevorgang abgeschnitten. Wie Sie sicher bereits wissen, ist die Gleichung zu finden R X ist wie folgt:

A = 2 N R L R X + R L

Wo A ist der N Bit analog lesen (sagen wir 10 Bit) und die ist die Bodenfunktion (d. h. Abrunden). Das Problem tritt beim Abrunden auf. Da das analoge Lesen die niederwertigen Bits wegwirft, ist jeder Wert von R X zulässig ist, die den gleichen abgerundeten Wert von ergibt A .

Der Wertebereich für die R X wird das gleiche produzieren A Wert ist wie folgt (durch eine einfache Umordnung der Terme):

R X  untere = ( 2 N A + 1 1 ) R L
R X  Oberer, höher = ( 2 N A 1 ) R L

wo der wahre Wert von R X kann überall im Bereich von sein R X  untere Zu R X  Oberer, höher . Wenn Sie eine analoge Ablesung machen würden N Bits und nahm eine gleichmäßige Verteilung an R X im Bereich von R X  untere Zu R X  Oberer, höher , würden Sie einfach den Mittelpunkt auswählen und fertig.

Aber wir haben nicht eine Lesung, wir haben drei. In diesem Fall gibt uns jeder analoge Lesevorgang einen Wertebereich für R X . Der Schnittpunkt aller drei ergibt einen eingeschränkten Bereich für einen zulässigen Wert von R X . Nehmen wir wieder eine Gleichverteilung von an R X Werte innerhalb dieses Wertebereichs, wäre die beste Wahl dann einfach der Mittelpunkt des eingeschränkten Bereichs.

Für mich ist dies die Definition von optimal: Wählen Sie den Mittelpunktwert von R X aus dem eingeschränkten Bereich. Dies minimiert Fehler unter der Annahme, dass die R X Wert innerhalb des eingeschränkten Bereichs einheitlich ist.

Betrachten Sie als Beispiel drei Lesewerte für einen wahren Wert von R X = 4424 . Dies würde zu (unter der Annahme der Anzahl von Bits N = 10 ):

A 1 k = 188
A 11 k = 730
A 111 k = 984

Das entspricht berechneten Reichweiten von R X für jeden niedrigeren Widerstandswert:

R X  1k niedriger = 4417,99
R X  1k oben = 4446.81

R X  11k niedriger = 4409.03
R X  11k oben = 4430.13

R X  111k niedriger = 4394.92
R X  111k oben = 4512.20

Die Auswahl der Untergrenze und der Obergrenze, um den kleinsten Wertebereich zu finden, gibt uns die Wahl R X  1k niedriger Und R X  11k oben bzw. Die Wahl des Mittelpunkts aus diesem eingeschränkten Bereich ergibt:

R X  11k oben R X  1k niedriger 2 + R X  1k niedriger  = 4424.06

Die Auswahl der Mittelpunkte für die einzelnen Bereiche würde ergeben R X  1k = 4461.37 , R X  11k = 4453.56 Und R X  111k = 4419.58 bzw. Bitte beachten Sie, dass ich den Wert 4424 ausgewählt habe, um dieses Beispiel zu veranschaulichen.

Am Ende erhalten Sie nur 1,5 zusätzliche Bits an Informationen, und möglicherweise lohnt sich diese Art der feinkörnigen Analyse nicht, insbesondere wenn diese Berechnung auf einem eingebetteten System mit begrenzten Ressourcen durchgeführt werden muss.

Eine Alternative, die vielleicht eher dem entspricht, was Sie ursprünglich wollten, besteht darin, einen der ADC-Messwerte basierend auf dem durchschnittlichen absoluten Fehler auszuwählen.

Wenn wir nehmen R X  untere Und R X  Oberer, höher wie oben, dann ist eine Möglichkeit, den Fehler für einen gemessenen Wert relativ zum wahren Wert zu messen:

M = R X  Oberer, höher R X  untere 2 + R X  untere
Fehler = R X  untere M ( M X ) D X + M R X  Oberer, höher ( X M ) D X

Messen Sie also den absoluten (und unskalierten) Fehler vom Mittelpunkt des Bereichs.

Auf diese Weise können Sie eine Lösung in geschlossener Form für jeden Wertebereich erhalten und den absoluten Fehler für jede Widerstandskombination berechnen. Ich habe dies getan und GNUPLOT verwendet, um ein hübsches Bild zu erzeugen (ADC-Konvertierung wird mit 10 Bit angenommen):

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass dies auf einer Log-Log-Skala aufgetragen ist. Wenn man sich das Diagramm ansieht, sieht es so aus, als wären die Auswahl von 3316 und 34943 geeignete Übergangspunkte.

Ich habe in diesem Fall einen absoluten unskalierten Fehler als Definition von "optimal" ausgewählt, und dies ist möglicherweise nicht angemessen. Sobald Sie definiert haben, was für Ihre Bedürfnisse optimal ist, sollten Sie in der Lage sein, geeignete Werte für Kreuzungspunkte auszuwählen, wenn Sie diese Methode verwenden möchten.

Bitte teilen Sie mir mit, wenn ich bei der Analyse irrtümlich vorgegangen bin.

Das ist unglaublich gründlich, vielen Dank! Ich denke, die Auswahl des ADC-Werts, der mich dem mittleren ADC am nächsten bringt, ist für meine Zwecke angemessen, aber dies ist immer noch eine fantastische Antwort

Bei den falschen Bereichen liegt der Messwert direkt am Rand der Skala. In der falschen Skala ergibt ein zu kleiner Widerstand einen Messwert von fast 5 V, und ein zu großer Widerstand zieht den Messwert auf nahezu 0 V herunter.

Zum Beispiel ist ein 500-Ohm-Widerstand neben 111 K nicht sehr bedeutend, und daher gibt der Teiler fast 5 V aus. Oder ein 200.000 Rx neben 1.000 wird die 1.000 überschwemmen. Der Messwert wird fast 0 V betragen.

Wählen Sie den Bereich, in dem der Messwert am nächsten an den mittleren 2,5 V liegt. Der Messwert beträgt genau 2,5 V, wenn der Bereichswiderstand gleich Rx ist, was ideal ist.

Übrigens habe ich das Gefühl, dass Sie einen digitalen Topf neu erfinden. Sie könnten R1, R2 und R3 durch ein digitales Poti ersetzen, das in 256 Schritten von 0 bis 100 K reicht und es als Rheostat verwendet. Um einen Rx zu finden, der im Bereich von etwa 500 Ohm bis 100 K liegt, können Sie einfach den digitalen Poti betätigen (umgekehrt, falls Rx kurzgeschlossen ist!), Bis Sie einen Messwert von etwa 2,5 V erhalten (der Rheostat ist ungefähr 1 :1 mit dem Widerstand). Rx wird dann direkt aus dem Wert des Rheostaten erhalten. Etwas zusätzliche Logik könnte innerhalb angemessener Grenzen mit abgelegenen Fällen umgehen. Wenn Rx beispielsweise ein Megaohm ist, beträgt die Spannung, wenn das Poti auf die vollen 100 K eingestellt ist, nur 0,455 V. An diesem Punkt hören Sie auf und schlussfolgern, dass Rx zehnmal größer ist.

Ich erfinde kein digitales Potentiometer neu, aber ich verstehe, was Sie meinen, ich habe im Grunde ein nichtlineares digitales Potentiometer mit zwei Abgriffen gemacht, lol ... ironischerweise habe ich tatsächlich ein echtes digitales Potentiometer an anderer Stelle in meiner Schaltung
Würde dies nicht zu Problemen mit einem Rx-Wert unter etwa 1000 Ω führen? Und das gilt nur für absolut maximalen Impulsstrom, wenn die digitalen Poti-Abgriffe nahe 0 (50 mA) sind. Die meisten digitalen Potis haben einen deutlich niedrigen empfohlenen Maximalstrom durch den Wischer und das High/Low-End des Potis, wie 2 bis 10 mA! Jeder signifikant niedrige (unter ~800Ω) Rx-Widerstand wird einen digitalen Topf braten.

Im Wesentlichen implementieren Sie dasselbe wie ein Auto-Ranging-Multimeter.

Sie müssen entscheiden, wie hoch- oder niederohmig Sie den Widerstand messen möchten, und diesen dann in einige Bereiche unterteilen. Entscheiden Sie dann, was jeder Bereich am ADC darstellt, wie eine Wahrheitstabelle.

Wenn Rx / RangeX einen Adc-Wert unter 1 V liefert, dann schalten Sie in den nächstniedrigeren Bereich. Wenn dies immer noch der Fall ist, wechseln Sie in den nächstniedrigeren Bereich. Wiederholen Sie dies, bis der ADC-Bereich etwas Nützliches ist, mit dem Sie arbeiten können.

Aus der Frage:

Sie verwenden eine Widerstandsleiter, wie zum Beispiel 9 M + 900 k + 90 k + 10 k. Das gibt Ihnen insgesamt 10 M und Abgriffe bei 1:10, 1:100 und 1:1000. Diese existieren in Einzelkomponentennetzwerken mit engen relativen Toleranzen (wichtiger als absolute Toleranz).

Das einzige, was ich vorschlagen würde, ist sicherzustellen, dass Sie ein genaues Ohmmeter verwenden, um die von Ihnen gewählten Widerstände zu testen, und einen auswählen, der näher an Ihrem gewählten Wert liegt. Aufgrund von Toleranzen kann ein 100-kΩ-10-%-Widerstand bis zu 10 kΩ in beide Richtungen abweichen. Sie müssen also genau messen und notieren, was es tatsächlich ist.

Siehe die Antwort auf Wie funktioniert die automatische Bereichswahl in einem Multimeter? Was ist die Schaltung? für mehr Details.