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
Hallo, ich würds einfach um 6 bit nach rechts shiften, z.B. Temp >>= 6; oder ausführlicher: Temp = Temp >> 6; Grüße, Martin
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
Ist (temp *10) / 10 nicht wieder temp? Kannst Du genauer sagen was bei dieser Rechnung passiert?
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.
Also vielfache von 0,1 statt vielfache von 0,0625. Richtig? @Martin: Temp >>= 6; // ergibt Vielfache von 40° @Paul: Integer mit 0,1-Faktor oder Fließkomma? Integer mit 0,1-Faktor heißt: 1 entspricht 0,1 2 entspricht 0,2 3 entspricht 0,3 …
@ Torsten: genau, ein vielfaches von 0,1 wäre schön. Aktuell nutz ich Fließkomma, Integer würde aber auch gehen
ach, es gibt "round" in C - gerade erst gefunden, war mir nicht klar. Damit gehts.
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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!
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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: > Hast du auf meine Skalierung geachtet? LOL. Nein, aber jetzt wo du meine Nase daraufgestossen hast... OK, passt.
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
:
Bearbeitet durch User
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.