Forum: Mikrocontroller und Digitale Elektronik ATMega Assember, Ausgabe Nachkommastellen


von Christian S. (solder)


Lesenswert?

Hallo,

ich wollte mal eure Meinung hören: Um den Messwert Luftfeuchtigkeit vom 
Si7021 in % umzurechnen, wird folgende Formel angegeben:

RH% = 125 * RH_Code / 65536 - 6

RH_Code ist ein 16 Bit-Wert. Im Prinzip ganz einfach, ich multipliziere 
beide Bytes mit 125 und addiere die Ergebnisse anschließend um ein Byte 
vesetzt miteinander. Ich erhalte eine 24-Bit-Zahl. Die Division schenke 
ich mir, denn im höchsten Byte ist dann schon die Ganzzahl des Wertes 
enthalten, von der ich einfach 6 abziehe. Die Ausgabe erfolgt über eine 
Schleife, die 100er, 10er abzieht und die Durchläufe für jede 
Dezimalstelle zählt.

Nun würde ich aber gern noch eine Nachkommastelle erhalten, hab' aber 
keine Ahnung, wie ich das hinbekommen soll. Es sind 2 Nachkommabytes. 1 
reicht schon oder sogar noch weniger Bit. Wie komme ich auf die passende 
Dezimalziffer? Bei Beschränkung auf 4 oder 5 Bit würde eine Tabelle 
gehen. Gibt es noch einen anderen (eleganten) Weg?

Statt mit % könnte ich auch in %% rechnen (also alles *10), dann wäre 
aber die Multiplikation aufwendiger, da ich nicht mehr mit 8 Bit 
multipliziere. Außerdem muss man noch prüfen, ob man über 100 bzw. unter 
0 liegt (was passieren kann). Das würden dann auch 16 Bit Operationen 
werden.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Mit 10 multiplizieren und dann die Vorkommastalle nehmen ergibt die 1 
dezimale Nachkommastelle.  Vor der Multiplikation die Vorkommastellen 
löschen.

von Jim M. (turboj)


Lesenswert?

Christian S. schrieb:
> Nun würde ich aber gern noch eine Nachkommastelle erhalten,

Gibt die der Si7021 laut Datenblatt überhaupt her?
Nö. Datenblatt sagt: +- 3% RH. Da brauchste die Nachkommastelle nicht 
mehr,
da is nur Rauschen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jim M. schrieb:
> Gibt die der Si7021 laut Datenblatt überhaupt her?
> Nö. Datenblatt sagt: +- 3% RH. Da brauchste die Nachkommastelle nicht
> mehr,
> da is nur Rauschen.

 Ja, ich würde sogar die 125 mit 128 ersetzen, da der dadurch
 entstandener Fehler etwa 2,34% beträgt und somit kleiner ist.
 Und linksschieben ist bedeutend schneller als Multiplikation...

 Und +/- 3% RH ist im Endeffekt genauso ungenau wie +/- 5%.

: Bearbeitet durch User
von Christian S. (solder)


Lesenswert?

Mag, sein, dass der +/- 3% Ungenauigkeit hat. Die Frage ist die 
Reproduzierbarkeit eines Ergebnisses. Wenn alle Werte z.B. +2.5% sind, 
passt das mit der Nachkommastelle durchaus. Bislang habe ich mit dem 
DHT22 gemessen und der ist bestimmt nicht besser. Mit der 
Nachkommastelle erkenne ich aber besser die Tendenz der Messungen, denn 
bis sich vorn etwas tut, dauert es viel länger. Nur dafür wollte ich die 
Stelle, nicht um die Feuchtigkeit besonders genau zu messen. Ich meine 
auch nicht, dass es dort schon besonders rauschen wird. Ich werde es 
einfach probieren.

von Christian S. (solder)


Lesenswert?

Ich hab's jetzt gemacht, wie Johann L. vorgeschlagen hat.

Die erste Nachkommastelle ist recht konstant. Schwankt bei den Messungen 
um 1. Das ist ja normal.

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
Noch kein Account? Hier anmelden.