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 R1
messe 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 R2
und 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:
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 Aref
oder GND
einer der R_a
oder R_b
Stifte 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.
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.Antworten:
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. Ω Ω
quelle
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).
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Zum ersten:
während auf dem zweiten
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.
quelle
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!R1
) und meines Referenzwiderstands simuliertR2
. An beiden Extremen sind die Werte unglaublich "steppig", wobei ein ADC-Wert einen großen Bereich von abdecktv_out
. Ich bin mir nicht sicher, was üblich ist, wenn versucht wird, einen weiten Bereich potenzieller Widerstände zu messen.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:
Für das Schema auf der linken Seite stelle ich mir meinen Topf-Sollwert
setpt
als eine Art "stromaufwärtigen" Widerstand vor, der vom Scheibenwischer erzeugt wird, und ich werde einenR2
als meinen "stromabwärtigen" Widerstand erhalten.R1
, meine Messung des Interesses und amsetpt
Ende einen äquivalenten Widerstand bildenR_eq
, was wieRpar
rechts gezeigt ist. Ich simulierte verschiedene Bereiche meines Materials von 1000 bis 20.000 Ohm und eine Reihe von Topfsollwerten. Für jedensetpt
:Hier ist eine Handlung von
R_eq
vs.R2
mitR1
gruppiert / farbig:Es funktioniert also , aber beachten Sie, dass das Höchste, das
R2
ich erreichen kann, viel geringer ist alsR1
wenn 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
P0A
oder kurzzuschließen oderP0B
einen davon (im Vergleich zum Wischer) als Eingabe für meinen ADC zu verwenden. Ich stelle mir eine Schaltung wie diese vor: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:
Hier sind die entsprechenden Rohdaten mit einem Fehler
abs((adc-measured)/adc)
in Prozent: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):
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.
quelle
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.
quelle