0
\$\begingroup\$

I have a question about load cell and pressure sensors. I have modified a brake pedal from AliExpress, the Sim Jack Pro pedals to be exact. The issue is when I press and hold the pedal the analog reading drops approximately between 5-10% before it settles. I have done everything I can to fix this issue, strengthen the pedal plate, change load cell, change from load cell to pressure sensor.

The original brake pedal used elastomers, I changed from those to die springs, from springs to now a compact air cylinder.

With the air cylinder I changed to a pressure sensor, this still hasn't relieved the issue. As a last effort I have now used a Arduino pro micro and a ads1115 to read the analog signal and convert it to a joystick. Although it's a bit better I still have a "relaxing" issue...

Main question is, do I have a misunderstanding of how pressure sensor and load cells work?

Do pressure sensors and load cells overshoot before they settle on an accurate reading?

The current rating of the pressure sensor states a 2%FS accuracy. More expensive ones state a .2%FS accuracy and a 0.03% linearity. Would a more expensive and accurate sensor fix this issue?

I'm stuck and really just want to figure this out. Dropping another 50$ on a higher accuracy sensor is worth it only if I know that's what's going to fix this.

Arduino code w/ filtering

#include <Wire.h>
#include <Adafruit_ADS1X15.h>
#include <Joystick.h>
Adafruit_ADS1115 ads1115;
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID);
int Brake = 0;
const int numReadingsBrake = 1 ; 
int readingsBrake[numReadingsBrake];
int readIndexBrake= 0;
int totalBrake = 0;

 
void setup() 
/*
 * GAIN_TWOTHIRDS (for an input range of +/- 6.144V) 
 * GAIN_ONE (for an input range of +/-4.096V) 
 * GAIN_TWO (for an input range of +/-2.048V) 
 * GAIN_FOUR (for an input range of +/-1.024V) 
 * GAIN_EIGHT (for an input range of +/-0.512V) 
 * GAIN_SIXTEEN (for an input range of +/-0.256V)
 */

{
  ads1115.setGain(GAIN_TWOTHIRDS);
  ads1115.begin();
  Joystick.begin();
  for (int thisReading = 0; thisReading < numReadingsBrake; thisReading++){
  readingsBrake[thisReading]= 0;
}
}
void loop() 
{
  int32_t adc0;
  adc0 = ads1115.readADC_SingleEnded(0);
  Joystick.setXAxisRange(0, 32767);
  Joystick.setXAxis(Brake);
  
  totalBrake = totalBrake-readingsBrake[readIndexBrake];
  readingsBrake[readIndexBrake] = adc0;
  totalBrake = totalBrake+readingsBrake[readIndexBrake];
  readIndexBrake = readIndexBrake+1;
  if(readIndexBrake >= numReadingsBrake)
{
  readIndexBrake =0;
}
Brake = totalBrake/numReadingsBrake;
}

Arduino Code no filtering

#include <Wire.h>

#include <Adafruit_ADS1X15.h>
#include <Joystick.h>
Adafruit_ADS1115 ads1115;
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID);
int Brake = 0;

void setup()
/*
   GAIN_TWOTHIRDS (for an input range of +/- 6.144V)
   GAIN_ONE (for an input range of +/-4.096V)
   GAIN_TWO (for an input range of +/-2.048V)
   GAIN_FOUR (for an input range of +/-1.024V)
   GAIN_EIGHT (for an input range of +/-0.512V)
   GAIN_SIXTEEN (for an input range of +/-0.256V)
*/

{
  ads1115.setGain(GAIN_TWOTHIRDS);
  ads1115.begin();
  Joystick.begin();
}

void loop()
{
  int32_t adc0;
  adc0 = ads1115.readADC_SingleEnded(0);
  Joystick.setXAxisRange(0, 32767);
  Joystick.setXAxis(Brake);
  Brake = adc0;
}

brake pedal Arduino micro mounting close up

\$\endgroup\$
2
  • \$\begingroup\$ How are you determining that there is actual overshoot? It could be telling you the truth! You need to set up a repeatable method to apply a given force and not rely on human input. \$\endgroup\$
    – Kartman
    Commented Aug 28 at 8:33
  • \$\begingroup\$ So there is a way to limit the distance the pedal can be pressed. It's the orange bar near the front base of the pedal. what I have done is brought it to it's furthest point and calibrated the pedal then brought it to it's closest point. when I press the pedal I can make sure I'm hitting and holding onto that orange bar and hitting the same percent everytime. Idk if that's a good enough way to take human error out of the equation, but I can't think of another way. \$\endgroup\$
    – T.Ro
    Commented Aug 28 at 21:10

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.