Force Sensing Resistors(FSRs) have been incredibly useful to me in the last few years: this post compiles some of the information I have picked up in that time. Using a material called Velostat, I have been custom building FSRs for my own needs – often with greater dynamic range and at lower cost than their factory built equivalents.
Velostat is a conductive material that is sensitive to pressure; its resistance decreases as more force is applied to it. You can make a sensor with it by sandwiching the material between two wires or metal surfaces. Take care that the outer metal contacts are completely separated by the Velostat, otherwise the sensor won’t work.
Floor Sensors for Under Foot
I designed and built an interactive dance floor for aboutNOWish‘s show, Under Foot. The floor needed to pick up and respond to the movement of the show’s dancers and audience. With a modest budget and the prospect of a two-month tour, making FSRs seemed to be a cheap and durable option.
My early experiments were with different shapes and sizes of sensor, with various types of conductive material on either side of the sensor, and with different types of insulation. I made and tested the following with an Arduino, values read from the Arduino increase with the force applied to the FSR:
- Large square sensor made with woven strips of aluminium foil (Bird Scarers), laminated
- Narrow sensor with foil strips, insulated with tape
- Small tag sensor with steel wool, laminated
- Small tag sensor with wire ‘snake’, insulated with tape
- Small tag sensor with wire coil, insulated with tape
- Large square sensor with conductive fabric, insulated with tape
- Large square sensor with steel wool, laminated
On reflection, I could have been much more thorough in how I tested various designs by changing fewer variables between the different FSRs. For instance, it is hard to make any conclusions about laminating vs. taping from the data shown above.
From the readout values, and from experimenting with controlling an LED bulb with the sensor I did find that the surface area of the conductors in contact with the Velostat, and the area of the sensor itself have a significant impact on their response.
Small sensors with limited points of contact had low-value readings on the Arduino and a low dynamic range. Large sensors with a large area of contact gave high-value readings, also with a low dynamic range. The best results came from the two foil sensors, each showing a similar dynamic range and a fairly even response across weight values. The larger woven foil sensor ought to have performed poorly, like its counterparts made with conductive fabric and steel wool. The woven strips of foil did not lie flat however, and my guess is that the area of contact for this sensor might have been similar to the narrow version because of air pockets between the conducting strips and the Velostat.
I chose to use the narrow foil sensor for Under Foot. The large laminated foil sensor required much more material, and was much more flimsy than the narrow version. Opting for the narrow sensor offered a similar response with lower costs, better durability and quicker build times. In practice these sensors (shown below) served the company very well in the tour of Under Foot, standing up to the footfall of hundreds of people, as well as many wheelchairs and lifting equipment.
FSRs for Digital Musical Instruments
In preparation for making new digital musical instruments next year, I wanted to come up with a design for a smaller FSR. These had to be cheap and durable, have a good dynamic range, and cover an area roughly similar to an adult thumbprint. The following four designs were built and tested one at a time, with small changes being made with each iteration of designing, making and testing. The four designs are shown below:
Using an Arduino, each FSR was tested under weights increasing in 100g intervals up to 1kg, and then once at 4kg. The reading for each weight was measured three times, and the mean value of these readings plotted in the table below.
This first design started with two rectangles of Velostat 35mm long and 25mm wide, and used foam tape as padding to create an air cavity between the Velostat sheets. The purpose of this cavity was to ensure that values will return to 0 when the sensor isn’t being pressed – no contact between the Velostat layers means no current passing between them. The FSRs for Under Foot had compressed over time and their untouched values could drift upwards, causing false readings. I used adhesive foil for the conductive plate on each side of the Velostat layer with copper wire for connecting leads.
The previous FSR had been too sensitive to light glancing touches, which could cause accidental or unwanted triggers. I made two changes to the design to improve upon this. I added a central support to the cavity between the Velostat layers to prevent the cavity from being too easily depressed. I also reduced the sensitivity of the sensor by using only wire for the conductors on the outside of the Velostat instead of the foil layer.
The improvements to FSR2 had caused the opposite problem. The ‘dead zone’, which avoids accidental readings, extended up to 300g and the dynamic range of the sensor had been dramatically reduced. I decided to re-introduce the foil layer to this design, and add a double layer of foam to the cavity which would compensate for the increased sensitivity this would bring.
I was happy with the results for the third FSR design, but in the interests of thoroughness decided to make a fourth FSR without the central support in its cavity; a version of FSR1 with a double padding layer. This produced very similar results to FSR3. The lack of the central cavity support meant that the sensor produced more inconsistent values when pressed at different points on its rectangular area. The central support prevents touches on the middle of the sensor from causing a higher area of contact between the Velostat layers in comparison to touches on the sides of the sensor.
The area of contact between the outer conductor (the material delivering current to and from the Velostat) and the Velostat affects the sensitivity and range of values:
• Large area = high minimum values and low dynamic range
• Small area = low minimum values and low dynamic range
This may require experimentation for each design, depending on the required shape and size of a sensor.
An air cavity between two layers of Velostat can help the sensor to reliably reset to a minimum value after being pressed, and to create a dead-zone where low forces are ignored. Supports to large cavities can help to maintain consistent readings when force is applied to different points on a sensor. Keeping an even thickness to a sensor (using foil instead of wires, supports in cavities etc.) can also help to produce consistent values for differing touch locations.
Velostat is relatively cheap; one sheet can produce many sensors at a lower cost than buying individual components. With some experimentation, the design can be tweaked so that the size, shape and response of an FSR can meet the requirements of each project.
I am currently using the third FSR from the above test in my feedback-saxophone system.