We're doing a school project where we have to measure weight on a fitness machine.

enter image description here

The user can select how many weight plates to use by moving a rod like shown in the picture.

How would you do it?

We've talked about the following solutions:

  • a strain gauge measurement unit beneath the stack, be we doubt that it will be robust, and it will be expensive.
  • an IR distance sensor that counts the spaces between each plate.
  • inductive proximity sensors
  • Some kind of electromagnetic solution?
  • \$\begingroup\$ One could have a vertical array of recessed emitters and detectors spaced to match weight spaces then measure height raised, mass and time by detecting the reflection of moving edges and ones which are static to know the difference from the total plus the height reached and the duration of time accumulated in raising the mass to obtain some kind of energy value. \$\endgroup\$ Mar 14, 2017 at 16:59
  • 1
    \$\begingroup\$ A load cell in the stack (or that otherwise moves when you lift the weights) is not a good idea. The detected weight will change depending on how hard you pull, and will vary as the weight goes up and down. I'd put it under the stack that stays put. You know the maximum in the stack. Measure the weight, subtract from the maximun. What's left over is how much has been lifted off of the stack. \$\endgroup\$
    – JRE
    Mar 14, 2017 at 17:02
  • 1
    \$\begingroup\$ Easier probably to put a bunch of led detectors behind the stack. Paint the weights a non-reflective color, and put reflectors on the weights. Stagger or stairstep them so that a weight lifted from below doesn't trigger the next higher sensors. The lowest sensor that doesn't "see" its reflector gives the position of the lifted weights. \$\endgroup\$
    – JRE
    Mar 14, 2017 at 17:07
  • 3
    \$\begingroup\$ What is the reason for doing this and what do you actually want to measure? These plates are usually marked with the weight. In addition, weight machines often have various pulleys and lever-arms such that the effective lifting weight is different from the weight of the plates. \$\endgroup\$
    – Tut
    Mar 14, 2017 at 17:46
  • 4
    \$\begingroup\$ @Trevor in my experience as a student, underspecified projects or questions had a single correct answer but the questioner hadn't realised there were other possibilities, making mind-reading an essential exam skill. \$\endgroup\$
    – pjc50
    Mar 14, 2017 at 19:32

5 Answers 5


What not to do

One obvious solution would be to put a load cell in-line with the wire, above the weights. That would probably work well, albeit with some extra peaks and troughs in the signal as the weights move up and down. But: the wire and it's connection to the weights may be safety critical. If the wire parts, it will lash around, and the weights would drop with quite a bang. So don't interfere with the wire unless you're very sure it's remaining strong.

Some Ideas

  • Put a microswitch in each hole into which the weight selector can be placed. Use a microcontroller to monitor the switches.
  • Put a load cell under the unused weights, and subtract that from the total.
  • Put an ultrasonic sensor near each weight, and watch for them dissappearing. Watch out that only the lowest one which is being lifted will definitely dissapear from the sensor, as lower weights may still block higher sensors.
  • As above with a LDR and LED for each weight.
  • As above with a microswitch on a stick for each weight.
  • \$\begingroup\$ Load cell under the unused stack of weights gets my vote. \$\endgroup\$
    – Tinkerer
    Mar 14, 2017 at 23:57
  • \$\begingroup\$ What about measuring the load on the pulley at the top of the machine with a load cell? Compared to having a load cell in-line with the cable, it'd be trivial to implement safely, with the added benefit of the sensor being stationary. Compared to having a load cell measure the weight of the unused weights, it would be less susceptible to shock loads (the weights smashing on the buffers at the end of travel). Compared with microswitches and IR/ultrasonic sensors, it'd be more accurate and arguably simpler. \$\endgroup\$
    – jms
    Mar 15, 2017 at 0:56

Do you have a lot of students who exercise in the dark? No, you say?


Position them so they are quite close to the weight, and have them report back an analog reading of light level.

You can try using ambient light level, and some software to normalize and remove false readings from people walking by etc. If this problem proves difficult, provide your own light by putting an IR LED right next to the IR optodetector. If this continues to produce falsing, switch the lights on and off semi-randomly (so you don't contend with other machines using the same system), a sensor which changes dramatically with your pulsing is on a weight.

It may be possible to economize on sensors by having a sensor one position above the top weight and then a sensor at every other weight below. If the above-sensor detects whilst all the weight sensors are still detecting, then the starting weight is not on a sensor.

Given that most gyms kit out a variety of machines from one manufacturer, and those makers have only 1 or 2 standards for weight packs, it should be possible to fab a PCB that positions the components correctly.

Another option is to junk all that and go with pneumatic resistance machines. There are weight machines which do exactly that; they need an external air supply which you manually feed or bleed off with two pushbuttons on the machine. I have seen machines with no electrical connection, only an air line. They have an electronic display reading out weight level, which takes minimal power, and presumably uses batteries, solar or a microturbine. It wouldn't be hard to have an NFC smartcard which you swipe and the machine automatically pumps/bleeds to your weight setting, while reporting via WiFi your performance


Switches activated by a cam on a vertical mounted bar next to the stack.

When the plates are lifted the and the top most switch is activated (on) then you have a valid count.

As the plates move upward the top switch will remain closed until the last plate being lifted passes. That is the point in time to read the switches states.

enter image description here



a strain gauge measurement unit beneath the stack, be we doubt that it will be robust, and it will be expensive.

A load cells under the stack or in the cable would be the ultimate solution. AS you have noted though, normal load cells are not cheap.

However, it may be possible to "arrange" something that adds measureable deformation under the plates, perhaps a spring, or a slab of rubber or some such and measure that deformation.

One COULD even create a simple weight detecting capacitor...

enter image description here

And detect the change in the capacitance. That would be a cool little project too.

As JRE Mentioned, better to weigh what you are NOT lifting than when you are lifting though and do the math.

an IR distance sensor that counts the spaces between each plate. inductive proximity sensors

Although these are easy to do, they really do not answer the challenge since they do not measure weight. The weight exists without moving the plates too far.

Some kind of electromagnetic solution?

No idea what that would be.

BY THE WAY: Stack-Exchange is usually NOT the forum for answering school projects and such so I wont give you much more details. However, I personally am giving you help because I believe your are doing an appropriate amount of research and utilizing the resources the web has to offer to you, HOWEVER I expect you to publish the fact that you used this help in your development. You do not have to mention me personally, but you should include the fact that your consulted with on-line "experts".


This started out as a comment and got too long. Scrap the load cell concept. Even if it was under the entire stack trying to measure unused weights, if Joe Sixpack lifts a substantial weight as high as it goes and drops it (happens all the time), the load cell will be exposed to huge forces. Surviving that is going to take a load cell rated for huge forces, or it wil be out of calibration within a couple weeks. The result will be pathetic dynamic range and SNR, and a super expensive solution. Pretty much any other concept will work better for less than 10% of the cost of a sufficient load cell.


Not the answer you're looking for? Browse other questions tagged or ask your own question.