Hemi
19.05.2022, 12:38
Hallo zusammen,
ich ein sehr dubioses Problem und zwar rechnet eine Funktion falsch..
Hier ist erstmal die Funktion:
#define SENSOR_SHUNT 61.9
int16_t calculate_pump_current (uint16_t Ua, uint16_t Ua_cal)
{
float diff;
diff = Ua - Ua_cal;
return (int16_t)(diff / (SENSOR_SHUNT * 8.0) * 1000);
}
Ua und Ua_cal sind Spannungen, in Millivolt zwischen 0 und 5000 (also 0V und 5V)
Nun zum Problem:
Wenn diff negativ ist, rechnet er einen Blödsinn zusammen.
Beispiel für falsche Berechnung:
Ua = 750
Ua_cal = 1500
Berechneter Wert ist: -222
Erwarteter Wert: -1515
Beispiel für korrekte Berechnung:
Ua = 3000
Ua_cal = 1500
Berechneter Wert ist: 3029
Erwarteter Wert: 3029
Ich habe es mit Excel gegengerechnet.
Hat jemand eine Idee, was da schief läuft?
Danke Euch!
EDIT:
MCU: Atmega2560
IDE: Mcrochip Studio 7.0.2542
ich ein sehr dubioses Problem und zwar rechnet eine Funktion falsch..
Hier ist erstmal die Funktion:
#define SENSOR_SHUNT 61.9
int16_t calculate_pump_current (uint16_t Ua, uint16_t Ua_cal)
{
float diff;
diff = Ua - Ua_cal;
return (int16_t)(diff / (SENSOR_SHUNT * 8.0) * 1000);
}
Ua und Ua_cal sind Spannungen, in Millivolt zwischen 0 und 5000 (also 0V und 5V)
Nun zum Problem:
Wenn diff negativ ist, rechnet er einen Blödsinn zusammen.
Beispiel für falsche Berechnung:
Ua = 750
Ua_cal = 1500
Berechneter Wert ist: -222
Erwarteter Wert: -1515
Beispiel für korrekte Berechnung:
Ua = 3000
Ua_cal = 1500
Berechneter Wert ist: 3029
Erwarteter Wert: 3029
Ich habe es mit Excel gegengerechnet.
Hat jemand eine Idee, was da schief läuft?
Danke Euch!
EDIT:
MCU: Atmega2560
IDE: Mcrochip Studio 7.0.2542