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.


  • \$\begingroup\$ Switch positions between resistor and pressure sensor and try again. \$\endgroup\$ – Dorian Jul 13 '18 at 8:53
  • \$\begingroup\$ @Dorian, I have tried and with a 10Ohm resistor I get the same. With a 10k Ohm resistor I read 0, instead of 1023. \$\endgroup\$ – alex_unio Jul 13 '18 at 9:06
  • \$\begingroup\$ Ok , you go way to far , try something in the middle , if you have a 50 ohm pressure sensor then use a 500 ohm resistor, that will give you 5V/11 voltage ,around 500mV without pressure, that is readable by ADC. With 10K you have 5V*50/10000 ~ 25mV hardly usable. Put the pressure sensor on the ground side. \$\endgroup\$ – Dorian Jul 13 '18 at 9:24
  • \$\begingroup\$ For a better resolution use analogReference(INTERNAL) which will give you a better resolution of arround 1mV/unit on analogRead() \$\endgroup\$ – Dorian Jul 13 '18 at 9:35
  • \$\begingroup\$ Thanks, it is working much better now. Finally I am using a 220 Ohm resistor. Just a question, why its better to put the pressure sensor on the ground side? \$\endgroup\$ – alex_unio Jul 13 '18 at 9:57


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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.