Wenn DU AD-Messungen machst, dann wirst Du bemerken, dass Du selten
exakt dassselbe misst - der Wert "wackelt" immer ein bischen. Also:
eigendlicher Wert: 72,3
gemessen: 72, 73, 72, 71, 75, 72, 74, 71
Dieser Effekt kommt vom Rauschen auf der Schaltung, oder vom Rauschen
Deines Mess-Signals. Das kann Dich ärgern, oder Du machst was draus.
Wenn Du alle Werte addierst (im Beispiel 8), dann kommst Du auf 580.
Geteilt durch alle 8 Messwerte würdest Du einen Mittelwert von 72,5
bekommen. Das kommt doch schon wesentlich besser ran als die
Einzel-Messwerte.
Genau betrachtet kann Dir das Rauschen nämlich auch helfen. Angenommen,
Du hast einen idealen Wandler und eine ideale Messspg. Dann ist Dein
Messfehler bis zu +/- 1/2 Bit. Im oberen Fall würdset Du immer 72
messen und damit 0,3 Abweichung haben. Liegt jetzt aber ein (ideales)
Rauschen auf Deinem Messsignal, dann misst Du abwechselnd 72 und 73,
wenn Diu viele Werte aufaddierst und danach durch die Anzahl teilst,
wirst Du (im Idealtfall) wirklich auf die 72,3 kommen. Obwohl das Dein
AD-Wandler EIGENDLICH garnicht kann. Wenn Du Dich näher damit
beschäftige willst, such mal unter Quantisierungsrauschen.
Mit 72,3 sind wir leider schon im Bereich des Flieskommas. Das ist
immer ärgerlich, weil viel Rechnerei und grosse Bibliotheken. Deswegen
kommt jetzt ein Rechen-Kniff.
Eigendlich interessiert Dich die Zahl 72,3 überhaupt nicht. Den Wert
des AD-Wandlers musst Du ja eh interpretieren, in Deinem Fall als
Temperatur. Dann kannst Du auch gleich sagen: ich addiere 64 Werte auf
und interpretiere dann das Ergebnis als (Pseudo-) 16-Bit-Wert.
Warum 64 und warum 16 Bit?
Dein Wandler hat 10 Bit, macht 1023 als Maximalwert. Davon kannst Du
maximal 64 Stück in einem 16-Bit Wert aufaddieren. Bitte beachten:
unsigned verwenden! Das Ergebnis kann genaugenommen nicht den
Maximalwert einer 16-Bit-Zahl annehmen, sondern 63 Ticks darunter,
sprich: 1023 * 64.
Ich hoffe mal, das war einigermassen verständlich...
Viele Grüße, Stefan