Pinewood Derby Car Scale With Center-of-Gravity (CG) Calculation




Introduction: Pinewood Derby Car Scale With Center-of-Gravity (CG) Calculation

About: Electrical/Systems/Test Engineer - Retired

A key factor when building a pinewood derby car is its weight. The Boy Scouts of America and other organizations specify a weight of no more than 5 ounces. To improve performance many builders will add as much weight (mass) as possible up to that maximum allowable weight limit. What is often overlooked is the car’s center of gravity (CG) (AKA Center-of-Mass). Too far back and the car’s front wheels risk the possibility of jumping the track. Too far forward and you lose out on a few extra inches of acceleration during the downhill part of the track. Many pinewood car building experts agree that the ideal CG location is about ¾” just forward of the rear axle (assumes a standard pinewood derby car wheel base of 4 3/8”). There already are many gadgets on the market that help you determine your car’s CG. But since we need a scale to weigh the car anyway I thought that if the scale can also determine the car’s CG at the same time it would make the task of adding weights to the car a bit easier. I realized that if I can simultaneously and separately measure the weight at both the front and rear axles, I can easily calculate the CG. Having played around with the HX711 load cell sensors in the past I knew this would be a great Arduino based project.

This project uses two inexpensive HX711 load cell sensors to measure the front and rear axle weight, a 4 row, 20-character Liquid Crystal Display (LCD) to display the weights and CG, some switches and an Arduino UNO microcontroller to do all the computing.


The electrical parts required for this project are listed below.

  • Qty=1 - Arduino UNO Microcontroller Board
  • Qty=2 - 1 KG Scale Load cell Sensor, w/ HX711 ADC Module
  • Qty=1 - Miniature toggle switch, SPDT with center off position
  • Qty=1 - Miniature toggle switch, SPST
  • Qty=1 - 5.5mm Power Receptacle, Panel Mount
  • Qty=1 - Power Supply Adapter, 9VDC, 400ma (minimum) with 5.5mm Power Plug
  • Qty=3 - Miniature pushbutton switch, SPST N.O.
  • Qty=1 - 20 X 4 LCD Display w/ I2C Backpack, 5 Volt
  • Qty=1 - Prototyping circuit board for mounting the HX711 ADC modules (Optional)

The wooden enclosure (case) shown in this project is built from the following materials:

  • ¼” x 2.5” x 48” Hardwood Poplar or Ash Board for the sides, Home Depot #:719931245984
  • Qty=2 - Pine wood blocks 0.75” x 1.0” x 3.625” in which to mount the load cells
  • Qty=4 - ¼” Spacers/standoffs for mounting load cells to pine wood blocks
  • Acrylic or Plexiglas or Polycarbonate sheet or tempered hardboard for the weighing platforms
  • Qty=4 - Spacers, TBD length for mounting weighing platforms to load cells
  • Qty=4 - M4-0.7 X 20 mm Flat Head Phillips Screws for mounting weighing platforms to load cells, Home Depot #: 887480117585
  • Qty=4 - #4 x 3/8” Pan Head Phillips Screws for mounting front panel
  • Assorted Wood screws for attaching load cells to support blocks and the base to the enclosure

Tools & Materials

  • Computer – Used for programming the Arduino UNO microcontroller
  • Software: Arduino Integrated Development Environment (IDE) - Free download from
  • Fine Tip Soldering Iron
  • Rosin Core 60/40 solder
  • Standard hand tools, wire cutter, wire strippers, needle nose pliers
  • Wood working tools
  • Wood glue
  • Calibration weight whose exact weight is known (Suggest between 1 & 5 ounces).

Step 1: Building the Enclosure

There are many options when it comes to the enclosure for housing the project including the purchase of a plastic or metal project box. A key requirement for the enclosure is that it have a solid, sturdy base on which the load cells are mounted so as to avoid any flexing or movement when weight is applied. I decided to build my own from wood and have included the build plans in the accompanying photos.

Step 2: Building the Control Panel

I chose to build the control panel using a standard piece of 0.019” thick aluminum sheet metal cut to 3” x 9”. An electric drill was used to drill the holes for the switches and screws. A manual hand-held punch-and-die type sheet metal nibbler tool was used to cut the rectangular hole for the LCD display. The panel was then spray painted and allowed to dry. A label maker was used to create the switch legends and a fine point Sharpie™ permanent marker was used to draw the rectangle around the calibration switches.

Step 3: Fabricating the Weighing Platforms

I designed the scale to weigh cars of varying wheel base with the intent to always have the rear axle positioned at the same location on its weighing platform. Hence, the weighing platform for the front axle was made longer to accommodate different wheel base lengths. The weighing platforms can be made from wood, metal or plastic as long as it is thick enough to be rigid. Spacers are used to raise the platform so it doesn’t touch the load cell and to attain an appropriate height so that the surface is flush with or slightly higher than the top of the enclosure. I happened to have a few pieces of frosted plastic lying around so I used it as my platform material. Since the plastic was semi-transparent it made it easy to locate the drill holes for attaching the platform to its load cell. M4-0.7 x 20mm metric flat head Philips screws were used to attach the platform to the load cell. Care should be taken so that the weighing platform does not touch or rub against any enclosure surface. You may have to do some fitment checks and trim the edges to ensure there is adequate clearance. Additionally, I glued two plastic strips on the rear axle weighing platform so that when the car is placed on the scale, it doesn’t roll away.

Step 4: Wiring

Prefabricated Arduino breadboard jumper ribbon cable was used to connect the front panel switches and LCD display to the Arduino. The HX711 ADC modules were mounted on a prototyping circuit board which was then used to piggyback onto the Arduino to provide the power, ground, clock (sck) and data (dt) connections. A 2 wire cable with a 5.5mm power plug was used for the power wiring. See attached schematic diagram.

Step 5: Installing the Arduino Software

It is assumed you are already familiar with using the Arduino Integrated Development Environment (IDE) for uploading the code to your Arduino board. If not, the Arduino and Instructables website have plenty of tutorials to help you get started.

The Arduino source code is well commented making it easy to tell what each section of the code is doing. Hence, it will not be discussed in detail here.

Additional Libraries Required

The code uses the following libraries that must also be resident on your PC. Refer to the Arduino website or YouTube for instructions on how to install these libraries.

  • Wire (Installed by default)
  • HX711_ADC
  • LiquidCrystal_I2C

Software Features

Aside from displaying the weights and CG, the software has the following features:

  • Ability to adjust the wheel base (axle separation) used in the CG calculation
  • Ability to adjust the value of the calibration weight used for calibrating the scales.
  • On-screen step-by-step instructions when calibrating the scales.
  • Save calibration values to the Arduino’s EEPROM for storage and future use.
  • Ability to reset the scales (i.e. perform a Tare function to zero the scale).

Step 6: Operation - Setting the Wheel Base

In order to calculate the CG in inches just forward of the rear axle the software must know the car’s wheel base (Axle Separation). The default setting is 4.375 inches which is the default wheel base of most pinewood derby car kits. However, the wheel base setting can be adjusted between 2.0 and 7.0 inches in 1/8 inch increments. As the wheel base is adjusted the optimum or ideal CG position is calculated and displayed as a reference for comparison to the actual measured CG. To increase or decrease the wheel base press and hold the + or - button. The display will show the current set value.

Step 7: Operation - Setting the Calibration Weight Value

In order to calibrate the scales (load cells) the software must know the weight (mass) of the calibration weight used to calibrate them. If you know your calibration weight value before you upload the software to the Arduino, you can set it in the Setup section of the code (e.g. calMass = 2.72) as the default value. Otherwise you can set it using the following procedure: Simultaneously press and hold the ENTER and the + or - buttons. The display will show the value increasing or decreasing in 0.01 ounce increments. Release the buttons when the desired value is displayed. The software will store this value in EEPROM for future use.

Step 8: Operation - Calibrating the Scales

Calibrating the HX711 load cells is in most cases a onetime event when the unit is powered up for the first time. If you have already determined the calibration values for your load cells using a separate software utility those values can be set in the Setup section of the code (e.g. calFactor1 = 25228.3 & calFactor2 = 23571.7 ) as the default values before you upload the software to the Arduino. In this project the capability to calibrate the two scales is built in and the values are saved in EEPROM so that they are permanently remembered. Before we can calibrate the scales we must have a calibration weight whose exact weight is known down to 0.01 ounces. This can be any small object on hand (i.e. a lead weight, large metal bolt, etc.) whose weight is known. A separate commercial digital scale can be used to weigh the object to be used. For best results it is recommended the calibration weight be between 1 and 5 ounces.

To calibrate the scales perform the following:

  1. Set the weight of the calibration weight to be used per the directions provided in the previous section.
  2. Place the calibration switch to the Cal1 position (Rear axle).
  3. Follow the on-screen instructions for calibrating the left (Rear axle) scale.
  4. Place the calibration switch to the Cal2 position (Front axle).
  5. Follow the on-screen instructions for calibrating the right (Front axle) scale

Step 9: Operation - Weighing Your Pinewood Derby Car

Once the scales have been calibrated and the wheel base has been set you are ready to weigh your car. To weigh your car place it on the scale so that the rear axle is on the left platform and the front axle is on the right platform (Refer to Figure 6). Allow the scale to stabilize before recording the readings. The CG value displayed is the distance in inches just forward of the rear axle. As you add weights during your car’s weight adjustment you can immediately see the effect on the CG and adjust the weight position accordingly to optimize the CG.

From what I’ve gleaned from other car builders the optimum CG position for a car with a 4 3/8” wheel base is somewhere between 5/8” and 7/8” just forward of the rear axle which translates into a 17.2% +/- 2.8% of the total wheel base. Said in a different way, the optimum CG is attained when 17.2% of the car’s total weight is on the front axle and the remainder (82.8%) of the weight is on the rear axle. That distance is easily calculated using the following equation:

Optimum (Ideal) CG position: Dcg = 0.172 * Wheel Base

If the weight on each axle is known, the actual CG is easily calculated using the following equation:

Actual CG position: Dcg = Front Axle Weight/Total Weight * Wheel Base

CAUTION: The load cells used in this project are rated for a maximum weight of 1 KG (35.27 ounces). Placing objects heavier than this may damage the load cell. HX711 load cells rated at 2, 3, 5, 10 and 20 KG are available if you plan on weighing heavier objects.

Be the First to Share


    • Pumpkins & Gourds Speed Challenge

      Pumpkins & Gourds Speed Challenge
    • Lamps and Lighting Contest

      Lamps and Lighting Contest
    • Back to School: Student Design Challenge

      Back to School: Student Design Challenge



    2 months ago

    I guess, when your cells are rated for 1 kg, you must subtract the weight of your scale platforms to know the max weight you can use, or can that be ignored?


    Reply 2 months ago

    Good point. You are correct. The weight of the platforms and mounting hardware must be considered as part of the total weight the load cell is rated to handle. Luckily it is only a few ounces.


    2 months ago

    Regarding using a calibration resistor. The common circuit boards and chips are not designed to use a calibration resistor. For years I also have used a calibration resistor with load cells and strain gager, but for scales, the use of a weigh is the accepted standard of calibration. Go to any store and see how they calibrate their scale.


    Reply 2 months ago

    Thanks for your interest in my project. But I think you need to re-read the item and if need be review the Arduino source code. I do not use a calibration resistor. I think you may have mistaken the function for setting the calibration weight as setting a resistance value when in fact it is setting the actual weight value used by the calibration function when the calibration weight is placed on the scale. After all, the software must know the actual weight of the calibration weight to do the calibration. Hopefully this clears up any confusion you had.


    Reply 2 months ago

    I was responding to a previous comment questing why a resistor was not used as is the standard with load cells. Load cell will have a calibration resistor as part of the load cell so that a weight or known force is not required to calibrate the system, and that for scales it is a standard practice to use a weight for calibration and testing.
    I very much liked your project and could relate to it as I have worked with my grandson on a pinewood car. I also looked at the height of the center of gravity.
    Enjoy you time with your chilfren they growup all to fast.


    2 months ago

    A project I've been waiting for for a long time! I wonder if it could be used to determine the point of CG of model airplanes?


    Reply 2 months ago

    I don't see why it could not be used to determine the CG of model airplanes. The HX711_ADC library used with the Arduino can handle multiple HX711 modules so even if you have a 3 point scale system (one for each of the landing gears) the CG (fore/aft & left/right) can be determined.


    2 months ago

    Excellent job. When I was a kid this would have been an amazing device to have. I'm sure many people will build it and bring it to the events. It could become the new standard!


    2 months ago on Step 9


    Interesting project. I have 40 years of aerospace instrumentation experience.
    I am curious about your decision to use dead weights instead of shunt resistors for calibration. Please share your thoughts.

    Thank you for your time,


    MAK Services
    Rotonda West, FL 33947
    817-277-4657 Cell


    2 months ago on Step 9

    Very nice project! It would be interesting as an enhancement, if a strip of closely spaced addressable RGB LEDs were placed along the front of the two weighing platforms to highlight the ideal and actual center of gravity (with different colors). It would create a nice visual.


    Reply 2 months ago

    Thanks for the compliment. You have a very cool idea. Using addressable LED strips never crossed my mind (I've never used them). Such an addition would make the scale great for kids to use when they check in their car on race day.