0

FSR ARDUINO PROJECT
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

FSR ARDUINO PROJECT

by lmgarcia8 on Sat Jun 19, 2021 2:44 pm

Hello everyone, I am doing a project with Arduino and force sensors. I have gotten them to work individually, but when I put all three at the same time, and press one, it appears as a result that all three are being pressed.

I am sending you the code that I am using in case someone can help me.

Thank you very much.

Code: Select all | TOGGLE FULL SIZE

/******************************************************************************
En este código se calcula la fuerza en gramos y en Newtons que se ejerce en un
sensor de presión
******************************************************************************/
const int FSR_PIN = A0; // El sensor y la resistencia se conectan a A0
const int FSR_PIN1 = A1;
const int FSR_PIN2 = A2;
const float VCC = 4.98; // El voltaje es 5V
const float R_DIV = (1000/3); // La resistencia son 10K

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




void sensor1(int FSR_PIN)
{
  int fsrADC = analogRead(FSR_PIN);

  //SENSOR 1
  //Si el sensor no tiene presión, la resistencia será casí infinito, por lo que el voltaje
  //estará cerca de 0
  if (fsrADC != 0) // Si la lectura analógica no es 0
  {
    // Pasamos de analógico a voltaje
    float fsrV = fsrADC * VCC / 1023.0;
    // Calculamos el valor de la resistencia con la fórmula   
    // V0 = Vcc * R / (R + FSR) donde R = 10K y Vcc = 5V
    // Despejando tenemos que  FSR = ((Vcc - V) * R) / V
    float fsrR = (R_DIV * (VCC - fsrV))/fsrV;
    //Serial.println("Resistencia: " + String(fsrR) + " ohms");
    // Estimamos la fuerza con la gráfica presente en la memoria
    float force;
    float forceN;
    float fsrG = 1.0 / fsrR; // Calculamos la conductancia
    if (fsrR <= 600)
      force = (fsrG - 0.00075) / 0.00000032639;
    else
      force =  fsrG / 0.000000642857;

      forceN = force*9.8;
    //Serial.println("Fuerza: " + String(force) + " g");
    Serial.println("Fuerza en Newtons sensor 1: " + String(forceN) + " N");
    Serial.println();

    delay(1000);
  }
  else
  {
    Serial.println("No hay presión en el sensor 1");
    delay(1000);
  }
}



void sensor2(int FSR_PIN1)
{
  int fsrADC1 = analogRead(FSR_PIN1);

  //SENSOR 1
  //Si el sensor no tiene presión, la resistencia será casí infinito, por lo que el voltaje
  //estará cerca de 0
  if (fsrADC1 != 0) // Si la lectura analógica no es 0
  {
    // Pasamos de analógico a voltaje
    float fsrV1 = fsrADC1 * VCC / 1023.0;
    // Calculamos el valor de la resistencia con la fórmula   
    // V0 = Vcc * R / (R + FSR) donde R = 10K y Vcc = 5V
    // Despejando tenemos que  FSR = ((Vcc - V) * R) / V
    float fsrR1 = (R_DIV * (VCC - fsrV1))/fsrV1;
    //Serial.println("Resistencia: " + String(fsrR) + " ohms");
    // Estimamos la fuerza con la gráfica presente en la memoria
    float force1;
    float forceN1;
    float fsrG1 = 1.0 / fsrR1; // Calculamos la conductancia
    if (fsrR1 <= 600)
      force1 = (fsrG1 - 0.00075) / 0.00000032639;
    else
      force1 =  fsrG1 / 0.000000642857;

      forceN1 = force1*9.8;
    //Serial.println("Fuerza: " + String(force) + " g");
    Serial.println("Fuerza en Newtons sensor 2: " + String(forceN1) + " N");
    Serial.println();

    delay(1000);
  }
  else
  {
    Serial.println("No hay presión en el sensor 2");
    delay(1000);
  }
}


void sensor3(int FSR_PIN2)
{
  int fsrADC2 = analogRead(FSR_PIN2);

  //SENSOR 3
  //Si el sensor no tiene presión, la resistencia será casí infinito, por lo que el voltaje
  //estará cerca de 0
  if (fsrADC2 != 0) // Si la lectura analógica no es 0
  {
    // Pasamos de analógico a voltaje
    float fsrV2 = fsrADC2 * VCC / 1023.0;
    // Calculamos el valor de la resistencia con la fórmula   
    // V0 = Vcc * R / (R + FSR) donde R = 10K y Vcc = 5V
    // Despejando tenemos que  FSR = ((Vcc - V) * R) / V
    float fsrR2 = (R_DIV * (VCC - fsrV2))/fsrV2;
    //Serial.println("Resistencia: " + String(fsrR) + " ohms");
    // Estimamos la fuerza con la gráfica presente en la memoria
    float force2;
    float forceN2;
    float fsrG2 = 1.0 / fsrR2; // Calculamos la conductancia
    if (fsrR2 <= 600)
      force2 = (fsrG2 - 0.00075) / 0.00000032639;
    else
      force2 =  fsrG2 / 0.000000642857;

      forceN2 = force2*9.8;
    //Serial.println("Fuerza: " + String(force) + " g");
    Serial.println("Fuerza en Newtons sensor 3: " + String(forceN2) + " N");
    Serial.println();

    delay(1000);
  }
  else
  {
    Serial.println("No hay presión en el sensor 3");
    delay(1000);
  }
}

void loop()
{
  sensor1(FSR_PIN);
  sensor2(FSR_PIN1);
  sensor3(FSR_PIN2);
}

lmgarcia8
 
Posts: 3
Joined: Mon May 31, 2021 5:23 am

Re: FSR ARDUINO PROJECT

by adafruit_support_bill on Sun Jun 20, 2021 5:36 am

Please post a photo or diagram of your circuit.

adafruit_support_bill
 
Posts: 81562
Joined: Sat Feb 07, 2009 10:11 am

Please be positive and constructive with your questions and comments.