ich möchte gern den Widerstandswert eines Potentiometers mit dem ESP8266 digitalisieren und auf einem LCD ausgeben. Dazu habe die abgebildete Schaltung aufgebaut und in Arduino Studio ein Programm geschrieben, dass den Ausgang des Potentiometers am Pin A0 einliest und auf einem LCD ausgibt.
Wie kann ich den Eingangswert an A0 in Ohm umwandeln?
ich möchte gern den Widerstandswert eines Potentiometers mit dem ESP8266
digitalisieren und auf einem LCD ausgeben.
Das ist konzeptioneller Schwachsinn. Kein Schwein interessiert sich für den Widerstandswert einer Potentiometer-Schaltung. Eine Potentiometer-Schaltung dient schon rein vom Konzept her dazu, einen Spannungswert zu erzeugen. Und genau nur den kann man auch messen.
Um davon ausgehend dann irgendwelche Widerstände anzuzeigen, muß wenigstens einer bekannt sein, sinnvollerweise der Gesamtwiderstand des Potentiometers.
Mit den überaus trivialen Gesetzen eines Spannungsteilers kann man dann auch die beiden Widerstandswerte oberhalb und unterhalb des Potentiometer-Abgriffs anzeigen...
Doch, eigentlich schon. Denn ein 10k Poti hat immer 10k. Und wenn man den Schleifer anschaut, dann gibt es 2 Widerstände, nämlich zu jedem der beiden anderen Potianschlüsse hin.
Wie gesagt,das ohmsche Gesetz bringt Dich zum Ziel.
Ich sehe da (neben grundlegenden Wissenslücken) lediglich einen simplen Dreisatz:
aktADC/maxADC = R_SchleiferNachGND/R_Poti
Das umgestellt nach dem R_SchleiferNachGND und fertig.
die beiden Widerstandswerte oberhalb und unterhalb des
Potentiometer-Abgriffs anzeigen...
Du hast in deinem Kopf ein völlig anderes Bild der Schaltung als der TO. Denn weil hier kein üblicher Schaltplan sondern diese unsägliche Steckbrettkritzelei verwendet wird, gibt es keinen Spannungsteiler und deshalb auch keinen "oberen" und "unteren" Widerstand. .
Ich verstehe leider gar nicht, warum es konzeptioneller Schwachsinn ist, wenn man den Widerstand ausgeben möchte, den man über das Potentiometer eingestellt hat.
Ich will das Potentiometer in einem nächsten Schritt in einer Spannungsteiler-Schaltung mit einem NTC kombinieren und das analoge Temperatursignal digitalisieren. Dazu benötige ich doch den Widerstandswert, den man über das Potentiometer eingestellt hat, um die entsprechenden Werte aus dem Datenblatt des NTC zu ermitteln.
Ich habe den Ausgang des Potentiometers mit dem analogen Eingang des ESP8266 verbuden. Ich weiß leider nicht, wie ich das Ergebnis, das ich in Zeile 15 messen, interpretieren soll. Ist das schon die Spannung in mV oder muss diese erst noch qunatisiert werden?
Dazu benötige ich doch den
Widerstandswert, den man über das Potentiometer eingestellt hat, um die
entsprechenden Werte aus dem Datenblatt des NTC zu ermitteln.
Den Widerstandswert kannst du aber nur bestimmen, indem du z.B. einen bekannten Vergleichswiderstand oder Referenzkondensator benutzt.
Eine Messung ist immer der Vergleich mit einem Normal, das als Bezugsgröße dient.
Also Sie schalten in die Leitung vom Poti nach GND einen bekanten (Wert) Widerstand.Die Spannungen (oder die eingelesenen Werte) verhalten sich wie die Widerstände.
@Torben:
Ist Dir bewußt, dass der ESP8266 maximal 1V am ADC Eingang auflöst?
Welche Spannung legst Du am Poti an?
Ist das ein lineares oder logarithmisches Poti?
Welchen Widerstand hat das Poti?
Wenn Du also 1V am Poti anlegst, dann misst Du den Ohm Widerstand anteilig am Gesamtwiderstand entsprechend den Volt. Bei einer 10bit Auflösung des ADC bekommst Du Werte zwischen 0..1023. Je höher der Wert, desto näher bist Du an den 1V. Also Wert: 512 -> Mitte -> 0.5V -> (meinetwegen Gesamtwiderstand 10k) 5k. Der Rest ist Dreisatz. Wie Lothar geschrieben hat.
LG
Ich will das Potentiometer in einer Spannungsteiler-Schaltung mit
einem NTC kombinieren und das analoge Temperatursignal digitalisieren.
Das macht man aber anders: Man nimmt einen Festwiderstand, der etwa
so gross ist wie der Widerstand bei mittlerer Temperatur und misst
dann die Spannung am Verbindungsopunkt. Dann kann man den Ausgangs-
wert des AD-Wandlers in Beziehung zu der Temperatur messen.
Ich verstehe leider gar nicht, warum es konzeptioneller Schwachsinn ist,
wenn man den Widerstand ausgeben möchte, den man über das Potentiometer
eingestellt hat.
Weil es eben "den Widerstand" nicht gibt. Sondern es gibt 3 Widerstände: den Gesamtwiderstand, der aufgedruckt ist und die beiden Teilerwiderstände, die mit dem Schleifer eingestellt werden.
Ich will das Potentiometer in einem nächsten Schritt in einer
Spannungsteiler-Schaltung mit einem NTC kombinieren und das analoge
Temperatursignal digitalisieren.
Du willst also die Temperatur messen und anzeigen. Für die Ermittlung der Temperatur ist aber die Spannung und der Widerstandwert nur ein unnötiger Umweg. Du kannst die Temperatur mit ein wenig Nachdenken und Mathematik direkt aus dem ADC-Wert 0..1023 bestimmen.
Mein Schaltung daüfr würde so aussehen:
1
ESP
2
3V3 -----o----------------- 3V3
3
|
4
Rv
5
| Ut
6
o----------------- ADC (0..1V)
7
|
8
NTC
9
|
10
GND -----o----------------- GND
Bei geschickter Auswahl des RV ist die Ut für den zu messenden Tempersturbereich im erlaubten Eingangsbereich des ADC.
Weil das nur ein 10-Bit ADC ist, könnte man im Speicher ein Tabelle mit 1024 Temperaturwerten ablegen und mit dem ADC-Wert als Index darauf zugreifen.
Ich würde da allerdings über eine kleinere Tabelle mit 9 oder 17 Stützpunkten gehen und zwischen diesen Stützpunkten linear interpolieren. Der NTC hat nämlich selber schon eine nette Toleranz und der (ziemlich schlechte) ADC des ESP auch.
Die im Eröffnungsbeitrag gezeigte Schaltung eignet sich dazu, die Stellung des Potentiometers auszulesen. Es gibt eine Spannung zwischen 0 und 3,3 Volt ab, welche direkt von der Stellung abhängt.
Der ADC des Mikrocontrollers kann diese Spannung messen. Weil auf dem Board noch ein Spannungsteiler zwischen dem Anschluss-Pin und dem ADC liegt, deckt der A0 Eingang den vollen Bereich zwischen 0 und 3,3 Volt ab.
Wie kann ich den Eingangswert an A0 in Ohm umwandeln?
Darin erkenne ich keinen Sinn. Das Potentiometer hat immer 10 kΩ. Du kannst so (mit dieser Schaltung) nur die Stellung des Potentiometers messen. Das Ergebnis von analogRead(A0) ist eine Zahl um Bereich 0 bis 1023. Du kannst die Zahl z.B. durch 10,23 teilen, um sie für die Anzeige auf 0 bis 100 (Prozent) zu skalieren.
Weil auf dem
Board noch ein Spannungsteiler zwischen dem Anschluss-Pin und dem ADC
liegt, deckt der A0 Eingang den vollen Bereich zwischen 0 und 3,3 Volt
ab
Und die beiden Spannungsteiler beeinflussen sich nicht gegenseitig?
ESP
3V3 -----o----------------- 3V3
|
Rv
| Ut
o----------------- ADC (0..1V)
|
NTC
|
GND -----o----------------- GND
Bei geschickter Auswahl des RV ist die Ut für den zu messenden
Tempersturbereich im erlaubten Eingangsbereich des ADC.
Genau so - sofern die ADC (0..1V) in Stein gemeißelt sind.
An den TO:
Besser wäre jedoch, da stände ADC (0..3V3). Oder auch ADC (0..Vref) und Rn würde ebenso an Vref hängen. Dann nämlich kürzt sich die 3V3 bzw. Vref aus dem ganzen Formelwerk, d.h. die Messung wird dann unabhängig von dem genauen Wert der Spannung. (Stichwort ratiometrische Messung).
Ich würde da allerdings über eine kleinere Tabelle mit 9 oder 17
Stützpunkten gehen und zwischen diesen Stützpunkten linear
interpolieren.
Wiederum an den TO:
Die 9 bzw. 17 Stützpunkte ergeben sich aus der Notwendigkeit, dass die Tabellen-Interpolation nach einer Division durch (Anzahl der Stützpunkte)-1 verlangt. Die Division reduziert sich in dem Fall auf eine Schiebeoperation, am Beispiel um 3 bzw. 4 Stellen.
Wenn Du wirklich den Widerstandswert messen möchtest, dann muss Dir sowohl Spannung als auch Strom an diesem Widerstand bekannt sein.
Wenn Du den Strom messen möchtest, benötigst Du einen bekannten Widerstand, über dem Du die Spannung misst (den Widerstand nennt man dann Shunt). Dann kannst Du den Strom errechnen.
In der Reihenschaltung aus Sensor und Shunt fließt der Strom durch beide Widerstände. Über beiden musst Du die Spannung messen.
Mit einer bekannten Versorgungsspannung kannst Du mit einer Messung zwischen beiden Widerständen beide Spannungen gleichzeitig messen. (Spannung über einen Widerstand gegen GND und über den anderen Widerstand gegen Versorgungsspannung.) Denn die Summe beider Spannungen ist immer die Versorgungsspannung.
Und die beiden Spannungsteiler beeinflussen sich nicht gegenseitig?
Doch tun sie. Deswegen nimmt man ein Poti mit erheblich weiger Innenwiderstand, als der Spannungsteiler auf dem Board hat. Dann hält sich die Beeinflussung in einem erträglichen Rahmen. Der ADC ist eh nur ein grobes Schätzeisen. Laut Datenblatt kann der Messwert bis zu 20% vom idealen Wert abweichen - wenn WLAN deaktiviert ist. Ganz so schlimm hatte noch es noch nicht, aber 10% Abweichung sind durchaus normal.
ich habe vermutlich ein paar Dinge durcheinander geworfen. Sorry, ich mache gerade meine ersten Geh-Versuche auf diesem Gebiet und bin noch sehr unerfahren.
Wenn ich stefanus richtig verstanden habe, dient meine Schaltung mit Potentiometer höchstens dazu, die Spannung zwischen 0 und 3,3V zu digitalisieren.
Ich hatte irgendwo aufgeschnappt, dass man bei der Temperaturmessung mit NTC im Spannungsteiler ebenfalls gern auf ein Potentiometer zurückgreift. Möglicherweise habe ich hier zwei Dinge durcheinander gebracht.
Ich denke für de Einstieg ist es ausreichend, wenn ich versuche, die Spannung, die ich mit dem Potentiometer einstellen kann, zu digitalisieren.
Der ADC hat eine Auflösung von 10 Bit.
Seine Referenzspannung beträgt 3,3V
Wie läuft die Digitalisierung ab? Aus der Theorie weiß ich, dass man den gemessenen Spannungswert durch die Quantisierungsstufe teilt.
Quantisierungsstufe = 3V3/1023=0,003
Digitalisiertes Messergebnis = raw*0,003
Ich hatte irgendwo aufgeschnappt, dass man bei der Temperaturmessung mit
NTC im Spannungsteiler ebenfalls gern auf ein Potentiometer
zurückgreift. Möglicherweise habe ich hier zwei Dinge durcheinander
gebracht.
Scheint so. Ein Potentiometer in Kombination mit einem Temperatursensor könnte dazu dienen, die gewünschte Raumtemperatur einzustellen. Das isnd dann aber zwei getrennte analoge Eingaben:
a) Der Soll-Wert vom Poti
b) Der Ist-Wert vom Sensor (Spannungsteiler aus NTC + Widerstand)
In beiden Fällen misst der ADC keinen Widerstandswert, sondern eine Spannung. Erst durch Mathematik wird daraus eine Temperatur-Anzeige auf dem Display.
Ich denke für de Einstieg ist es ausreichend, wenn ich versuche,
die Spannung, die ich mit dem Potentiometer einstellen kann, zu
digitalisieren.
Ja, man soll immer klein anfangen, damit man die Sache auch verstehen kann. Und sich dann schrittweise bis zum Ziel weiter durch arbeiten.