Wo mach ich den Rechenfehler?

Hi, ich habe mir einen Sensor gekauft er geht von -20 Ampere bis +20A

bei 0A gibt er 2,5V aus
bei +20 gibt er 5,0V aus
bei -20 gibt er 0,0V aus

nun verzweifle ich an dem umrechnen… der wert wird ja durch 1024 geteilt (wegen 1024 “stufen” 0-1023)

aber wie kann ich das so umrechnen das ich den richtigen wert in Ampere raus bekomme?
ich komm einfach nicht auf einen Ansatz…

Skript:

int Pin0 = 0;
int Pin1 =1;
int Pin2 =2;
int Pin3 =3;

float Volt1;
float Ampere1;
float Watt1;
float test;


void setup(){
Serial.begin(9600);
}




void loop(){
 Volt1 = analogRead (Pin0) / 1024.000; //Volt1
 test = analogRead (Pin1);
 
 
 
 
 Ampere1 =analogRead(Pin1);
 
 if(Ampere1 <= 511.000){
                       Ampere1 = (Ampere1 / 1023.000 * 20.00 -20);
                       }

if(Ampere1 >= 512.000){
                       Ampere1 = (Ampere1 / 1023.000 * 20.000);
     }
      
 //Ampere1 = (((analogRead (Pin1) / 1024.000 * 5) - 2.49)*10); //Ampere1 20A / 1024 Auflösung = 0,01953125 
 
 Watt1 = Volt1 * Ampere1 ; // Ergebnis
  
// ##################### Ausgabe hier ##########################################  
//Serial.print("Volt:" ); Serial.println(Volt1);
Serial.print("Ampere:" );Serial.println(Ampere1);
Serial.print("Ampere Wert: :" );Serial.println(test);
//Serial.print("Watt:" );Serial.println(Watt1);
Serial.println(" ");

delay (1000);
}

hat einer nen kleinen tipp?

LG Andi

Amper = (analogRead(Pin1)/512.0-1)*20

Wertebereich umrechnen in 0 bis 2 --> analogRead(Pin1)/512.0 Wertebereich verschieben in -1 bis 1 --> (analogRead(Pin1)/512.0-1) Wertebereich aufweiten in -20 bis 20 --> (analogRead(Pin1)/512.0-1)*20

cool, danke was bewirkt das -1? soll das dass rechnen in den minus Bereich ermöglichen?

Jep! Steht aber auch in meinem letzten Post, was jede Änderung der Formel für einen Effekt hat. ;)

Viel Spaß damit!

Müßte wohl auch ein einfaches map() gehen, auch wenn der Nachtei integerwerte sind, dh Ampere hat keine Kommastellen.

ampere = map(ADC, 0, 1023, -20, 20);

Eventuell sind die Werte noch etwas anzugleichen um eine gute Entsprechung zu finden

eventuell mit einer Kommastelle ampere = (map(ADC, 0, 1023, -200, 200))/10.0;

Grüße Uwe