Forum: Mikrocontroller und Digitale Elektronik stm32 float berechnungen


von Martin F. (martin_f70)


Lesenswert?

hi ich habe ein problem: i habe einen adc wert von: 33
dann ist hier erstmal mein code: http://pastebin.com/V737JksM
mit adc_val=30 => power ist 0.024
aber r ist nicht korrekt, es zeigt an -7915.216 aber es sollte etwas 
positives sein...
was ist falsch in meiner rechnung?

von Mehmet K. (mkmk)


Lesenswert?

Davon ausgehend, dass Du nicht versteckte Reklame für pastebin machst, 
verstehe ich nicht, warum Du diese 4 Zeilen nicht hierher kopiert hast.
Es waere doch schade, wenn der geneigte Leser, der nach X Jahren mit 
demselben Problem hierher surft und dann vielleicht betrübt feststellen 
müsste, dass pastebin nicht mehr existiert. Deshalb:
1
float power;
2
float r;
3
     
4
power=(float)(adc_val)/4096.0f*3.0f;
5
r=3000.0f/power-1000.0f;

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Martin Fischer schrieb:
> es zeigt an -7915.216

Wer oder was zeigt denn das an? Es liegt nahe, das deine Ausgabe von 
Zahlen eine Fehler hat.

von Martin F. (martin_f70)


Lesenswert?

Ja stimmt! ^^

Die konvertierung von float zu string hatte nur 16 bit zahlen 
verarbeitet, da ich aber im 100k Bereich hantiert hatte musste ich das 
auf 32 umstellen

von Arne S. (Gast)


Lesenswert?

>
1
> power=(float)(adc_val)/4096.0f*3.0f;
2
> r=3000.0f/power-1000.0f;
3
>
Was passiert zur Laufzeit wenn adc_val Null ist?

von ?!? (Gast)


Lesenswert?

Arne S. schrieb:
>>> power=(float)(adc_val)/4096.0f*3.0f;
>> r=3000.0f/power-1000.0f;
>> Was passiert zur Laufzeit wenn adc_val Null ist?

Ich würde vermuten: Nix!
Aber wenn bei der Berechnung von power genau 1000.0 rauskommt...
Also etwa bei adc_val=1365333,333. Aber ich denke mal, daß adc_val eine 
ganze Zahl ist, von daher wird bei power niemals genau 1000.0 
rauskommen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Arne S. schrieb:
> Was passiert zur Laufzeit wenn adc_val Null ist?
r = -3

von Dispol (Gast)


Lesenswert?

Gilt in C nicht auch Punkt vor Strich, wie sonst auch in der ganzen 
westlichen Welt?

von Dispol (Gast)


Lesenswert?

Nachtrag:
Der Strich von links unten nach rechts oben ist natürlich kein Strich, 
sondern ein Punkt!

von ?!? (Gast)


Lesenswert?

Dispol schrieb:
> Gilt in C nicht auch Punkt vor Strich, wie sonst auch in der
> ganzen
> westlichen Welt?

Hast recht. Asche auf mein graues Haupt :-)

von Jojo S. (Gast)


Lesenswert?

Arne S. schrieb:
> Was passiert zur Laufzeit wenn adc_val Null ist?

r wird 'inf' (unendlich).

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Oha, ich Dummi schäm

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.