Force-sensing resistor
A pad that is open until touched, then lower the harder it is pressed.
- 2 pins
- 3 settings
- In 2 projects
- In 1 lesson
The Force-sensing resistor in brief
What it is, and every setting the properties panel gives it.
A force-sensing resistor is the Interlink FSR 402 and its half-inch twins: two films with a spacer, one printed with interleaved fingers and one with carbon ink that shorts them where pressed, so the resistance falls as the force rises. Its two legs, 1 and 2, have no polarity and need no supply; it goes in a divider. On an Uno, one leg to 5 V, the other to A0 with 10 k from A0 to GND,; on an ESP32, the same divider from 3.3 V into an ADC1 pin. Mokxi follows the datasheet’s log-log line, R = r100 x (100 g / F) ^ slope, with r100 10 k and slope 0.8 as properties: about 36 k at the 20 g actuation point, 10 k at 100 g, 1.6 k at a kilogram and 900 ohms at 2 kg. Below 20 g the films do not touch and the part is open, 10 megohms. The slider presses up to 2 kg. The classic mistake is wiring it with no divider resistor; the other is expecting grams, which is a load cell’s job. Hysteresis, creep under a steady load, temperature and part-to-part spread are not modeled.
- Family
- Sensors
- Pins
- 2
- r100
- 10000
- slope
- 0.8
- open
- 10000000
2 pins
Named as the editor names them, so a wire lands where you expect it.
How to use a force-sensing resistor with an Arduino
An FSR has two legs and no polarity, and it only gives a reading inside a divider. In this circuit leg 1 goes to 5 V, leg 2 to A0, and a 10 k resistor runs from A0 to GND. Unpressed the pad is open and A0 sits near 0; press it and its resistance falls from about 36 k at 20 g to 10 k at 100 g and under 1 k at 2 kg, so the count climbs toward 1023.
The knock lock reads it the way an FSR is best read, as harder or softer rather than as grams: a reading over 100 is a knock, and the sketch counts a knock only on the change from not pressed to pressed. Press the button to lock, then drag the FSR’s slider up and down three times and the servo bolt opens. Leave out the 10 k and A0 floats; for real weights, use a load cell and an HX711.
On an ESP32, feed the divider from 3.3 V and read an ADC1 pin; the 12-bit reading runs to 4095 instead of 1023.
bool pressed = analogRead(SENSOR) > KNOCK_LEVEL;
if (pressed && !wasPressed) {
knocks++;
if (knocks >= KNOCKS_TO_OPEN) unlock();
}
wasPressed = pressed;What is true about the Force-sensing resistor, here
In its help article’s own words: what the simulation gets right, and where it stops.
Modeled
The datasheet's shape: open until the actuation force of about 20 g, then a straight
line on log-log paper, R = r100 x (100 g / F)^slope. That is about 36 k at 20 g, 10 k
at 100 g, 1.6 k at a kilogram and 900 ohms at 2 kg, the top of the range for this size.
The step at 20 g is the thing to notice. An FSR is not a load cell: it is a switch that turns on at a light touch and then goes on getting better at being on. It says "harder" and "softer" well and "how many grams" badly; for grams, use the HX711 and a load cell.
Not modeled
Hysteresis (a real one reads lower on the way up than on the way down), drift under a steady load (it creeps down a few percent a minute), the size and shape of whatever is pressing, and temperature. The resistance follows the slider at once. The datasheet quotes a part-to-part repeatability of 6% at best; every pad here is the typical one.
From Force-sensing resistor, in full.
See the Force-sensing resistor in a project
2 built-in projects use it. Each opens in the editor, already wired.
Where it turns up in a lesson
One lesson places it in its own circuit.
The boards it is shown on
This board has a built-in project with the Force-sensing resistor in it.
The rest of the bench
Every one of these is drawn and simulated the same way.
Wire up the Force-sensing resistor
Open the editor and push it into the breadboard. It is free, and it runs on your own machine.