Increasing the range of an FSR


I recently purchased the Sparkfun square FSR and have wired it according to the diagram below in an attempt to increase its force range (beyond the specified 0-10kg). I am using the LM358 op-amp instead of the recommended MCP6004, R1 = 10k and R2 = 4.3k. Vout is connected to an analog input pin on an Arduino Uno.

Unfortunately, the circuit is not behaving correctly. When using just the AnalogSerialInOut Arduino code, the serial monitor is displaying 44 even when there is no weight (should be 0) and is not exceeding 433, regardless of the weight placed on the FSR.

The diagram is from the brand Tekscan who also make similar FSRs with the capability to measure greater force ranges. The non-inverting op-amp circuit below is one of the recommended ways to increase the range.


So my main questions are:

  1. Is it even possible to increase the range of the Sparkfun sensors in this way?
  2. Is the LM358 a good replacement for the MCP6004?
  3. Is there an obvious reason my circuit is behaving the way it is?

I am a bit of a beginner at all of this and any help would be appreciated!


Hey Tavi, welcome to the forum!

Have a read of this to start with, it should give you an idea of how FSRs work and respond to weight:

My understanding is that you’d just need to create a voltage divider between your FSR, VCC, and analog pin, like so (excuse the crude drawing):
My understanding is that in order to reduce the sensitivity (and thus move the useful range up in weight/force), you’d have to reduce the resistance of R1, such that your FSR needs more weight to “fight” R1.

My understanding of this is pretty basic, and I won’t even try to get the op-amp circuit, but let me know what happens when you use it like this (and keep an eye on the current flow/heat)



Hi Tavi,

Welcome to the forum :slight_smile:

Just trying to get my head around what your circuit is attempting to do. I haven’t used force-sensitive resistors myself but I think I can give a bit of insight as to how the “force range increase” is working.

This op-amp circuit is a non-inverting amplifier, which is basically just amplifying the voltage at the output relative to the force on the resistor.

The biasing of your op-amp circuit will need to be correctly tuned so that zero force on the resistor gives zero volts at the output of the amplifier otherwise your analog input will read non-zero.
Your maximum value will depend on the maximum value of your analog input and the Vref voltage.


Thanks James, I’ll give this a go!

1 Like

Makes sense, thank you!


Have you checked what the Physical Specs are for the FSR, you may be exceeding its rated maximum force that it can reliably withstand and give consistent readings.

It is specified for 0 to 10kg for a reason.


Yep, I realise that they’ve specified a range but wanted to test it out myself :slight_smile: