Verwendung eines digitalen Potentiometers in einem Spannungsteiler

7

Ich verwende einen MCP3008 ADC und ein digitales Potentiometer MCP4131-103 (10k), um eine Art "einstellbaren Spannungsteiler" zu erstellen.

Für das Projekt variiert der Widerstand, den ich messe, und ich hoffte, mit dem MCP4131 meinen Referenzwiderstand im laufenden Betrieb einstellen zu können. Nämlich:

Vin
|
R1
|
|--Vout
R2
|
GND

Ich R1messe und protokolliere (ein Material) im Laufe der Zeit und es steigt von vielleicht 500-20k Ohm über die Dauer des Interesses. Wenn ich einen festen Widerstand für verwende R2, erhalte ich eine schlechte Auflösung, wenn der Wert nicht mit dem aktuellen Wert von übereinstimmt R1. Ich hatte gehofft, dass sich der digitale Topf basierend auf dem laufenden Durchschnitt anpasst, damit ich auch meine Auflösung beibehalte.

Ich glaube, ich habe sowohl den MCP3008 ADC als auch den MCP4131, die einzeln mit meinem Raspberry Pi 3 unter Verwendung von SPI arbeiten, aber sie scheinen nicht so zu funktionieren, wie ich es in einem Spannungsteiler-Setup erwartet habe.

Beim Verkabeln des MCP3008 wie in dieser Adafruit-Anleitung habe ich einen Spannungsteiler mit einem 10k-Widerstand R2und der folgenden Formel verwendet, um Folgendes zu finden R1:

v_out = adc * 3.3/1024
R1 = R2*(3.3 - v_out)/v_out

| resistor used |  calculated |
|---------------+-------------|
|          1000 |        1010 |
|          4700 |        4628 |
|         47000 |       46574 |

Das bestätigte, dass mein ADC anscheinend gut funktioniert.

Außerdem habe ich die Einstellungen für den MCP4131 durchlaufen und den Wert zwischen High (3,3 V) und Wischer mit einem Multimeter manuell abgelesen. In jedem Fall sende ich einen Wert von target resistance * 128/10000. Ich habe die Ergebnisse aufgezeichnet und bekomme:

Geben Sie hier die Bildbeschreibung ein

Das sah gut genug aus, um zu glauben, dass der Topf auch angeschlossen ist und richtig funktioniert.

Wenn ich jetzt versuche, einen Spannungsteiler wie den oben genannten einzurichten, um sowohl den digitalen Poti als auch den ADC zusammen zu testen, erhalte ich wackelige Ergebnisse. Ich habe zwei Konfigurationen zur Fehlerbehebung ausprobiert und den 4131 entweder als R1 oder R2 durch einen festen Widerstand als den anderen ersetzt:

wiper pin of 4131 --|-- resistor -- GND
                    |
                    |
                   ADC

3.3V -- resistor --|-- wiper pin of 4131
                   |
                   |
                  ADC

Wenn ich in der ersten Konfiguration einen 10k-Widerstand verwende und den digitalen Poti auf 5k stelle, erhalte ich einen ADC-Rohwert von 403 oder 1,3V. Ich hätte erwartet:

3.3V * (10000 / (10000+5000)) = 2.2V

Dies führt zu einer Berechnung von:

10000*(3.3 - v_out)/v_out = 15384 # should be 5000

Wenn ich Dinge austausche und die zweite Konfiguration verwende, erhalte ich einen ADC-Wert von 624 oder 2,01 V. Ich würde einen Wert von erwarten:

3.3V * (5000 / (10000+5000)) = 1.1V

Dies führt zu einer Berechnung von:

5000*(3.3 - v_out)/v_out = 3209 # should be 10000

Ich frage mich, ob das Potentiometer, weil es an und für sich ein Spannungsteiler ist, sich nicht so verhält, wie ich es erwartet habe. Soll ich zum Beispiel der Änderung meiner ADC Arefoder GNDeiner der R_aoder R_bStifte am Potentiometer? Oder liegt der Fehler in meinem Code und ich muss zwei Spannungsteiler hintereinander berücksichtigen?

Ich habe keine Beispiele für die Verwendung eines Potentiometers als einen der Widerstände in einem Spannungsteiler gefunden. Leider ist ein Potentiometer ist ein „mit einem Potentiometer in einem Spannungsteiler“ wird eine Tonne von Hits , die einfach erklären suchen , was Töpfe sind.

Vielen Dank für jede Anleitung, und ich freue mich, alle anderen Informationen zu veröffentlichen, die hilfreich wären.

Hendy
quelle
1
Versuchen Sie, W + A am digitalen Poti miteinander zu verbinden, und verwenden Sie dann B, um eine Verbindung zu Ihrem Spannungsteiler herzustellen.
Awjlogan
1
Liegen Sie immer unter der erforderlichen Eingangsimpedanz des ADC?
Szidor
@Szidor Ich schaue auf das Datenblatt und bin mir nicht sicher, in welcher Spezifikation dieser Wert aufgeführt ist. Anhand der ersten Schaltungsskizze oben wäre welcher Wert zu niedrig für R1(was ich messe). Die Bereiche sollten zwischen dem liegen, was ich aufgelistet habe: 500-20k Ohm. Ich habe zweimal überprüft, ob ich "Impedanz" verstehe und es scheint sich auf Wechselstromkreise zu beziehen ... Entschuldigung, wenn ich ein Missverständnis habe (Mech Engr hier!); Ich nahm an, Sie haben angedeutet, dass der Feed zu meinem ADC-Kanal einen minimalen Widerstand aufweist.
Hendy
@Hendy Eigentlich gibt es s Maximum. ADCs erfordern normalerweise einen Eingang, der nicht über einer bestimmten Impedanz liegt. Ich habe Werte zwischen 500 Ohm und 10 kOhm gesehen. Das heißt, wenn Sie größere Widerstände haben, kann der ADC - und normalerweise - ungenau sein.
Szidor
@Hendy Check Abbildung 4-2 im ADC-Datenblatt. Sie haben viel zu große Widerstände.
Szidor

Antworten:

2

Sie müssen Ihr digitales Potentiometer als Rheostat konfigurieren. Wenn Sie den Scheibenwischer an eine der Klemmen A oder B anschließen, erhalten Sie einen variablen Widerstand zwischen den beiden Klemmen A und B.

Laut Datenblatt befindet sich der Wischer auf B, wenn das digitale Potentiometer auf 0 eingestellt ist, und A auf Vollausschlag. Dies bedeutet, dass Sie wählen können, ob der Widerstand in der Nähe von 0 oder 10 k wenn Sie den Min / Max-Wert in der Software einstellen, je nachdem, ob Sie A oder B an den Scheibenwischer anschließen. Dies kann Ihre Software-Routine komfortabler machen. ΩΩ

awjlogan
quelle
Das ist fantastisch. Es scheint definitiv zu funktionieren und ich werde auch ein Update mit Daten veröffentlichen. Ich denke, Sie und @carloc sind beide richtig. Seine Antwort besagt, dass ich wirklich einen "doppelten Spannungsteiler" hatte, aber ich denke, dass das Überspringen der Klemmen die einzige praktische Lösung für das ist, was ich tun möchte, was meine Daten zeigen werden. Danke dafür.
Hendy
@ Hendy Pleasure, froh es zu hören.
Freuen
1
Ich wollte es meinem Q hinzufügen, aber es wurde viel zu lang. Es ist jetzt eine Antwort, die hoffentlich zeigt, warum das Akzeptieren des von @carloc dargestellten doppelten Spannungsteilers die Schaltung suboptimal macht. Das Springen des Wischers zu einer Nadel gab mir genau das, was ich wollte. Die verbleibende Frage ist die Genauigkeit. Wir werden sehen!
Hendy
1

Die Zahlen, die Sie lesen, stimmen fast perfekt mit der von Ihnen erstellten Schaltung überein (deren Schaltplan Sie leider noch nicht veröffentlicht haben, der jedoch umgekehrt werden kann).

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Zum ersten:

V=3.3V×3.33kΩ3.33kΩ+5kΩ1.32V

während auf dem zweiten

V=3.3V×5kΩ3.33kΩ+5kΩ1.98V

Ich denke jedoch nicht, dass dies die beste Schaltung für die genaue Messung von Widerständen ist: Der Wischerwiderstand, der normalerweise nicht stabil und sowohl in elektromechanischen als auch in elektronischen Potentiometern wiederholbar ist, wird wahrscheinlich Ihre Messungen verschieben und ausgleichen.

carloc
quelle
Dies ist, was mein Verstand zu begreifen begann, und ich konnte es nicht zum Klicken bringen. Das macht sehr viel Sinn. Wenn Sie von meiner Einzelschaltungsklasse im College in das mentale Gewölbe gehen, benutzen Sie 1/R_eq = 1/R1 + 1/R2, richtig? In der Tat habe ich die Schaltung nicht so gezeichnet wie Sie; Ich habe versucht, meine Konfigurationen zu zeigen, damit es kein Ratespiel war. Entschuldigen Sie die Unannehmlichkeiten und ich werde versuchen, meine Berechnungen basierend auf dieser großartigen Erkenntnis zu aktualisieren!
Hendy
Re. Die Genauigkeit, ich fühle mich wie zwischen den Übeln stecken. Ich war mir nicht bewusst, dass der Topf driften könnte und hoffte, dass er "genau genug" sein würde. Ich kann hierfür eine neue Frage stellen, habe aber die ADC-Werte für stark nicht übereinstimmende Werte meines Materials ( R1) und meines Referenzwiderstands simuliert R2. An beiden Extremen sind die Werte unglaublich "steppig", wobei ein ADC-Wert einen großen Bereich von abdeckt v_out. Ich bin mir nicht sicher, was üblich ist, wenn versucht wird, einen weiten Bereich potenzieller Widerstände zu messen.
Hendy
1
Kein Problem @Hendy, keine Notwendigkeit, sich zu entschuldigen :) Stellen Sie nur fest, dass es unklar war, ob die A & B Ihres Topfes an die Stromversorgung (wie sie tatsächlich sind) oder den Rheostat angeschlossen sind, und das ändert viel, was passiert. Sie haben Recht, wenn Sie "stufenförmige" Werte an Bereichsgrenzen finden. Dies wird als schlecht konditioniertes Problem bezeichnet. Wenn Sie versuchen können, die Messempfindlichkeit (dV / dR-Differenz) zu ermitteln, werden Sie feststellen, dass sich diese Werte über den Bereich stark ändern. Versuchen Sie, einige Spezifikationen, Reichweite und Genauigkeit zu skizzieren, kann der Widerstand schweben oder muss auf den Boden bezogen werden, die Systembandbreite (dh die Aktualisierungsgeschwindigkeit) und öffnen Sie ein weiteres Q.
carloc
Ich werde meine Frage später heute mit Daten aktualisieren, die auf dieser Antwort basieren, aber dies spricht definitiv an, was los war. Ich bin mir nicht sicher, ob ich es in der Praxis so einfach verwenden kann wie die andere Antwort, bei der ich Terminals überspringe. Ich kaue immer noch mental daran!
Hendy
1

Ich weiß, dass dies wahrscheinlich keine großartige Form ist, aber ich wollte zusätzliche Daten / Diagramme für andere erfassen, die darauf stoßen. Ich habe angefangen, es auf die Frage zu setzen, aber das hat es wirklich lang gemacht, also wird es nur als Antwort hier sitzen.


Vielen Dank an awjlogan und carloc für ihre Antworten.

Ich beginne mit Carloc , der ein wunderbares Schema von dem erstellt hat, was ich nicht in den Kopf bekommen konnte. Als ich diese Realität des "Doppelspannungsteilers" akzeptierte, musste ich nur meine Berechnungen ändern, fand jedoch, dass dies aufgrund der äquivalenten Widerstandsformel alles andere als ideal ist. Nehmen Sie dieses Szenario aus der Antwort, welche Konfiguration ich verwenden wollte:

Geben Sie hier die Bildbeschreibung ein

Für das Schema auf der linken Seite stelle ich mir meinen Topf-Sollwert setptals eine Art "stromaufwärtigen" Widerstand vor, der vom Scheibenwischer erzeugt wird, und ich werde einen R2als meinen "stromabwärtigen" Widerstand erhalten. R1, meine Messung des Interesses und am setptEnde einen äquivalenten Widerstand bilden R_eq, was wie Rparrechts gezeigt ist. Ich simulierte verschiedene Bereiche meines Materials von 1000 bis 20.000 Ohm und eine Reihe von Topfsollwerten. Für jeden setpt:

R2 = 10000 - setpt
R_eq = 1/((1/R1) + (1/setpt))

Hier ist eine Handlung von R_eqvs. R2mit R1gruppiert / farbig:

Geben Sie hier die Bildbeschreibung ein

Es funktioniert also , aber beachten Sie, dass das Höchste, das R2ich erreichen kann, viel geringer ist als R1wenn es größer wird. Genau deshalb wollte ich diesen Ansatz trotzdem ausprobieren.

Das heißt, die Beleuchtung der Schaltung war Gold und traf wirklich den Nagel auf den Kopf in Bezug auf die Messwerte, die ich für so seltsam hielt.


Weiter zu awjlogans Vorschlag, den Wischerstift und einen von P0Aoder kurzzuschließen oder P0Beinen davon (im Vergleich zum Wischer) als Eingabe für meinen ADC zu verwenden. Ich stelle mir eine Schaltung wie diese vor:

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Ich habe das Potentiometer in diesem Fall als zwei Widerstände gezeichnet, und der elektrische Fluss ist aufgrund des Kurzschlusses für die obere Hälfte irgendwie "blind". Auf diese Weise bekomme ich genau das, wonach ich gesucht habe, nämlich einen einfachen Spannungsteiler, bei dem ein Bein verstellbar ist.

carloc wies darauf hin, dass dies möglicherweise zu laut / ungenau / nicht wiederholbar ist und dass einige Überprüfungen erforderlich sind. Für meinen vorläufigen Test habe ich Folgendes mit einigen Widerständen und verschiedenen Potentiometersollwerten erhalten:

Geben Sie hier die Bildbeschreibung ein

Hier sind die entsprechenden Rohdaten mit einem Fehler abs((adc-measured)/adc)in Prozent:

   setpt     adc  measured  error
1   2000  9441.3      9880   4.65
2   4000  9429.5      9880   4.78
3   6000  9515.2      9880   3.83
4   8000  9467.0      9880   4.36
5  10000  9504.8      9880   3.95
1   2000  4340.6      4610   6.21
2   4000  4376.3      4610   5.34
3   6000  4431.2      4610   4.03
4   8000  4431.0      4610   4.04
5  10000  4442.9      4610   3.76
1   2000   913.2       981   7.42
2   4000   934.9       981   4.93
3   6000   958.1       981   2.39
4   8000   914.0       981   7.33
5  10000   998.9       981   1.79

Zum Abschluss werden wir sehen, ob dies für meinen Testfall funktioniert. ~ 5% ist nicht zu schlecht, aber es ist auch nicht großartig. Vergleichen Sie, dass eine Wiederholung meines ersten Tests des ADC selbst, angepasst an den gemessenen Wert meines 10k R2 (9880):

     adc  measured  error
0    998       981   1.70
1   4635      4610   0.54
2  46640     46500   0.30

Das lässt 5% ziemlich schlecht aussehen!

Ich werde eine neue Frage stellen, wie ich den Widerstand eines variablen Materials messen kann, aber dies war eine lustige Übung und hoffentlich hilft sie jemandem auf der Straße.

Hendy
quelle
0

Ihre Widerstände sind für diesen ADC zu groß (siehe Abbildung 4-2 des Datenblattes). Sie können einen Puffer direkt vor dem ADC hinzufügen, z. B. einen Operationsverstärker-basierten Einheitsverstärkungspufferverstärker. Ich denke, ein MCP6001 sollte für Ihre Konfiguration ausreichen.

Geben Sie hier die Bildbeschreibung ein

Szidor
quelle
Ich habe nicht genug Mitarbeiter auf dieser Website, um sie zu bearbeiten, aber ich habe die Abbildung hinzugefügt, auf die Sie sich beziehen. Es ist hilfreich einzuschließen, damit andere leicht sehen / verstehen können. Ich verstehe immer noch nicht, wie das geht. Nichts deutet darauf hin, dass sie nach meiner Lektüre "zu groß" sind, nur dass die Taktrate verringert werden muss, wenn Sie höher werden, um die Genauigkeit aufrechtzuerhalten. Bitte klären Sie, ob ich in dieser Interpretation falsch bin.
Hendy
Das Reduzieren der Taktrate hilft nur bis zu mehreren kOhm. Ich rate dringend davon ab, Werte in der Nähe oder außerhalb von veröffentlichten Diagrammen zu verwenden.
Szidor