This was researched using the fsr402 available at the NYU Computer Store. This model is a 0.5″ diameter with .2″ thickness. The price of this sensor was $7.95 dollars.

Data sheet PDF format.

Flash video short explanation.

Explanation of the data sheet.

Force Sensing Resistors are polymer thick devices that register the change in resistance.

By adding force, the conductivity increases and therefore the resistance decreases. That’s why a 0 value indicates that it is not touched, there is too much resistance. As the values increase it means the conductivity has increased thanks to the force.

There are many sizes of FSRs, but all of them are very thin. They can sense very little amounts of force, the data sheet indicates 20 g as a minimum, though they can sense from less than a Newton to over 100. Their life span is pretty impressive, being able to live through 10 million actuations.

At first, this sensor acts like a switch. It quickly goes from not being touched to feeling the force inflicted on it. From there on it continues to document the touch and it’s particular force. It does reacha saturation point, where pressing harder is no longer detectable.

It’s a passive device since it starts out in a constant state that needs to be disrupted by the touch. It tracks the force applied to it instantly, I could not perceive a delay in the information sent. It’s not affected by noise or vibration and can be in temperatures from -30 C to +70C (-22F to +158F).

Connecting it to the breadboard

This sensor has two solder tabs but it’s best to not attempt to actually solder them. Other solutions like female to male headers that are soldered to wire on the male side and have space to insert the tabs on the female side or wire wrapping work much better.

One side connects to ground with a 10 k resistor and also goes to an analog input on Arduino and the other one goes to power.

Applications (taken from Chang So Lee's original report, dated 2005).

The FSR can be applied to various fields such as industry, medical science, robotics, and body pressure equipment.

    * Industrial Application : Nip Roller, Robotic Grip Forces, Packaging Seals - See detail
    * Medical Application : Insulin Pump, Surgical Instruments, Neck/Back/Knee-Brace Fit - See detail
    * Dental Occlusal Analysis System - See detail
    * Recreation / Entertainment Application : Training devices, Toys & Electronic Games - See detail
    * Automotive Application : Automotive Crash Tests, Brake Pad, Airbag Force - See detail
    * Building Tap-Tile for dance or installation applications
    * Building virtual percussion instrument controllers
    * And more…

Arduino Code

I set 4 thresholds:

0 to 10 not touched 11 to 299 lightly touched 300 to 699 pressed 700 on firmly pressed

It is a pretty clear distinction of the levels of touch.

This is the code:


fsrPin = 0; int fsrValue = 0;

void setup () { Serial.begin (9600); }

void loop (){ fsrValue = analogRead(fsrPin);

Serial.println (fsrValue);

delay (100);

if (fsrValue >=10){ Serial.println (”not touched”); }

if (fsrValue >= 11 && fsrValue <= 299){ Serial.println (”threshold 1″); }

if (fsrValue >= 300 && fsrValue <= 699){ Serial.println (”threshold 2″); }

if (fsrValue >= 700){ Serial.println (”threshold 3″); } }