Hallo Forengemeinde,
ich kann mir aktuell die erweiterte 16 Bit Auflösung des DS18S20
anschauen. Das funktioniert soweit.
Was mir nicht gefällt ist die 16 Bit Auflösung. Ich bin vom Thermometer
aber 10 Bit gewöhnt.
Aktuell bekomme ich also folgende Nachkommastellen (vielfache von
0,0625):
0,0625
0,125
0,1875
0,25
0,3125
0,375
0,4375
0,5
0,5625
0,625
0,6875
0,75
0,8125
0,875
0,9375
1
Ich steh irgendwie auf dem Schlauch wie ich das in 10 Bit Auflösung (0,1
0,2 0,3 ....)umrechnen kann.
Hat jemand einen Tipp?
Gruß Paul
Sven B. schrieb:> 10 Bit hat mit 0.1, 0.2, 0.3 relativ wenig zu tun ... dafür sollte man> den Wert eher runden:> temp = ((int)(temp*10)) / 10
Der DS18B20 gibt die Werte als Integer in Einheiten von 1/16°C raus.
Paul schrieb:> Aktuell bekomme ich also folgende Nachkommastellen (vielfache von> 0,0625):
Die Zahlenwerte mit den Nachkommastellen werden von deiner (uns
unbekannten) Software erzeugt.
Paul schrieb:> Ist (temp *10) / 10 nicht wieder temp?
Ja, aber das (int) macht aus Float ein Int ohne Nachkomma-Ziffern.
Paul schrieb:> ach, es gibt "round" in C
Ist sogar noch schöner als int, aber man kann auch int nehmen und vorher
0,5 addieren.
Paul schrieb:> Aktuell bekomme ich also folgende Nachkommastellen (vielfache von> 0,0625):
Soviel ich weiß, hat der DS18S20 eine Genauigkeit von +/- 0.5C und
eine Auflösung von 0.5C bei 9bit (bit 0).
Genauer als 0.5C kann es also nicht sein, alles andere ist Blödsinn,
selbst wenn man mit 1600 bit, anstatt mit 16 bit rechnet.
Marc V. schrieb:> Soviel ich weiß, hat der DS18S20 eine Genauigkeit von +/- 0.5C und> eine Auflösung von 0.5C bei 9bit (bit 0).
Es gibt noch einen Rest in einem weiteren Byte, mit dem man auf 1/16
Auflösung kommt. Der Unterschied zum 18B20 ist nur die Art, wie man an
diese Auflösung kommt.
> Genauer als 0.5C kann es also nicht sein, alles andere ist Blödsinn,
Genauer als 0,5°C wird es zwar nicht, aber grad bei
Innen/Aussentemperaturen ist eine höhere Auflösung zwecks Tendenzanzeige
durchaus nützlich.
A. K. schrieb:> Es gibt noch einen Rest in einem weiteren Byte, mit dem man auf 1/16> Auflösung kommt.
Das ist mir bekannt, aber diese Auflösung ist nutzlos wenn die
Genauigkeit selbst dafür nicht reicht.
> Innen/Aussentemperaturen ist eine höhere Auflösung zwecks Tendenzanzeige> durchaus nützlich.
Ja, aber das ändert nichts an der Genauigkeit, somit ist die Tendenz
nur auf +/- 0,5C genau. Durch diese 0,5C Ungenauigkeit kann es dann
sehr wohl eine zackige Kurve geben, obwohl die Temperatur linear
ansteigt oder sogar gar nicht verändert wird.
Marc V. schrieb:> Ja, aber das ändert nichts an der Genauigkeit, somit ist die Tendenz> nur auf +/- 0,5C genau.
Zeitliche Stabilität und Linearität sind de fakto deutlich besser als
die garantierte absolute Genauigkeit. Deshalb ist eine Tendenzanzeige
mit 1/16 °C Schritten durchaus zu gebrauchen, auch wenn die absolute
Genauigkeit nicht mithält.
Schau dir so ein Teil mal im praktischen Betrieb an. Die theoretisch
erlaubte zackige Kurve tritt zumindest bei mir in der Praxis eben nicht
auf. Alle 5 Sensoren, die ich grad in Beobachtung habe, schwanken
maximal in der letzten Stelle. Meist nicht einmal dies.
Marc V. schrieb:> somit ist die Tendenz nur auf +/- 0,5C genau.
Aber die "Tendenz" bezieht man immer auf die vorher gemessenen Werte,
und die Abweichung zwischen "realer" und "gemessener" Temperatur ändert
sich nicht Sprunghaft.
Der "differentielle Teil" (AC-Anteil) ist also quasi vom DC-Fehler
befreit, wenn diese Formulierung hilft.
@A. K.: Wie Du schon sagtest, nur anders formuliert. Hoffentlich
versteht er es nun.
@Paul: Problem gelöst? Thread für Debatten freigegeben?
A. K. schrieb:> Zeitliche Stabilität und Linearität sind de fakto deutlich besser als> die garantierte absolute Genauigkeit. Deshalb ist eine Tendenzanzeige> mit 1/16 °C Schritten durchaus zu gebrauchen, auch wenn die absolute> Genauigkeit nicht mithält.
Leider ist die Rauschamplitude des Analogteils vom DS18B20 nicht groß
genug, so dass man auch bei Mittelung nicht über die Auflösung von 1/16
Grad hinaus kommt.
Tom schrieb:> so dass man auch bei Mittelung nicht über die Auflösung von 1/16> Grad hinaus kommt
Was erwartest Du? Maxim/Dallas wird die ADC-Auflösung schon sinnvoll an
das Rauschen angepasst haben, darin sind die gut!
Aber 1/16 Grad Auflösung bei 1/2 Grad Genauigkeit für 60 Cent sind doch
schon genial. Ich habe viel gesucht und nichts besseres gefunden.
Torsten C. schrieb:> @A. K.: Wie Du schon sagtest, nur anders formuliert. Hoffentlich> versteht er es nun.
Mir scheint, du versteht es nicht.
Ob der Fehler bei einem bestimmten Exemplar größer oder kleiner ist,
tut nichts zur Sache. Garantiert ist nur +/- 0,5C und damit hats.
> Der "differentielle Teil" (AC-Anteil) ist also quasi vom DC-Fehler> befreit, wenn diese Formulierung hilft.
Nein, tut es nicht. Quasi vom Fehler befreit ist eben nur "quasi".
Wenn er 4 hintereinanderfolgende differentiele Messungen durchführen
würde, dann könte das sogar stimmen. Aber hier ist jede Messung fur
sich und hat mit vorhergehenden genau nichts zu tun.
Hoffentlich verstehst du es nun.
P.S.
Und lerne "Auflösung" und "Genauigket" auseinander zu halten.
Bestes Beispiel ist GPS.
Marc V. schrieb:> Ob der Fehler bei einem bestimmten Exemplar größer oder kleiner ist,> tut nichts zur Sache.
Wenn ein Sensor bei langsamer realer Temperaturabsenkung über zig
Messungen hinweg allenfalls in der letzten Stelle schwankt und darüber
hinaus nur sinkende Werte liefert, dann ist das eine praktisch gut
brauchbare Tendenzanzeige. Weil man das dann auch umdrehen kann, d.h.
wenn die Anzeige steigt, dann ziemlich sicher auch die reale Temperatur.
Dass man auf dieser Basis keine formelle Präzision bekommt ist klar.
Ebenso, dass man das nicht einklagen kann. Aber darum geht es meist
nicht. Ich will wissen ob es tendentiell wärmer oder kälter wird. Und
dafür reicht es faktisch aus.
A. K. schrieb:> Dass man auf dieser Basis keine formelle Präzision bekommt ist klar.> Ebenso, dass man das nicht einklagen kann. Aber darum geht es meist> nicht. Ich will wissen ob es tendentiell wärmer oder kälter wird. Und> dafür reicht es faktisch aus.
Stimme ich voll zu.
@Vescomp: Schade, dann hilft wohl nur,
was A. K. schrieb:> Schau dir so ein Teil mal im praktischen Betrieb an.Wir haben das Kapitel hinter uns.
Marc V. schrieb:> Stimme ich voll zu.
PS: Ach, nun doch? Dann sind wir uns ja einig. Schön!
Faktisch rechnen sich die Bastler immer alles schön. Da sind die
Grundlagen der Messtechnik halt weit weg.
Aber solange die Tendenz stimmt ist man glücklich (und stolz)...
Torsten C. schrieb:> Wir haben das Kapitel hinter uns.
Wer ist wir ?
> PS: Ach, nun doch? Dann sind wir uns ja einig. Schön!
Nein, sind wir nicht, da die Erklärung anscheinend zu kompliziert für
dich war.
Hier geht es etwas einfacher nur fur dich:
Ich habe auch einen chinesichen Multimeter, da ist die Auflösung im
mV-Bereich 0,1mV, aber der Fehler liegt bei 2%, das ist 4mV.
Dieser Fehler ist eine Konstante über den gesamten Messbereich.
Ob der jetzt 99.8mV oder 99.9mV anzeigt, dürfte mir ziemlich egal
sein, ich kann mich nur darauf verlassen, dass der gemessene Wert
zwischen 95.9mV und 103.9mV liegt.
Hoffe, sogar du hast es endlich verstanden.
Torsten C. schrieb:> Was erwartest Du? Maxim/Dallas wird die ADC-Auflösung schon sinnvoll an> das Rauschen angepasst haben, darin sind die gut!
Ich erwarte, dass ich bei Mittelung über viele Messungen einen
Mittelwert bekomme, der beliebig nahe am realen Wert liegt. Das
funktioniert aber nur, wenn das Rauschen deutlich größer als die
Quantisierungsstufen ist. Beim DS18B20 ist das nicht der Fall, so dass
sich durch Mittelung keine höhere Auflösung ergibt.
Trotz Mittelung über viele Werte ergibt sich bei gleichmäßigem,
langsamen Temperaturanstieg kein gleichmäßig langsam steigender
gleitender Mittelwert, sondern es sind Stufen mit der Auflösung des
Digitalsignals vorhanden.
Tom schrieb:> Trotz Mittelung über viele Werte ergibt sich bei gleichmäßigem,> langsamen Temperaturanstieg kein gleichmäßig langsam steigender> gleitender Mittelwert, sondern es sind Stufen mit der Auflösung des> Digitalsignals vorhanden.
Solche Messreihen habe ich nur bei Sensoren die draussen angebracht
waren, gekriegt.
Innentemperatur ist zwar auch ziemlich zackig, aber nicht so.
War dein Sensor draussen ?
Tom schrieb:> Das funktioniert aber nur, wenn das Rauschen deutlich größer als die> Quantisierungsstufen ist.
Eben! Sag ich ja.
Marc V. schrieb:> etwas einfacher
Einfach ist Gut.
Ein Multimeter hat Offset und Rauschen. Das ist beim DS18B20 genau so.
Offset und Rauschen sind zwei verschiedene Dinge, egal ob mit oder ohne
Polemik.
Marc V. schrieb:> War dein Sensor draussen ?
Hast du auf meine Skalierung geachtet?
Draußen rauscht die Lufttemperatur wesentlich stärker. Die gezeigten
Messungen stammen von einem im Raum montierten Sensor, der thermisch gut
an eine große Metallmasse angekoppelt ist und dadurch thermisch sehr
träge ist.
Tom schrieb:> sondern es sind Stufen mit der Auflösung des> Digitalsignals vorhanden
Stufen mit der Auflösung sind klar. Das geht ja auch nicht anders.
Digital ist halt nicht analog.
Plateaus im Abstand der Genauigkeit sind natürlich das anderes.
Ob diese "Plateaus" von Dallas/Maxim so gewollt sind? Pfiffig!
https://www.mikrocontroller.net/attachment/262456/DS18B20_gemittelt.png
Torsten C. schrieb:> Stufen mit der Auflösung sind klar. Das geht ja auch nicht anders.> Digital ist halt nicht analog.
Warum sind die klar? Es geht hier nicht um Einzelwerte, sondern um
Mittelwerte.
Wenn im Vergleich zu den Quantisierungsstufen genügend Rauschen (oder
ein Dithersignal) auf dem Analogsignal des Sensors liegt, muss sich
statistisch betrachtet der genaue Mittelwert des Analogsignals in der
Häufigkeit des Auftretens der benachbarten Quantisierungsstufen wieder
finden. Und dann verschwinden in einem gleitenden Mittelwerte über das
Digitalsignal die Quantisierungsstufen. In meinen Beispieldaten sieht
man, dass es nur für ein Intervall von etwa 30% der Höhe der
Quantisierungsstufen klappt, weil das Rauschen/Dither nicht groß genug
ist. Dazwischen "klebt" der Mittelwert an einer Quantisierungsstufe.
Tom schrieb:> Es geht hier nicht um Einzelwerte, sondern um> Mittelwerte.
Ah, ich habe mal horizontale Linien rein gemalt und verstehe jetzt erst,
was Du meinst.
Vielleicht funktioniert Deine Mittelwertbildung nicht richtig. Zeig mal
die Roh-Werte vor Deiner Glättung, sonst kann ich Dir auch nicht
helfen.
Torsten C. schrieb:> Vielleicht funktioniert Deine Mittelwertbildung nicht richtig. Zeig mal> die Roh-Werte vor Deiner Glättung, sonst kann ich Dir auch nicht> helfen.
Haha.
Habe nicht gelesen, dass er dich um Hilfe gebeten hat, mal abgesehen
davon, dass er weiss wovon er redet, im Gegensatz zu... ?
Ja, genau.
Torsten C. schrieb:> Vielleicht funktioniert Deine Mittelwertbildung nicht richtig.
Die funktioniert prima. Was ich für die Erhöhung der Auflösung auswerte,
ist das (mittlere) Tastverhältnis, vom Wackeln des untersten Bits.
Tom schrieb:> Die funktioniert prima.
Wenn Du meinst …
Dann ist der Sensor schuld und die Erde ist eine Scheibe.
Falls Du mit dem Ergebnis DS18B20_gemittelt.png^^ unzufrieden bist,
hätte man ja versuchen können, Dir zu helfen.
Marc V. schrieb:> Habe nicht gelesen, dass er dich um Hilfe gebeten hat
Stimmt. Dann hat sich das ja eh erledigt.
Tom schrieb:> Wenn im Vergleich zu den Quantisierungsstufen genügend Rauschen (oder> ein Dithersignal) auf dem Analogsignal des Sensors liegt
Genau das ist der Knackpunkt, Dein ADC-Wert muß wackeln wie ein
Lämmerschwanz.
Gute ADCs liefern Dir aber auf ein LSB stabile Werte und da kannst Du
kein einziges Bit mehr Auflösung rauskitzeln.
Peter D. schrieb:> Genau das ist der Knackpunkt, Dein ADC-Wert muß wackeln wie ein> Lämmerschwanz.
Selbst bei Spiegelgalvanometern hat man ein Dithersignal überlagert, um
die Reibung zu überwinden. Ich nenne die Quantisierungsstufen jetzt
einfach mal "digitale Haftreibung" ...
> Gute ADCs liefern Dir aber auf ein LSB stabile Werte und da kannst Du> kein einziges Bit mehr Auflösung rauskitzeln.
Es kommt immer drauf an, was man mit dem digitalen Ausgangssignal vor
hat. Jeder Class-D Verstärker und jeder DC/DC-Schaltwandler erhebt das
Wackeln des einen Bits zum Grundprinzip ;-)
Aber paßt schon - ich beklage mich doch gar nicht ernsthaft. Für einen
busfähigen Sensor, der weniger als 1€ kostet, bin ich mit der Auflösung
ganz zufrieden.