Hallo,
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?
Torben S. schrieb:> 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...
C-Versteher schrieb:> Das ist kein konzeptioneller Schwachsinn.
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.
c-hater schrieb:> 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?
Torben S. schrieb:> 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
Torben S. schrieb:> 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.
Helge S. schrieb:> Ist Dir bewußt, dass der ESP8266 maximal 1V am ADC Eingang auflöst?
Da bringst du wohl etwas durcheinander.
Der ADC des ESP8266 besitzt eine Auflösung von 10 Bit.
Du meinst wahrscheinlich den FS-Wert, i.e. die Referenzspannung
Torben S. schrieb:> 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.
Torben S. schrieb:> 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.
Im Arduino Framework benutzt man analogRead(A0), um den Eingang
abzufragen.
https://www.arduino.cc/reference/de/language/functions/analog-io/analogread/> 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.
Stefan F. schrieb:> 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?
Lothar M. schrieb:> 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).
Lothar M. schrieb:> 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.
Messungen gehen nie ohne Referenzen!
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.
Nun sollte es langsam aber klick machen!
Gruß
Jobst
STK500-Besitzer schrieb:> 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.
Hallo,
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
Ist das korrekt?
Torben S. schrieb:> 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.
Torben S. schrieb:> ... Ist das korrekt?
Ja. Ich glaube du musst aber durch 1024 teilen. Wobei der Unterschied
praktisch wohl im Rauschen untergeht.