Electronic – arduino – Reading values from Force Sensitive Resistor – Arduino

analogarduinopressuresensor

I am trying to read the values from a Force Sensitive Resistor with Arduino. Actually, I am already reading them, but it only works if I use a 10 Ohm or lower resistor and it really heats up. (See attached schematic). If I try to use a higher resistor, Arduino continuously reads 1023, as if there was no FSResistor. How can I read the values of the FSR without having to use a 10Ohm resistor that heats up?

Note that the FSR, without applying any force has 50 Ohms resistance, and when applying pressure, it goes down to 5-10 Ohms.

Schematic

Best Answer

schematic

simulate this circuit – Schematic created using CircuitLab

Vo = V1* R2 /(R1+R2)

Total power Po = V1*V1/(R1+R2)

Adc unit (5V reference) = 5V/1023 ~= 5mV

Adc unit (1.1 internal reference) = 1.1/1023 ~= 1mV

No pressure R1 = 470 ohm:

  • Vo = 5*50/520 = 480mV ~= 96(5V) or 480(1.1V) ADC units
  • Po = 25/520 = 48mW

No pressure, R1 = 10 kohm:

  • Vo = 5*50/10050 = 25mV ~= 5(5V) or 25(1.1V) ADC units.
  • Po = 25/10050 = 2.4mW

No pressure, R1 = 10 ohm:

  • Vo = 5*50/60 = 4.16V ~= 803(5V) ADC units.
  • Po = 25/60 = 0.41W

Same calculation for pressure applied until the sensor has 10 ohms:

R1 = 10 ohm:

  • Vo = 5*10/20 = 2.5V ~= 500(5V) ADC units.
  • Po = 25/20 = 1.25W, that's why the resistor is heating

It's better to put the sensor on the ground side because you can use 0 to no pressure voltage instead no pressure voltage to 5V then subtract the no pressure voltage. You also can use a lower reference for better resolution which is not possible with the sensor on the upper side since V0 will be higher than the reference voltage.

By using the internal reference you will lose the ratiometric output but the gain in resolution will compensate this.