Introduction: RC Motor Dynamometer V1.0
Anyone who's ever played with RC cars and trucks knows that all motors are not created equally. However, if you try to compare two motors the internet mostly gives you anecdotal evidence. Even the manufacturers often neglect to give you useful data on their motors. Speed checkers can be bought for 1/24-1/28th scale cars, but this gives you very little information. What we need is a dynamometer.
For those who don't know, a dynamometer is literally a "power meter" used on engines. In this case we'll be using Newton's second law to calculate the torque output of our RC motor. By measuring the rpm of the motor under a known load we can calculate acceleration, torque, and power. So let's take a look at just how this works.
Step 1: Theory/Calculations
To start at the beginning, we need to find power and torque. Power is simply torque*rotational velocity, so let's focus on finding torque. Torque is often defined as force*distance and while we can easily measure radius, measuring force as the motor is moving would be difficult to do without using expensive equipment. However, torque can also be defined using the rotational form of Newton's Second Law, torque=moment of inertia*angular acceleration. We already need to measure angular velocity in order to find power, so we can easily find acceleration using calculus. The angular velocity can be found using an optical sensor and a tone wheel (wheel with teeth). This method will output the velocity without adding additional load on the motor. Next we'll need to find the moment of inertia of the tone wheel. We can find this experimentally, but I didn't want to spend more time designing a test rig for this. CAD software will often calculate moment of inertia for you when given the material properties of your part. However, this isn't entirely accurate when 3D printing the part as the printer doesn't print solid objects, but instead uses a honeycomb infill. We can attempt to calculate what this value will be, but the calculations will become complicated if we try to account for how the part is printed. In the end, I decided that the easiest yet accurate method of finding the true value would be to take the theoretical value from my CAD software and multiply it by the ratio of the theoretical mass to the actual mass of the pulley. This method is not 100% accurate, but gets me close enough to the true value for me to be satisfied. So now that we know what data we'll need, let's look at how to build the dynamometer.
Step 2: Materials and Tools
- ABS or PLA Filament
- 24-20AWG Solid Strand Wire
- 22AWG Stranded Wire
- 2 Alligator Clips
- 1 IRL7833 MOSFET (Amazon.com)
- 1 TCRT1000 Optical Sensor \
- 1 100 Ohm Resistor \
- 1 1k Ohm Resistor \
- 1 4.65k Ohm Resistor (Tayda Electronics)
- 1 100k Ohm Resistor /
- 1 2.1mm Barrel Jack /
- 1 2.1mm Barrel Plug /
- Hot Glue
- Prototyping Board
- Small Heat Sink
- Thermal Compound
- Soldering Iron
- Hot Glue Gun
- 3D Printer
- Arduino Uno
The IRL7833 MOSFET is capable of delivering up to 150 amps, so it should be good for any 130 motor, but I've yet to try it for 540 or 550 motors. If you do decide to use a different MOSFET just be sure to check the Drain-to-Source Current vs Gate-to-Source Voltage chart of whatever MOSFET you choose and make sure it will provide enough current for the motor in question. An example of this chart can be seen above. On that note, if you plan on running a 540 or 550 motor I would recommend upgrading the motor wires (the 22AWG stranded wire listed above). I was originally using wires which were about 28AWG and when running high performance motors the wires got hot to the touch and actually choked back the motor. Also, I wouldn't recommend running this dyno on anything greater than 1S lipos, or if you choose to use a power supply, no more than 4-5 volts. High performance motors will spin the tone wheel too fast and will likely throw the wheel across the room at speeds over 7,000 rpm (I'm speaking from experience). Keep in mind that this "top speed" is under the inertial load of the tone wheel and therefore will not be the maximum speed advertised by the manufacturer. For example, an Anima 2 will peak around 6,000 rpm at 3.7 volts on the dyno. I would also recommend installing a heat sink on the MOSFET. While I haven't run the dyno with the IRL7833 without one, according to the 7833's spec sheet it will over heat if you draw more than 27 amps without a heat sink.
Step 3: Printing and Assembly
The parts are very simple to print, my only comment would be to print both locking pins at once as this will give each part some time to cool between layers and will result in a better finish. If you need to adjust the part files or want to make a new motor mount I've included the SolidWorks files in the Dyno CAD Files zip (Dyno Part Files contains STL files). Because the tone wheels are a friction fit, it may be difficult to get the hole for the shaft the right size. I remedied this by printing the wheels with the hole slightly too big and injecting hot glue into the hole. Then, I unbent a paper clip, heat up the end of it with a lighter, and plunged it into glue to make the new hole. I found that this greatly improved the grip on the motor shaft and prevented the wheel from flying off.
The most labor intensive part of the assembly is putting together the control circuit. Remember to give yourself some extra length for the wires going to the arduino, I made mine about 12-13 inches long. These and the sensor wires should be soldered to the board before installing. I also recommend keeping the power wires a bit longer. Solder them to the dc jack first and hot glue it in place before soldering the wires to the control board.
The power wires for the motor will be made from soldering a piece of 22AWG wire to each alligator clip, feeding the wire through the two holes in the top of the dyno, and soldering the wires to the control board prior to installation. This will allow us to connect to virtually any kind of motor wires. Please note that if you decide to use an alligator jumper, remove the old wire and replace it with a wire that's at least 22AWG or larger. Using a smaller wire will not only choke back high performance motors but will also cause excessive heat in the wires and may even damage the wires (again, speaking from experience). Once you've done this and the rest of your board is prepared, go ahead and begin feeding through the wires for the arduino and the sensor. The board does not need to be fastened in any way as it will not be able to move any great amount once inside the dyno.
Next, you'll need to fix the position of the sensor arm. To do this, you'll need to place a motor in the dyno and mount the tone wheel to the motor. Next, secure the optical sensor to the end of the sensor arm using hot glue or your adhesive of choice. Finally, position the arm so that the sensor is about .080" or 2mm from the raised teeth of the tone wheel and secure it in place using hot glue.
With the sensor arm in place, solder the sensor wires to the sensor's legs. To make things easier, the middle two legs can be bent towards each other and soldered together with one ground wire.
For the power supply you can either grab a wall wort or power supply from something such as an old computer, or make an adapter cable to power the motor from either NiMh or Lipo batteries. If you decide to do the former, make sure to choose a supply that's capable of supplying at least about 15 amps, preferably 30 depending on what kinds of motors you plan on testing. This method will ensure very consistent tests across multiple motors but may choke back high performance motors if it's not capable of supplying enough current. Doing the latter will allow you to test a motor using the exact same setup as you plan to run on your car, but won't be as consistent due to the voltage changing over time. This doesn't seem to be a significant issue in most cases though. Whichever route you choose, I recommend keeping the voltage to 5 volts or less and only use 1S lipos. At higher voltages the motor will likely throw the tone wheel off the motor shaft due to the higher rpms. This is due to the fact that the tone wheel is only held on by friction and will be fixed at a later time.
Step 4: How to Use/Data Sheets
Once you have the dyno assembled now we need to upload the code to the arduino. In it you'll notice four adjustable settings: 1) The first is the RunTime. By default it's set to 5 seconds. The only time you'll need to adjust this is if your motor hasn't reached steady state (still accelerating) after this time. 2) Next is CalibrationMode. When set to 0 the code will output RPM, Time in milliseconds. Setting this to 1 (or anything else for that matter) the code will output the raw sensor data, Time in milliseconds. You will want to turn on CalibrationMode the first time you upload the code as you will need this for the next step. 3) Following that is SensorCutoff. This is where you define the threshold between the sensor being on (raised tooth in front of sensor) and the sensor being off (no tooth in front of it). In order to perform the calibration, you'll need to open the Serial Monitor under the Tools tab. Make sure power is NOT plugged in to the dyno. In the bottom right corner set the baud rate to 115200.Then move the tone wheel so that there is a raised tooth in front of the sensor and note the values being output. Once you know this value move the wheel so that there is not a tooth in front of the sensor and note the values. If the output does not change when the wheel is moved double check your connection to the arduino and try unplugging and plugging the arduino back in before checking the control board or sensor placement. Typical sensor readings should be between 110 and 160. Choose a value that is between the high and low values that does not appear during either condition and set this as the cutoff value. 4) Finally there's an option for MotorSpeed. This value is a percentage of the original battery voltage and is there to test the motor at partial throttle.
Once you have calibrated the dyno, change the CalibrationMode to 0 and test that the dyno is functioning properly by turning the wheel over by hand and checking that the code is outputting the correct RPM (spinning by hand should output an average of 0-300, 600 if you're spinning it as fast as you can). Again, the power plug should NOT be plugged in at this point. If the dyno is outputting the correct RPM, then congratulations! It's now time to perform the first test!
Keeping the arduino plugged in to your computer, go ahead and plug the power cable into the jack in the side of the dyno. As long as the code isn't running the motor should not move when power is applied. If the motor does move, unplug the power and check your wiring. With the power cable plugged in, press the reset button on the arduino to begin the test. I recommend keeping a hand on the dyno as it will vibrate and may try to move. If the motor begins to spin too quickly or any other problems occur, remove the power cable immediately. When the test is complete the power to the motor will shut off automatically, however the motor will continue to freewheel for several seconds. If you decide to stop it manually remember to use caution.
Now we need to import the data into our Excel sheet to calculate the accleration, torque, and power curves. To do this, open up Notepad and copy the data from the test, paste it into the new document and save the text file. Next, go to the example run in the Excel sheet and click the "New Test" button in the upper right hand corner (you'll need to make sure macros are enabled in order for this to work). Type in the name for the new sheet and you'll see a copy of the first sheet appear. Now we need to select the "Import Data" button. Select the text document you just created and the data will be automatically inserted into the worksheet. The velocity plot and equation will now be updated, but the other plots will not be correct. In order to update these we'll need to update the acceleration equation. This is done by simply entering in the values from the equation on the velocity plot into the boxes under "Polynomials" on the right side of the sheet. Note that you only need to enter the constants for x^4 through x, this is because the last value in the equation will be eliminated when the differentiation is done. Finally, make sure the correct value is entered under "Tone Wheel". This is associated with which of the two wheels you decided to run the test with. Once you've done this all of the data should be up to date and will display your results. For greater accuracy, try to perform at least three tests with each motor that you want to measure, and for even better results perform the test with both tone wheels and compare the results.
Now you can test any motor you'd like by simply swapping out the motor inserts! Let me know if there's any other inserts you'd like to see by leaving a comment below and I'll update the part files. Thanks for checking out my Instructable and feel free to check out some of my others!
Participated in the
Circuits Contest 2016
6 years ago
I really appreciate your efforts. This Dynamometer should be very helpful for some of the projects I am working on. Thanks!
Reply 4 years ago
Is there a different sensor that can be used??
Reply 4 years ago
In theory, any IR sensor which has the infrared emitter and photoresistor in the same package should work. I personally haven't tried any others though.
Reply 4 years ago
Thanks for your question. Unfortunately, I did not write the Instructable RC Motor Dynamometer V1.0. I only left a comment that it would likely be useful at that time for some of the work I was then, about 2 years ago, involved in. If I misunderstood your comment please fell free to write me directly at email@example.com. (Please replace the second 'i' with an 'e' to contact me.)
The very best.
Reply 6 years ago
That's great, I hope it helps!
Reply 6 years ago
The very best.