I am sending you the code that I am using in case someone can help me.
Thank you very much.
Code: Select all
/******************************************************************************
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á BANNED 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á BANNED 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á BANNED 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);
}