Saturday, 9 February 2019

A 3D printed CG scale

How do you measure the CG of your model? Very likely, you'll be balancing the model over a pair of pivoting arms, or - if you're feeling lazy - your fingertips. Low cost yes, but not very convenient or accurate. Well you've guessed: there's a better way...

CG Scale

CG Scale is an electronic CG scale for F3X sailplanes. It's an open source project on GitHub, so anyone with a soldering iron and access to a 3D printer can make their own. The scale is the brainchild of Olav Kallhovd from Norway. Thank you Olav, for sharing your great design!

In use, you simply place the model on the scale, and read off the weight and CG position. The model's location on the scale is fixed, making it easy to experiment with different balance weights.

Finished scale showing the frame (with covers removed) and display unit.


The scale employs a couple of aluminium load sensors, some electronics and various 3D printed parts. Calculations for CG and weight are performed by an Arduino microcontroller.

The main component is the frame. Bolted to this are the load sensors - actually just one half of each sensor; the other half carries a cradle which supports the wing. The front cradle has a pair of vertical posts for locating the leading edge.

Twin sidepods house an Arduino, supporting electronics and a 9V PP3 battery.

Load cell cover removed, showing fixed part of each load cell bolted to frame.

The display unit connects to the frame via a 3-wire cable. It comprises an LCD panel and a second Arduino.

Parts of the display unit. There's an Arduino lurking under the LCD panel!


The first step is to download the project files - these include the STL files for printing the plastic parts, a bill of materials, photos, circuit diagrams and Arduino code.

I printed out the plastic parts with a Creality CR10 Mini printer using PLA filament. The frame took longest to print - around 9 hours.

The sensor and electronic components are widely available from eBay, Amazon and other suppliers. The Arduinos can vary a fair bit in price - the cheap ones I got work fine. The Arduino site has some excellent introductory material.

The load sensors are designated "YZC-133". These are available in various ratings - I purchased two 3kg units. It's important that the sensors are mounted flat and perfectly aligned. Unfortunately the mounting holes on one of my sensors were slightly off-centre which caused it to tilt slightly when bolted to the frame - resolved by reworking the holes in the frame. Similarly, the four wing support pads must lie precisely in the same plane.

YZC-133 load cell. One half is bolted to the frame, the other carries the cradle.

Also required are a couple of amplifiers for the load sensors. The ones I obtained are marked 'Keyes 234'. These are longer than the ones shown in Olav's photos, and I had to file some material from the ends to get them to fit in the enclosure.

Main compartment showing load cell amplifiers (red boards), and Arduino Pro Mini.

Making the display unit

The LCD panel is a generic 1602 (16 character/2 line) device. It's worth getting one with an integral I2C board, as it connects more easily to the Arduino.  Both types are supported by the project.

My panel did not have the I2C board, which meant that extra wiring was required. To get it all to fit, I dropped the bottom of the case by 2.5 mm. (Olav has published a STEP file, allowing the design to be modified using software like Fusion 360).

LCD panel and Arduino 

First switch on!

With construction over, it was time try apply power and stand well back! To my relief, nothing exploded, and the roof is still intact. There wasn't even any smoke.

There was just one issue: the battery voltage wasn't displayed during the startup process. I modified the main sketch to add a short delay before the writing to the display, and this cured the problem.
delay(500); // allow display to initialise
For viewing and uploading the Arduino code (called 'sketches') I used the excellent web-based development environment. It's very easy to use, even for an Arduino newbie.


The calibration constants for the load sensors are hard-coded. As a result, the calibration procedure involves some editing and reflashing. Documentation is a little thin here. The way I did it was to initialise the calibration constants to 1000. I then applied some known weights to each cradle, noting the values displayed. From there I was able to calculate corrected values, in order to display the weight in grams. Finally, I edited the code and reflashed the Arduino.

One nice thing is that placement of calibration weights isn't critical, it seems that the load cells are very good at responding to sheer stresses only, while rejecting bending moments.

Measuring the empty weight and CG of my Stribog


My unit works very well. Readings have been accurate and repeatable, over a range of ambient temperatures. Just a couple of niggles: the default cradles are quite narrow, so you may want to find an STL file for a wider version for anything other than the more recent F3X models. Also the battery life using the default PP3 is quite short, just a couple of hours.

Total cost including all hardware was around £40. If you can't or don't want to build your own, the CG scale can be purchased ready made from T9.

All in all, this has been a fascinating project, albeit more time consuming than anticipated. Best of all, CG measurement is now a pleasure instead of a chore!


CG Scale project page (Github)
Build thread (RC Groups)

No comments: