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– Dorian2018年07月13日 08:53:23 +00:00Commented Jul 13, 2018 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– alex_unio2018年07月13日 09:06:25 +00:00Commented Jul 13, 2018 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– Dorian2018年07月13日 09:24:17 +00:00Commented Jul 13, 2018 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– Dorian2018年07月13日 09:35:54 +00:00Commented Jul 13, 2018 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– alex_unio2018年07月13日 09:57:37 +00:00Commented Jul 13, 2018 at 9:57
1 Answer 1
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.