Hallo ich versuche einen gemessenen Wert in eine ADC Variable umzurechen.
Der Wert ist 450mA und wird per Seriell empfangen.
Die Betriebsspannung ist 3,3V = 3305mV.
Es handelt sich um einen 12-Bit ADC = 4096
Der Dazugehörige ADC Wert soll 558 sein.
Es kommt komischerweise -4.00 raus.
Wenn ich das in einen Taschenrechner eingebe dann kommt 558 raus.
Wenn ich die Variable "Akku_I_ADC " auf "int" Stelle dann kommt -1 raus.
Hallo und guten morgen
Schaue dir die, für die Berechnung verwendeten, Variablen und die dazu gehörigen Datentypen an.
Q&DS: allen Variablen den Datentyp float zuweisen.
Drei Probleme:
Klammerrechnung vor Punktrechnung
Rechnen mit ganzen Zahlen
Wertebereich
(450 / (3305/4069))
als erstes: 3305/4096 = 0
Und weil INT auch ins negative gehen kann, Stichwort Wertebereich, kommt da für den Teil hinterm Komma der gerundete Wert -1 raus.
Wenn Du unbedingt float machen willst, musst Du auf der rechten Seite des Gleichheitszeichen auch mindestens mit dem ersten Rechenwert float rechnen.
Akku_I_ADC = (Akku_Strom_MW / (U_3_3V/ 4096.0))
Und dann bleibt noch die Frage, ob Deine Spannungen und Ströme negativ werden können.
Wenn nicht, mach daraus unsigned int.