Guten Morgen,
ich sage Dir, Du hast Dir irgendwas eingefangen, was die Berechnerei verkackt.
Der Code aus #45 ist nur um eine Funktion erweitert, die den analogWert simuliert unddas delay() auf 200ms gesetzt - der Rest ist genauso geblieben.
/* FSR testing sketch.
Connect one end of FSR to power, the other end to Analog 0.
Then connect one end of a 10K resistor from Analog 0 to ground
For more information see www.ladyada.net/learn/sensors/fsr.html */
int fsrPin = 0; // the FSR and 10K pulldown are connected to a0
float fsrReading; // the analog reading from the FSR resistor divider
float fsrVoltage; // the analog reading converted to voltage
float fsrResistance; // The voltage converted to resistance, can be very big so make "long"
float fsrConductance;
float fsrForce; // Finally, the resistance converted to force
float fsrweight;
void setup(void) {
Serial.begin(115200); // We'll send debugging information via the Serial monitor
}
unsigned int simulation(const byte b)
{
static byte pin = 10;
static unsigned int zaehler = 0;
if (pin != b)
{
pin = b;
zaehler = 0;
return zaehler;
}
zaehler += 10;
if (zaehler > 1023) zaehler = 0;
return zaehler;
}
void loop(void) {
fsrReading = simulation(fsrPin);
Serial.print("Analog reading = ");
Serial.println(fsrReading);
// analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)
fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);
Serial.print("Voltage reading in mV = ");
Serial.println(fsrVoltage);
if (fsrVoltage == 0) {
Serial.println("No pressure");
} else {
// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
// so FSR = ((Vcc - V) * R) / V yay math!
fsrResistance = 5000 - fsrVoltage; // fsrVoltage is in millivolts so 5V = 5000mV
fsrResistance *= 10000; // 10K resistor
fsrResistance /= fsrVoltage;
Serial.print("FSR Wiederstand in Ohm = ");
Serial.println(fsrResistance);
fsrConductance = 500000; // we measure in micromhos so
fsrConductance /= fsrResistance;
Serial.print("Conductance in microMhos: ");
Serial.println(fsrConductance);
// Mehrere lineare Gleichungen, um den Kraft zu approximieren. Auf Leitfähigkeit sind 10% mehr angesetzt und der Teiler 10% weniger
//0.5 51
if (fsrConductance <= 5) {
fsrForce = fsrConductance / 10 ;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//0.75 76.5
else{if (fsrConductance <= 7.5) {
fsrForce = fsrConductance / 10;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//1 101
else{if (fsrConductance <= 15) {
fsrForce = fsrConductance / 15;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//1,25 126,5
else{if (fsrConductance <= 22.5) {
fsrForce = fsrConductance / 18;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//1,5 152
else{if (fsrConductance <= 27.5) {
fsrForce = fsrConductance / 18.3;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//1,75 177,5
else{if (fsrConductance <= 31.7) {
fsrForce = fsrConductance / 18.1;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//2 203
else{if (fsrConductance <= 35.5) {
fsrForce = fsrConductance / 17.75;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//2,25 228,5
else{if (fsrConductance <= 38) {
fsrForce = fsrConductance / 16.8;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//2,5 254
else{if (fsrConductance <= 46.5) {
fsrForce = fsrConductance / 18.6;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//2,75 279,5
else{if (fsrConductance <= 49.2) {
fsrForce = fsrConductance / 17.89;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//3 305
else{if (fsrConductance <= 54.3) {
fsrForce = fsrConductance / 18.1;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//3,25 330,5
else{if (fsrConductance <= 61) {
fsrForce = fsrConductance / 18.77;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//3,5 356
else{if (fsrConductance <= 63) {
fsrForce = fsrConductance / 18;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//3,75 381,5
else{if (fsrConductance <= 67.5) {
fsrForce = fsrConductance / 18;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//4 407
else{if (fsrConductance <= 69) {
fsrForce = fsrConductance / 17.25;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//4,25 432,5
else{if (fsrConductance <= 72.7) {
fsrForce = fsrConductance / 17.1;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//4,5 458
else{if (fsrConductance <= 83) {
fsrForce = fsrConductance / 18.4;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//4,75 483,5
else{if (fsrConductance <= 87) {
fsrForce = fsrConductance / 18.3;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//5 509
else{if (fsrConductance <= 88.5) {
fsrForce = fsrConductance / 17.7;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//5,25 534,5
else{if (fsrConductance <= 91.5) {
fsrForce = fsrConductance / 17.4;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//5,5 560
else{if (fsrConductance <= 93.5) {
fsrForce = fsrConductance / 17;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//5,75 585,5
else{if (fsrConductance <= 97) {
fsrForce = fsrConductance / 16.8;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//6 611
else{if (fsrConductance <= 98.5) {
fsrForce = fsrConductance / 16.4;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//6,25 636,5
else{if (fsrConductance <= 99) {
fsrForce = fsrConductance / 15.84;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//6,5 662
else{if (fsrConductance <= 102.5) {
fsrForce = fsrConductance / 15.77;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//6,75 687,5
else{if (fsrConductance <= 104.6) {
fsrForce = fsrConductance / 15.5;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//7 713
else{if (fsrConductance <= 105.5) {
fsrForce = fsrConductance / 15.07;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//7,25 738,5
else{if (fsrConductance <= 112) {
fsrForce = fsrConductance / 15.45;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//7,5 764
else{if (fsrConductance <= 112.5) {
fsrForce = fsrConductance / 15;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//7,75 789,5
else{if (fsrConductance <= 114) {
fsrForce = fsrConductance / 14.71;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//8 815
else{if (fsrConductance <= 115) {
fsrForce = fsrConductance / 14.37;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//8,25 840,5
else{if (fsrConductance <= 116.6) {
fsrForce = fsrConductance / 14.13;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//8,5 866
else{if (fsrConductance <= 117.7) {
fsrForce = fsrConductance / 13.85;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//8,75 891,5
else{if (fsrConductance <= 119) {
fsrForce = fsrConductance / 13.6;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//9 917
else{if (fsrConductance <= 120) {
fsrForce = fsrConductance / 13.33;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//9,25 942,5
else{if (fsrConductance <= 120.5) {
fsrForce = fsrConductance / 13.03;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//9,5 968
else{if (fsrConductance <= 121) {
fsrForce = fsrConductance / 12.73;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//9,75 993,5
else{if (fsrConductance <= 122.8) {
fsrForce = fsrConductance / 12.59;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
//10 1019
else{if (fsrConductance <= 124) {
fsrForce = fsrConductance / 12.4;
fsrweight = fsrForce / 9.81 * 1000 ;
Serial.print("Gewichtskraft in Newton: ");
Serial.println(fsrForce,4);
Serial.print("Gewicht in gramm: ");
Serial.println(fsrweight,4);}
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}
Serial.println("--------------------");
delay(200);
}
Die Ausgabe des Gewichtes schneidet nach analogWert von 720 ab:
10:45:01.567 -> --------------------
10:45:01.766 -> Analog reading = 710.00
10:45:01.766 -> Voltage reading in mV = 3470.00
10:45:01.766 -> FSR Wiederstand in Ohm = 4409.22
10:45:01.766 -> Conductance in microMhos: 113.40
10:45:01.766 -> Gewichtskraft in Newton: 7.7090
10:45:01.766 -> Gewicht in gramm: 785.8260
10:45:01.766 -> --------------------
10:45:01.966 -> Analog reading = 720.00
10:45:01.966 -> Voltage reading in mV = 3519.00
10:45:01.966 -> FSR Wiederstand in Ohm = 4208.58
10:45:01.966 -> Conductance in microMhos: 118.80
10:45:01.966 -> Gewichtskraft in Newton: 8.7357
10:45:01.999 -> Gewicht in gramm: 890.4843
10:45:01.999 -> --------------------
10:45:02.198 -> Analog reading = 730.00
10:45:02.198 -> Voltage reading in mV = 3567.00
10:45:02.198 -> FSR Wiederstand in Ohm = 4017.38
10:45:02.198 -> Conductance in microMhos: 124.46
10:45:02.198 -> --------------------
10:45:02.396 -> Analog reading = 740.00
10:45:02.396 -> Voltage reading in mV = 3616.00
10:45:02.396 -> FSR Wiederstand in Ohm = 3827.43
10:45:02.396 -> Conductance in microMhos: 130.64
10:45:02.396 -> --------------------
10:45:02.595 -> Analog reading = 750.00
10:45:02.595 -> Voltage reading in mV = 3665.00
10:45:02.595 -> FSR Wiederstand in Ohm = 3642.56
10:45:02.595 -> Conductance in microMhos: 137.27
10:45:02.595 -> --------------------
10:45:02.794 -> Analog reading = 760.00
10:45:02.794 -> Voltage reading in mV = 3714.00
10:45:02.794 -> FSR Wiederstand in Ohm = 3462.57
10:45:02.794 -> Conductance in microMhos: 144.40
10:45:02.827 -> --------------------
Wenn die Berechnung richtig wäre, dann müsste das durch gehen bis 1000....
Die Frage der Fragen:
Kannst Du mir für den analogwert 500, 600, 700 ... bis 1000 sagen, was da für Werte für Newton rauskommen müssen?