Force Sensitive Resistor Hookup Guide
Introduction
Force-sensitive resistor's (FSR) are easy-to-use sensors designed for measuring the presence and relative magnitude of localized physical pressure.
The resistance of an FSR varies as the force on the sensor increases or decreases. When no pressure is being applied to the FSR, its resistance will be larger than 1MΩ. The harder you press on the sensor’s head, the lower the resistance between the two terminals drops. By combining the FSR with a static resistor to create a voltage divider, you can produce a variable voltage that can be read by a microcontroller's analog-to-digital converter.
Suggested Materials
This tutorial serves as a quick primer on FSR's and demonstrates how to hook them up and use them. Beyond a FSR of your choice, the following materials are recommended:
Arduino Uno -- We'll be using the Arduino's analog-to-digital converter to read in the variable resistance of the FSR. Any Arduino-compatible development platform -- be it a RedBoard, Pro or Pro Mini -- can substitute.
Resistor Kit -- To turn the FSR's variable resistance into a readable voltage, we'll combine it with a static resistor to create a voltage divider. This resistor kit is handy for some trial-and-error testing to hone in on the most sensitive circuit possible.
Breadboard and Jumper Wires -- The FSR's terminals are breadboard-compatible. We'll stick in that and the resistor, then use the jumper wires to connect from breadboard to Arduino.
Force Sensitive Resistor Adapter -- While the FSR terminals are breadboard-compatible, we've found that it may be loose in the breadboard. For those looking for a way to make a more secure connection without soldering, try looking at the associated Amphenol pin adapters. You will need a pair of needle nose pliers to clamp the the adapter down.
Suggested Reading
Analog components, like these FSRs, are a great sensor-reading entry-point for beginners, but there are a few electronics concepts you should be familiar with. If any of these tutorial titles sound foreign to you, consider skimming through that content first.
Analog to Digital Conversion
Voltage Dividers
What is an Arduino?
Analog vs. Digital
FSR Overview
There are a variety of FSR options out there, and a few key characteristics to differentiate them: size, shape, and sensing range. Here's a quick overview of the sensors available from Interlink and Tekscan in our catalog. The sensors from Tekscan are much more stable, calibrated to a specific weight, and provide a much larger range.
Name | Shape | Sensing Area | Min Pressure | Max Pressure |
---|---|---|---|---|
Force Sensitive Resistor - Small (SEN-09673) | Circular | 7.62 mm dia (0.3 in) | 0.1 kg (0.22 lb) | 1 kg (2.2 lb) |
Force Sensitive Resistor 0.5" (SEN-09375) | Circular | 12.7 mm dia (0.5 in) | 100 g (0.22 lb) | 10 kg (22.04 lb) |
Force Sensitive Resistor - Square (SEN-09376) | Square | 44.45 x 44.45 mm (1.75 x 1.75 in) | 100 g (0.22 lb) | 10 kg (22.04 lb) |
Force Sensitive Resistor - Long (SEN-09674) | Rectangular | 6.35 x 609.6 mm (0.25 x 24.0 in) | 100 g (0.22 lb) | 10 kg (22.04 lb) |
FlexiForce Pressure Sensor - 25lbs (1" area) (SEN-11207) | Circular | 2.54mm dia (0.1 in) | 0 g (0 lb) | ~11.34 kg (25 lb) |
FlexiForce Pressure Sensor - 1lb. (SEN-08713) | Circular | 9.53 mm dia (0.375 in) | 0 g (0 lb) | ~0.45 kg (1 lb) |
FlexiForce Pressure Sensor - 25lbs. (SEN-08712) | Circular | 9.53 mm dia (0.375 in) | 0 g (0 lb) | ~11.3398 kg (25 lb) |
FlexiForce Pressure Sensor - 100lbs. (SEN-08685) | Circular | 9.53 mm dia (0.375 in) | 0 g (0 lb) | ~45.36 kg (100 lb) |
Shape and Size
Most FSR's feature either a circular or rectangular sensing area. The square FSR is good for broad-area sensing, while the smaller circular sensors can provide more precision to the location being sensed.
The rectangular FSR's from Interlink include a small-ish square 1.75 x 1.75" sensor and a long 0.25 x 24" strip. The rest of the sensors feature a circular sensing area.
Sensing Range
Another key characteristic of the FSR is it's rated sensing range, which defines the minimum and maximum amounts of pressure that the sensor can differentiate between.
The lower the force rating, the more sensitive your FSR hookup has the potential to be. But! Any pressure beyond the sensor's maximum limit will be unmeasurable (and may damage the component). The small 1kg-rated FSR will provide more sensitive readings from 0 to 1kg, but won't be able to tell the difference between a 2kg and 10kg weight.
Force vs. Resistance
The graph below, figure 2 from the Interlink FSR Integration Guide, demonstrates the typical force-resistance relationship:
The relationship is generally linear from 50g and up, but note what the relationship does below 50g, and even more-so below 20g. These sensor's have a turn-on threshold -- a force that must be present before the resistance drops to a value below 10kΩ, where the relationship becomes more linear.
Getting Started with Load Cells
June 11, 2015
Hardware Assembly
The sensors have solder tabs that are stapled through a flexible substrate to make contact with the semi-conductive material. Depending on your project application and skill set, there are a few methods of connecting to the sensor. Some assembly may be required to connect to the pins reliably.
Breadboard Compatible Tabs
For prototyping and testing, these solder tabs can be inserted into a breadboard or female jumper wires. Here are two examples with the flex and soft potentiometer sensors.
Flex Sensor Inserted Vertically on Breadboard with Space to Bend | SoftPot Inserted Vertically on Breadboard Flush Against the Table |
Soldering to Tabs
When integrating it into a long term project and installation, there is an option to solder wires or a PCB directly to the solder tabs. However, excessive heat can melt the material and damage the sensor due to the limitations in the flexible substrate and the semi-conductive material. Below is an example of the flex sensor soldered to a PCB from our production assembly technicians.
While the datasheet states that you can solder to the force sensitive resistor's solder tabs, we only recommended for advanced users that have experience with soldering. For those soldering to the force sensitive resistor, you would need to solder at a lower temperature and ensure that the soldering iron is not heating the tab for no more than 1 second. Any longer and you can damage the material and semi-conductive material. The force sensitive resistor in particular is more susceptible to damage compared to the flex sensors and SoftPot.
Amphenol CFI Clincher Connector
As an alternative, users can use the Amphenol FCI Clincher connector to make a reliable connection to the sensor and provide a small amount of strain relief on the crimped connector. This is recommended for those that have not soldered before and are using the sensors in an long term projects beyond the breadboard or in a classroom setting. The connector was designed to crimp pins on flexible printed circuits as an alternative to applying heat to heat sensitive components such as the semi-conductive material or conductive ink.
Crimping the Clincher Connector
We'll be using the male Clincher connector to crimp down on the flex sensor. However, the instructions listed below can be applied to the force sensitive resistor as well.
To connect, you will need to cut off the solder tabs on the sensor. Make sure to cut as close to the solder tabs as possible. You can have issues connecting to the semi-conductive material if you cut off too much of the sensor. The length of the semi-conductive pads on the SoftPot is smaller than the force sensitive resistor and flex sensor.
Cutting Solder Tabs Off Flex Sensor | Cutting Solder Tabs Off Slide Pot |
After cutting the staples off, insert the sensor in the respective Clincher connector. Make sure to align the semi-conductive material with the new staples or you may create a short. Depending on the sensor, you may have less semi-conductive material to work with. The SoftPot will have smaller pads to work with after cutting the solder tabs off as shown on the image to the right.
Inserting the Flex Sensor into the 2-Pin Clincher Connector | Inserting the SoftPot Sensor into the 3-Pin Clincher Connector |
Once you have aligned the sensor, we recommend adding a piece of tape to hold down the sensor with the Clincher connector to prevent the sensor from moving around when clamping the connector down.
We recommend using a flush, slip joint plier to clamp the connector down. As you can see from the image, the force is being applied on the center of the latch and staples instead of along the grooves on the side of the connector. The force sensitive resistor will be easier to clamp down compared to the other flexible substrates on the flex sensor and SoftPot. You will hear a small but satisfying pop when the crimp pins bite through the sensor.
Otherwise, needle nose pliers can be used to clamp the staples to the sensor. Close the tab to hold the crimp pins against the semi-conductive material. Then make sure to carefully apply force on the center from each corner (while avoiding the grooves on the side).
If you apply force incorrectly with needle nose pliers, there is a risk of damaging the plastic housing. The image on the right shows the Clincher connector housing damaged even though the crimp pins are making contact with the SoftPot.
Pliers applied incorrectly to the Clincher connector. | Clincher connector's housing damaged for the SoftPot. |
When finished, remove the tape from the back. To test, you can use a multimeter to determine if the sensor has a short or is able change in resistance. You can also connect the sensor to your circuit using jumper wires to check if the sensor is working as expected.
Example Hardware Hookup
By creating a voltage divider with the FSR and another resistor, you can create a variable voltage output, which can be read by a microcontroller’s ADC input.
Selecting a Static Resistor
The tricky part of voltage-dividing an FSR is selecting a static resistor value to pair with it. You don't want to overpower the maximum resistance of the FSR, but you also don't want the FSR's minimum resistance to be completely overshadowed either.
It helps to know what range of force you'll be reading. If your project's force-sensing covers the broad range of the FSR (e.g. 0.1-10kg), try to pick a static resistance in the middle-range of the FSR's resistive output -- something in the middle of 200-6kΩ. 3kΩ, or a common resistor like 3.3kΩ, is a good place to start.
Short on Resistors? If all you have is 10kΩ resistors (looking at you Sensor Kit visitors), you can still make something close to 3k! Try putting three 10kΩ's in parallel to create a 3.33kΩ monster resistor. Or put three 330Ω resistors in series to create a 990Ω concoction, which will work pretty well too.
Example Circuit
Here's a Fritzing diagram combining the Interlink FSR, 3.3kΩ resistor, three jumper wires and the Arduino. The circuit will be the same for TekScan. You'll just need to adjust the resistor value accordingly.
And the schematic:
This voltage divider will cause the voltage at A0 to increase as the resistance of the FSR decreases. When the FSR is left untouched, measuring as nearly an open circuit, the voltage at A0 should be zero. If you press as hard as possible on the FSR, the voltage should increase close 5V.
Example Arduino Sketch
Here is a simple Arduino example based on the circuit above. Copy and paste this into your Arduino IDE, then upload!
Note: This example assumes you are using the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE.
If you have not previously installed an Arduino library, please check out our installation guide.language:c
/******************************************************************************
Force_Sensitive_Resistor_Example.ino
Example sketch for SparkFun's force sensitive resistors
(https://www.sparkfun.com/products/9375)
Jim Lindblom @ SparkFun Electronics
April 28, 2016
Create a voltage divider circuit combining an FSR with a 3.3k resistor.
- The resistor should connect from A0 to GND.
- The FSR should connect from A0 to 3.3V
As the resistance of the FSR decreases (meaning an increase in pressure), the
voltage at A0 should increase.
Development environment specifics:
Arduino 1.6.7
******************************************************************************/
const int FSR_PIN = A0; // Pin connected to FSR/resistor divider
// Measure the voltage at 5V and resistance of your 3.3k resistor, and enter
// their value's below:
const float VCC = 4.98; // Measured voltage of Ardunio 5V line
const float R_DIV = 3230.0; // Measured resistance of 3.3k resistor
void setup()
{
Serial.begin(9600);
pinMode(FSR_PIN, INPUT);
}
void loop()
{
int fsrADC = analogRead(FSR_PIN);
// If the FSR has no pressure, the resistance will be
// near infinite. So the voltage should be near 0.
if (fsrADC != 0) // If the analog reading is non-zero
{
// Use ADC reading to calculate voltage:
float fsrV = fsrADC * VCC / 1023.0;
// Use voltage and static resistor value to
// calculate FSR resistance:
float fsrR = R_DIV * (VCC / fsrV - 1.0);
Serial.println("Resistance: " + String(fsrR) + " ohms");
// Guesstimate force based on slopes in figure 3 of
// FSR datasheet:
float force;
float fsrG = 1.0 / fsrR; // Calculate conductance
// Break parabolic curve down into two linear slopes:
if (fsrR <= 600)
force = (fsrG - 0.00075) / 0.00000032639;
else
force = fsrG / 0.000000642857;
Serial.println("Force: " + String(force) + " g");
Serial.println();
delay(500);
}
else
{
// No pressure detected
}
}
After uploading, open your serial monitor, and set the baud rate to 9600 bps.
If you apply pressure to the FSR, you should see resistance and estimated pressure calculations begin to appear:
Play with the circuit and see how high or low you can get the readings to be. If you have more resistors, try swapping larger or smaller values in for the 3.3kΩ to see if you can make the circuit more sensitive. Don't forget to change the value of R_DIV
towards the top of the sketch if you do!
Resources and Going Further
Now that you've got a force-sensing Arduino circuit, what project are you going to create? If you need more FSR-related resources, be sure to check out the integration guide/user manual, which goes in-depth on the sensor's characteristics. The guide also presents a few more complex circuits you can try hooking up to get even more sensitivity out of your FSR. Try making a pressure-sensing button or adding some feedback to a robot gripper.
- Interlink
- TekScan
- Datasheet (PDF)
- FlexiForce Pressure Sensor - 25lbs (1" area) - ZFLEX A401-25
- FlexiForce Pressure Sensor - 1lb, 25lbs, 100lbs (0.375" area) - ZFLEX A201-1, ZFLEX A201-25, ZFLEX A201-100
- User Manual (PDF)
- How Do I Calibrate My FlexiForce Sensor?
- Datasheet (PDF)
- Open Music Labs: Force Sensitive Resistors (FSRs)
Need some project inspiration? Want to check out some similar analog sensors? Check out some of these related tutorials: