Thread Tools
Sep 09, 2016, 03:39 AM
Registered User
Thread OP

Center of Mass Finder. How to Build One


There are already simple devices that let you determine CG of your model. If you are not satisfied with them or you want to try some new approach, or if you just like building and designing new things, you can build your own simple but precise CG finder. Here is just a small demonstration of what you can get in the end.

Center of Mass Finder v.2 (0 min 43 sec)

Theory Behind

To find a CG of an object you just need to know basic principles of mechanics. Let’s say we have a plate supported by hinges at all four corners. There is a concentrated force F applied to the plate at coordinates x and y.

Name: 1.jpg
Views: 61
Size: 34.8 KB
Description: Plate supported by hinges at all four corners

As you all know, engineers like simplicity, so we will not use complex plate theories. We do not need to know stress and strain in the plate, so we will just look at the plate as if it were a beam.
Note, that I do not show horizontal components of reactions, since we will not use them in equations.

Name: 2.JPG
Views: 56
Size: 22.4 KB
Description: View A-A

Now we can write equations of static equilibrium. Actually, we need only one equation. Let’s sum up moments acting about point H0:
F*x-(R2+R3 )*a = 0
If we rearrange the equation, we get:
x = (R2+R3 )*a/F

Name: 3.JPG
Views: 37
Size: 22.9 KB
Description: View B-B

Let’s do the same thing for the other side. Summing up moments about point H0 we get:
F*y-(R1+R2 )*b = 0
y = (R1+R2 )*b/F
Now, if we know all the reactions R0, R1, R2, and R3, we can find force F:
If we know distances a and b, we can find coordinates x and y as:
x = (R2+R3 )*a/F
y = (R1+R2 )*b/F

If you think about it for a second. The concentrated force F could be just a weight of an object applied to its center of gravity. That’s all. Pretty easy, isn’t it?

Actually, you can do similar analysis of a plate supported at three corners.

Name: 4.JPG
Views: 27
Size: 29.1 KB
Description: Plate supported by hinges at three corners

To be honest, I cannot give you 100% guarantee that the equations below are correct, especially the one for y coordinate, since my build is based on the plate with four supports. These equations are just based on my intuition. You should verify them yourself.
y=(R1*b)/(F-R2 )

Anyway, it will not be difficult to correct them in software if you already have your device built.


Mechanical Part

Now, when we know the theory, we just need to apply it to practice. So, our goal is to find the center of mass (or center of gravity; in our case we can use these two terms interchangeably) of an object of arbitrary shape.

Observing the equations for x and y we can see that there are four unknowns, namely R0, R1, R2, and R3 (this is for 4 support points). There are several ways to find these reactions. I used strain gauge load cells for that purpose. In particular, I used bending beam load cells, like this one. They are cheap and readily available. You can find a lot of them on eBay. My advice is not to buy really cheap load cells like this one. They are not temperature compensated and creep a lot. The readings start drifting literally after a couple of seconds.

Name: 5.jpg
Views: 39
Size: 21.7 KB
Description: Bending beam load cell

There is a good tutorial on load cells from SparkFun. You should also check out this description of load cells parameters. Basically, the main parameters you should consider are: load cell capacity, rated output (the larger the batter), excitation voltage, and safe overload. Also, make sure that your load cells are temperature compensated, that makes life easier. Below is the list of parameters for the load cells I used.

Name: 6.jpg
Views: 42
Size: 322.8 KB
Description: My load cell parameters

Ok, let’s divide the whole process of designing the device into steps.

Determine the mass range of the objects you want to measure. Then knowing the maximum weight, you are expecting to measure, you can choose what load cell capacity you need. You need to estimate how uniformly the mass will be distributed between the supports. The closer the CG to one of the supports the higher capacity load cell will be required for that support. You may want to be on the safe side and choose load cell capacity to be larger than the expected maximum mass. In this case, you will not need to think about how to position the examined object that its CG is closer to the center of the platform, but you will experience some loss of precision and sensitivity. There is a trade-off between universality and precision.

In general, you can use the following equation with the different values of FS (factor of safety) depending on the type of objects you are going to measure:
load cell capacity=FS*(mass of object)/(number of supports)

The next step will be to design a base frame that will connect everything together. You may choose to have your load cells separate. I guess, it is a reasonable thing to do if you have something really big to measure. Otherwise, it is easier to have the dimensions between the supports fixed.

There are numerous possible designs for the base frame. Below is just one of them.

Name: 7.png
Views: 55
Size: 151.1 KB
Description: Possible base frame

One important point is that you should have good vibration isolation. Attach some pieces of rubber or foam to the bottom side of the frame to isolate it from the vibrations coming from the surroundings. Strain gages are very sensitive!

Now you need to design a platform that will support examined bodies. You can either use a simple rectangular plate, or you can develop your own design. Again, it all depends on your goals. You can just have two metal tubes welded together as a platform (for 3 supports). The important thing is the arrangement of the load cells. As long as you keep it according to the theory you can design whatever you want. Just make sure that your platform is stiff enough and do not visibly deflect under the maximum applied load.

Name: 8.png
Views: 27
Size: 69.2 KB
Description: Possible platform

Assemble everything together. The important thing is that you need to imitate hinges at all of the supports. If you go back to the theory part, you will see that in our scheme it is assumed that all supports are hinges. So to use the derived equations you need to avoid exerting any moments at the supports. Below is my design. You can come up with a more elegant solution.

Name: 9.JPG
Views: 51
Size: 44.7 KB
Description: Connection between load cell and platform

Here I used a small plate between the load cell and the platform because there are two holes at each end of my load cell. In this way I avoided twisting of the load cell. If you have a single hole in the center you can put the bolt directly through that hole. Note that the diameter of the washer is much smaller than the size of the platform. If you do not tighten the cap nut too much, we can say that the moments at the supports are negligible for our application. Also, this type of connection lets you adjust the position of the platform, which will help you to level the platform.

In this last step of the construction, you need to think about what indication system you want to use. The simplest solution is to draw a mesh with coordinates on the platform. You can print it on a piece of paper and then glue it to the platform. Or you can design you own mechanism. I used a laser pointer controlled by two stepper motors. Actually, it was the most difficult part of the project. I had a lot of problems with it. I will not describe it here, because it is a totally different story. If someone gets interested in building an indication system like the one I did, I may write another guide explaining how to build it.
Before we move on to the electrical/programming part, I want to emphasize some of the most important points considering the structure of the device:
• Good vibration isolation
• Stiff platform
• Supports behave like hinges

Electrical/Programming Part

I am not an electrical engineer or programmer. Unfortunately, I will not be able to give you any in depth explanations and tips in this part, since I myself am in the process of exploring that exciting field. So I will just describe what I did and what parts I used.

First of all, you need a microcontroller. You can choose from a variety of prototyping boards like Arduino, LaunchPad, Teensy, and etc. I used Arduino Uno and Teensy 3.1. But I would say that Teensy 3.1 is overkill for this project. You can get away with a much simpler board (or microcontroller). Let’s focus on Arduino Uno since it is very popular and most of you probably have at least one board lying around.

ATmega328P (the brain of the Arduino board) has built-in 10-bit ADC, but it will not give us sufficient resolution. So we will need an external ADC. I used HX711 boards, which are sold on eBay for a couple of bucks each. The sampling rate is pretty low – just 10 SPS (you can get 80 SPS by desoldering one of the pins), but for our application it is more than enough. Here is the HX7111 datasheet.

Name: 10.jpg
Views: 51
Size: 166.2 KB

You will need one module for each load cell. You should place it as close to the load cell as possible. Since load cells output very small voltage, you want to have the wires as short as possible. In my setup, I placed the HX711 modules right below my load cells.

Name: 11.JPG
Views: 57
Size: 65.0 KB
Description: ADC close to load cell

Below is the connection scheme I used. You should check your load cells datasheet before connecting anything.

Name: 12.png
Views: 45
Size: 13.0 KB
Description: Connection scheme

Next connect the HX711 boards to the pins of your choice on the Arduino board.

In this step, we need to calibrate each of the load cells. By calibrating I mean, we need to find the linear function describing the relation between load applied to the load cell and number produced by the ADC for that load. The simplest way is to attach a small plate to the load cell and successively place two known weights on it, each time writing down the reading. A sample sketch is attached below.


Name: 13.jpg
Views: 34
Size: 157.0 KB
Description: Plate for calibration

This is the final step. Now that you have everything assembled upload the code attached below to your microcontroller.


The code just sends the data to the serial port, but you can easily change it to send data to an LCD.

If you have any questions, I will be happy to answer them. I will be very curious to see your designs.

Last edited by Todoshka; Sep 30, 2016 at 03:10 PM. Reason: Typos
Sign up now
to remove ads between posts
Sep 23, 2021, 07:40 AM
Registered User
Please can you upload your laser function and the way the motor and everything works too! I’m trying to use something like this but for colour finding and this is perfect!

Quick Reply

Thread Tools