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.