Introduction: How to Make a DIY Force Plate

Picture of How to Make a DIY Force Plate

Force plates can be very useful in bio-mechanics. As part of a workshop in conjunction with RPI, we taught high school students how to build and use their own force plates from very inexpensive materials. These custom force plates were used to test their own hypotheses about bio-mechanics. It is our hope that this built their understanding of biology, math, physics, and making.

To make this force plate you're going to need the following components:

Step 1: Prepare Strain Gauge

Picture of Prepare Strain Gauge

Take the strain gauge and wrap the wire around some stripped insulated wire and solder them together. In addition to wrapping the wires (as one normally does with soldered contacts) wrap both wires together, and then tape them to the plate to relieve strain. Keep in mind that the contacts on the strain gauge are fragile and not meant to flex.

The strain gauges come in some thin plastic sheet which is excellent for this application. So you can double it over into an ellipsoid. This will be out sensor mount. When the plastic is compressed, it will bend and the strain gauge taped to it will stretch with it generating a signal.

Step 2: Setup the Circuit

Picture of Setup the Circuit

The signal created by the strain gauge is about a change in resistance. The simple way to measure the change is to create a voltage divider. By putting another equal resistance in series with this one, and measuring the voltage between the two, as the resistance changes, so too will the voltage. So start by putting a 350 ohm resistor in parallel. you may quickly find that the signal is very small, we'll need a better setup to measure it.

In particular, the signal changes from about 2.500 to 2.503. If only we could measure the change and get rid of those pesky 2.5... to do this let's setup a parallel circuit and use that to to compare with. Put two 350ohm resistors in series and measure the voltage between the two. Now it's only a change between 0 and 0.003.... well, now the change is obvious, but it's still very small, let's make it bigger.

Run the two signals through voltage followers so that the signal, which is very small, won't be impacted by the amplification. Now let's subtract and amplify the signal. Run the voltage followers into the subtractor, and amplify it by 1000x. To do this connect one voltage follower to the positive via a small resistor, and then to the ground by a resistor 1000x larger, and the other to the negative by a resistor, and that one to the output by 1000x greater resistor.

Snap for arduino is a great way to graph the output of the sensor, and a good place to start if you've never programmed before. Alternately, you can use just the arduino IDE for very high speed / high accuracy output.

Step 3: Build the Plate

Picture of Build the Plate

Now that we have a circuit and displacement sensor, let's take the final step and make the force plate. There are a ton of ways to do this, but we want something cheap so you can go to any hardware store and get some pipe insulation which is very springy. Using this as a spring we should be able to use hooks law F=kX, to determine the force on the plate.

Take your insulation and cut it up. Typically it will have a slit down the side, and cut it into similarly sized cylinders. Depending on the strength of the force you want to apply, you may want different areas. For example, if you're learning about boxing and force, you may want a smaller spring area, but if you're making a platform to measure jumping you'd want a larger one. Make sure that your springs are about as tall as your displacement sensor. Alternately, if you only care about forces > than a certain size, you can make it slightly smaller.

When you have your springs, place your sensor between them, and place a box or stiff piece of plastic over the top. If you're going to be punching it, make sure to put a bit of padding on the top just in case.


TanW17 (author)2017-03-16

Hi, how many directions can this force plate measure (i.e. Fx, Fy, Fz, Mx, My, Mz) ?

SillyInventor (author)TanW172017-03-17

1, Fz. However, to clarify, Mz is just standing Fz/g.

daniel8a (author)2016-11-29

Hello! Im froma Argentina and Im new on this too. I would like to ask you. if you could give a little more details about the components. Im trying to start the construction of the plate and I have to buy the components. And as Im not an electronics expert (just an sports science student) Im having some troubles choicing the resistor, for example: I can see there 22kohm resistors of 0.25w or 3. Same problem with de op amps (which specs are the most important to have in mind when you are buying).

Im sorry for all this cuestions. I apologize, because Im have almost no knowledge of electronics, but I have a big Illusion of building this plate.

All the helpness you can give is going to be a bless for me.

Thanks a lot.


SillyInventor (author)daniel8a2016-11-30

None of the components should experience high current, so 0.25w will be more than enough for any of the resistors. The opamps are similarly open ended with few requirements by design (we wanted it to be easy for the students to get into).

The only consideration is that, if you intend to amplify something by this amount, you must be relatively certain of the voltage divider resistance. So good tolerance (1%) and little change with temperature is ideal for the 330 ohm resistor.

seanmcquaid1 (author)2016-08-22

I am really new to all of this but would there be a way to measure the time that a force is applied? the amount of force is irrelevant for what i want to do. I just need to know if the time that the force is applied is < or > a certain time. many thanks

Certainly, this is the sort of thing I do with students, and which is a simple introduction as it requires only the smallest amount of code to write a program to return that. Add globals:

const int threshold = 255;
int startContactTime = -1;

Then add in loop:
if( startContactTime== -1 && analogRead(0)>threshold) //check to see if pressure has been applied for the first time

startContactTime=Millis(); // if it is, capture the time (millis will return the time in milliseconds

else if (startContactTime!= -1 ) //if the plate was contacted, but isn't anymore

Serial.println(Millis() - startContactTime); //display the time at release

startContactTime= -1; // clear the time for contact


When I run classrooms, I prefer instruments that are versatile enough so that students can branch off and make different things. However, when running a workshop with this project, I found that there wasn't enough time to properly teach the students the analog components in this lesson. If you know that no force data is required, I suggest using another sensor like:

to cut back on the number of analog components the students need to understand. It makes it faster and easier, and there is plenty of room to branch out.

Thanks this is really helpful ! I think I will add a red and green LED to correspond with if the time condition is met. Would this be simple enough ?

Yes. To globals also add:
int redLED= 1;
int greenLED= 1;

And to the loop add after the rest:
digitalWrite(redLED, HIGH);
digitalWrite(redLED, LOW);


Then into the two prior conditionals add:

digitalWrite(redLED, LOW);
digitalWrite(redLED, HIGH);

dmwatkins (author)2015-06-19

Great idea! This could be useful for measuring many things.

About This Instructable




More by SillyInventor:How to Make a Simple Distributed Sensor Buoy SystemHow To Make a DIY Force PlateHow to Build an E-waste Watering Can
Add instructable to: