Hallo, für ein etwas aufwendiges Arduino Projekt ( Pulsoximeter: Darstsellung der Sauerstoffsättigung im atr. Blut) benötige ich Hilfe
bezugnehmend auf Rechenoperationen mit logarithmus.
Mittels zwei verschiedener Ampituden zweier Signale ( ROT LED und IR LED) muss ich ein dekadisch logarihmisches Verhältnis (Omega) bilden.
Diese Messvariable Omega wird benötigt um die Sauerstoffsättigung (SPO2) zu bestimmen.
R,IR,Omega sind floats.
Hier ein Auszug:
R = ((Quell/1023)R_MAX);// Konvertieren von ADC in Volt( 5v/1023)Amplitude
IR= ((Quell/1023)IR_MAX);// ""
Omega = log(R)/log(IR);
if(Omega<=1.2 && Omega<=0.4)
{ SpO2 = (110-(25Omega));}
Bisher funktionierts ganz gut, soll halt nur etwas genauer werden.
Für R und IR mochte ich gerne mit 2 NachkommaKommastellen arbeiten .
Bisher bekomm ich bei Omega nur 2 Nachkommastellen raus.
Omega soll bei der 4. Kommastellen aufgerundet werden. Muss ich was bei Datentyp float verändern?
Für Eure Hilfe wäre ich sehr dankbar.
die_Diode:
Für R und IR mochte ich gerne mit 2 NachkommaKommastellen arbeiten .
Wenn Du Gleitkommazahlen haben möchtest, rechne mit Gleitkommazahlen!
Es reicht nicht, links vom Gleichheitszeichen auf eine Gleitkommazahl zuzuweisen, sondern Du mußt auch rechts vom Gleichheitszeichen mit Gleitkommazahlen rechnen, damit eine Gleitkommazahl bei der Rechnung als Ergebnis herauskommt.
Ein "Quell/1023" bedeutet immer eine Ganzzahl-Division wenn auch Quell eine Ganzzahl ist. Willst Du eine Gleitkommadivision mit Quell als Ganzzahl, dann rechne "Quell/1023.0", das ergibt dann eine Gleitkommazahl als Ergebnis.
ich ein dekadisch logarihmisches Verhältnis (Omega) bilden.
eigentlich schon, aber das wiederspricht dem
Omega = log(R)/log(IR);
daher meine Frage.
ich habe deinen code mal entsprechend geändert
float R = ((Quell/1023.0)R_MAX);// Konvertieren von ADC in Volt( 5v/1023)*Amplitude
float IR= ((Quell/1023.0)IR_MAX);// ""
float Omega=(log10(R))/(log10(IR)); //-->bei briggschem logarithmus
if (Omega<=1.2&&Omega>=0.4) //--> ich vermute mal du meinst >=0.4
{SpO2 = (110-(25*Omega));}