BLDC Dyno — Measuring Thrust with an Arduino, Load Cells and Force-Sensing Resistors (FSR)
When designing an aircraft it is useful to understand how much thrust is required to keep it in the air. For a quadcopter, the relationship is quite straight forward. In order for the drone to get airborne, we need a force from the four engines which is larger than the force of gravity, keeping it on the ground. Things get a bit more complicated when the drone tilts to change direction, but it is nothing that a bit of trigonometry can’t solve.
Ideally, motor manufactures would provide voltage/thrust curves to assist with design, but these are seldom available. Usually all you will have is a couple of data points (Figure 3) for grams of lift, using a particular propeller, at a certain voltage. If your voltage/thrust curve isn’t linear, or you want to try different propellers, you have to experiment to find out what works.
There has to be a better way. What we need is an instrument that can plot the voltage/thrust curve for any motor and propeller combination. We use Pulse Width Modulation (PWM) to control the Electronic Speed Controller (ESC) which drives the motor, and it would be nice to be able to relate the PWM percentage to thrust.
The obvious solution is to use a load cell (Figure 1). A load cell is a transducer which converts force into a voltage. There are many different types of force sensors, with strain gauges being the most common. The cheaper alternative, is a force-sensing resistor. We will try both designs and compare the results. Accuracy will be determined by using a set of calibrated weights.
Schematics and PCB layout files may be found in the Reefwing Software GitHub Repository.
Calculating Thrust from Motor Tables
When a quadcopter hovers, the motors are producing static (motionless) thrust. This is the simplest situation and the one we will look at first, but later we will consider what happens when the drone pitches or rolls. Spoiler…