Motor Test Station (MTS)

If your motor has a spec and you have a reasonable idea of the load torque, it will give you the right numbers within the tolerance you'd expect. Sizing motors is not rocket science really! Its finding the datasheet for a small motor that's the trickiest part.

You have a good testbed there for a smooth flat surface, but usually its the lumps, bumps and slopes that place the most demands on the drivetrain - check you have the torque and power needed for the worse incline too.

Hi Mark,

I provided link to (12V) motor specification above, but here is a better photo: |500x375

Spannung: voltage Leerlauf: running idle Strom: current Maximaler Wirkungsgrad: maximal degree of efficiency Drehzahl: number of revolutions Stromaufnahme: current consumption Drehmomemnt: torque Abgabeleistung: output power Effizienz: efficiency

The wheel is the 48mm diameter one of these.

Calculating with 17.500 rpm gives: π*0.048*17500 = 2638.9 m/min

What I have measured is: 6.90*60 = 414.0 m/min

So what to do with above motor specification? How to take the weight (52g here) into account? How the mass distribution on the wooden rotating stick?


The wheel is the 48mm diameter one of these.

Calculating with 17.500 rpm gives: π*0.048*17500 = 2638.9 m/min

What I have measured is: 6.90*60 = 414.0 m/min

So what to do with above motor specification?

Well I'd first calculate the velocity and force at the wheel rim, getting v = 42 m/s, F =0.03N

Hmm, 0.03N is not enough force for anything really (3gf)! Clearly some gearing is needed (which of course it always is with a small motor as torque is limited by motor volume)


How to proceed?

1) Work out the worst case torque (at the wheel) needed for inclines, acceleration that you need. 2) Work out the max speed (at the wheel). 3) the product of those two gives the power you need for the motor, but you'll need to add 50 to 100% to allow for transmission losses if you use gears/belts. 4) with the gearing and wheel radius you can then map that to motor specifications, and thereby select an appropriate motor.

Lets say I have 200g load I want to drive up a 1-in-10 incline worst case - thats 0.2N at the wheel (weight force x 0.1). With two motors you share that, so 0.1N per wheel. Want max speed of 5m/s, then power needed is 0.5W per motor (double for good measure as will use gears, 1W motors).

Say a 20mm radius wheel, so torque = 2mNm, angular velocity 250 rad/s (2500rpm).

You motor can only do 0.7mNm, so lets assume 5:1 reduction gearing, gives it 3.5mNm and a angular velocity of 350rad/s.

Its rare that you can avoid reduction gearing of some form in a small motor - your system is overloading your motor completely I think, so the motor can't get close to its max speed - you are likely overloading the windings as it struggles to supply enough torque.

If you want to get that rig going faster you need to reduce the friction at the pivot and try to reduce the air resistance. Remember that the force that moved things to the outside is also acting on the pivot and increasing the friction there.

If you don't believe the motor specs and want to test the motor you need to make a dynamometer.


If the point is to move a robot, the puny 0.00071Nm rating is not going to go away by testing it (neither will making a low friction test rig remove friction from the actual robot), you need to do the math and add the reduction gearing!

Thanks Mark for the detailed calculations, I will follow up on that later.

Thanks Russel on the friction, that will go away with two motors/wheels and give a little boost then.

You mentioned to consider the requirements, those are easy (at least for my first use case "line follower"). The surface is completely flat in simple scenario (screenshot from first 3.1m/s average video):

And I am very satisfied with the speeds achieved sofar, pretty sure that they cannot be reached because of all the turns. The last MTS run I did with this 12V motor was to take into account that the robot will have two motors/wheels sharing the load. So I moved the load into the middle of the wooden arm:

It was clear that this will reduce speed, but it did not that much (youtube video): 6.90m/s -> 5.46m/s or 24.84km/h -> 19.64km/h

Now regarding the total weight of the robot, I target for sub 70g (if using this motor) and not 200g: |500x163

4 LiPos + Arduino + L293D motor controller + soldering solution: 33g 2 motors with 2 wheels: 18g half table tennis ball as 3rd point of contact, 2 foto transistor, 1 IR LED, board piece: 11g

So total weight of "Asurano": 62g "Asurano" = "Asuro" like robot (see) based on Arduino "Nano"

Next MTS task is to test this 15V motor with 3 times the torque (2.16Nmm) of previous motor (15g vs. 8g weight): |500x375

Non-flat surface requirement is given by RobotChallenge Line Follower Enhanced "Seesaw" ;-) |500x313


Did start testing of 15V motor -- not the motor is the problem but the wheel mounting: |500x375

youtube video with bumping.

youtube text copied in:

After much good testing with 12V motor I started testing the 15V motor today.

After killing my 3rd and last Arduino Nano had to modify the soldering to work with Arduino Pro Mini. Interestingly the Arduino Pro Mini does not work with 4.18V from LiPo -- the Nano did even work fine with 3.9V.

For the motor now 4 LiPos give 16V, and a new connector in the middle gives 8V for Raw input of Arduino Pro Mini.

After getting very bumpy run with the wheel already used for the 15V motor I decided to enlarge the diameter of the wheel hole that worked so well before with 12V motor. Result is the same bumpy runs.

Next I tried to add weight to counter the bumps (the disconnected battery pack on the middle of the wooden arm), without success. The slowflyer wheels cannot be used with this motor.

Wheel bumping starts at 13s and is maximal at 17s.

Now have to wait for new wheels for the 12V motor and find alternate wheels for the 15V motor.


Today got new wheels with 64mm diameter (compared to 48mm before). This is the middle diameter wheel of these three wheels -- 85mm will be sent when available again ;-)

I thought the wheel hole was a perfect fit for 12V motor axis -- it was not ;-) LiPos were not fully loaded, only 11.23V compared to >12V.

Here is just the high speed accident with 5.7m/s or 20.52km/h at quarter speed on -- impressive:

youtube video

Youtube text copied in for completeness:

2nd High speed accident with new 64mm diameter wheel. Thought that wheel was a perfect fit for motor axis Wheel got lost at 0:23, wheel hole was too wide for the speed/force. frame by frame analysis with new wheel diameter: Just before accident 6 rounds in 1.4s gives 4.3rps or 257.1rpm. Wheel moves 1.33m per round giving 5.7m/s or 20.52km/h.



Its good to see that like NASA and Spacex, you video your successes and failures, to learn from them. A mean looking line follower, do they have a 1/4mile dragstip event at RobotChallenge?

Tom.... :)

A mean looking line follower, do they have a 1/4mile dragstip event at RobotChallenge?

Nice idea!

My older son was on field robot event two weeks ago with his university team and (30kg) robot Beteigeuze:

After the official contest they did a fun contest of "tractorpulling" with their robots ;-)

Probably I would need to go with gearing as proposed (and calculated) by Mark. I did fix the wheel with superglue, this is complete run (without accident/problems):

"Only" 11 rounds with 1.33m per round gives 5.63m/s or 20.26km/h, far less than with 48mm diameter wheel, perhaps because the 64mm wheel adds 2g of weight.

Perhaps less diameter wheels can give better results for the 12v motor -- with 6.9m/s maximal speed seen sofar the motor did show 2064rpm at the wheel although it could do 17500rpm.


Today I tried wheel with smaller diameter (20mm), a "Lego" wheel with the well known cross for Lego "cross axis": |500x375

In order to use that wheel with 12V motor axis I had to completely fill the cross with superglue. After more than a day I did drill a small hole with small screwdriver and press motor axis in then. To my surprise there was nearly no imbalance.

This is youtbube video with 12V motor and the new wheel:

Video shows the exact same maximum speed as previously achieved with 15V motor and 64mm diameter wheel. Looking at formula 1 wide base wheels I will probably go with the current wide base 20mm wheel for my Arduino controlled 2 wheel + ½ table tennis ball based (line following) robot (see here with previously planned parts)

[u]Here text from youtoube video for completeness:[/u] This time with smaller diameter wheel (20mm) and 12V motor.

3 LiPos, not fully loaded (11.60V instead of 12.6V).

Same speed as maximal speed with 15V motor and 64mm wheels.

15 round in 2.80 seconds is 5.35rps or 321rpm. Wheel moves 1.33m per round, gives 7.125m/s or 25.65km/h.


The 12V motor has 17500 rpm at maximal degree of efficiency as mentioned earlier in this thread.

Until this last run all tests did show less than 3000 rpm at motor axis.

Now I did the math for the last run. 1.33m per round of the wooden stick is 21.1 rotations of 20mm diameter wheel. With 5.35 rounds per second this gives 113.2 rps or 6794 rpm at motor axis. Still not 17500, but much higher than for all previous MTS runs.


You do know that torque depends on motor volume if you eschew gearing? Little motors without gears will never have enough torque for a robot with all but the tiniest wheels.

Thanks, the tiny wheels did it.

I did build real "robot" now with two motors and two wheels, and it showed 9.89m/s or 35.6km/h !! |500x375

The whole "robot" two wheels carry the complete weight of 73g, the nail just forces circular movement. |500x375

Copying in youtube video text with the details:

It turned out that in previous run only one motor did run. The 2nd was dead due to too hot soldering.

Here both motors (bought a new one) did run, and achieved nearly 10m/s or 36km/h !

With new motor, cabling was a problem. This is first run where centrifugal force did not cut any cables.

Two motors are much louder than one ;-)

The whole "robot" two wheels carry the complete weight of 73g, the nail just forces circular movement.

Now the analysis (20.27s - 21.63s):

9.75 rounds in 1.36s gives 7.17rps or 430rpm of wooden stick.

Radius of 22cm of wheels wrt nail gives 1.38m per round, ppeed now is 9.89m/s or 35.61km/h (!).

Wheel has diameter of 2cm, so with 7.17 rounds of 1.38m this is 157.4rps or 9447rpm at motor shaft (pretty close to data sheet max of 17500 under load).

Last comment on Arduino microcontroller, program did increase PMW from 20 to 255 in 12 seconds, keeps at 255 for 10 seconds and then goes back to 20 in 10 seconds before stopping and LED blinking. In order to use this simple program that has been used in so many testruns now, I did duplicate the PWM signal and both motors are controlled by the same L293D motor output. The second L293D motor driver output is not cabled/used yet.


Mark was right, torque of 0.00071Nm was good enough for (to me) impressive 9.89m/s or 35.6km/h in motor test station, but may not be enough for autonomous robot (I just ordered 2 motors with 0.0055Nm, a factor of 7.7).

Yesterday I did quite some work on real autonomous robot, these are the tops of two linked tweet sequences:

This is new robot jacked for initial wiring testing with bitlash (allows interactive as well as scripted programming w/o Arduino IDE):

I did first full speed test run last night:

Compared to Asuro robot 8 years ago (0.43m/s, 1.2m/s, 1.8m/s) it was quick (3.1m/s or 11.16km/h).
But previous runs (same motors and wheels) in Motor Test Station showed 9.89m/s.

Copying in youtube description with the details:

This is first autonomous full speed run of new Arduino robot (3.1m/s or 11.16km/h).

Weight of robot is 96g, and the three LiPos were not fully loaded, but showed 11.41V, the motor is 12V motor.

Although pin 13 LED starts to blink when reaching leg of grand piano (indicating that motor has stopped) the kitchen door did a hard stop on the robot. analysis (7.95s-8.55s) shows that robot did pass 6 floor tiles with edge length 31cm. The speed in that time frame was therefore 1.86/0.6=3.1m/s or 11.16km/h.

This is far less than the 9.89m/s seen in motor test station (robot there had 73g weight with same motors and wheels, but no ground friction of half table tennis ball). For details see:


If I was making that contraption, I'd have the motor stationary and the disk turning.

I'd mount the disk ( or use an old LP records ) above the wheel, so the wheel turns it from underneath. And then measure how fast the disk is spinning.

If I was making that contraption, I'd have the motor stationary and the disk turning.

I cannot agree here, it is always better to measure "the real thing" if possible.

Measuring the real thing sometimes gives surprises (like the 9.89m/s to 3.10m/s drop from MTS to autonomous robot with same motors/wheels).

I was quite active this evening, after exploding a L293D by accidently reverse powering, then an MTS Arduino robot accident at >30km/h where the safety glass proved to be a good idea, and finally a new record run with new 14.8V motor (data sheet in this posting, translation of German data sheet terms in this posting) -- 12.3m/s or 44.28km/h(!).

Record run youtube video details:

15.26V at start, no accident this time, new speed record. frame-by-frame analysis: 4 rounds in 0.4s (24.48-24.88) gives 10.0rps or 600.0rpm. A round with this new wooden stick is 1.23m. Speed is therefore 12.30m/s or 44.28km/h. Diameter of wheel is 2cm,. With 12.30m/s this is 195.7rps or 11745.6rpm at motor shaft. |500x345

"robot" weight is 100g: |500x375


Hi, analysis (7.95s-8.55s) shows that robot did pass 6 floor tiles with edge length 31cm. The speed in that time frame was therefore 1.86/0.6=3.1m/s or 11.16km/h.

This is far less than the 9.89m/s seen in motor test station

When you are using the test jig, the mass that the motor is driving "forward" is less than the mass of the controller and battery because of its position near the pivot point. In your robot the motor is now accelerating the full mass. You are trying to get load /speed figures from circular motion and use them in linear motion. You can use your setup to compare motor characteristics.

Tom.... :) PS If I had realized way back in this thread what you wanted to do, I'd have advised putting the controller and batteries as close to the motor as possible, so the motor sees the full load of the mass, but figures you obtain would be inaccurate due to circular and linear motion.

Thank you Tom for your explanations. They totally make sense and explain what I experienced.

The next steps will be to do test runs with arduino and L293D board as well as LiPos sitting directly on top of the motors far off the pivot point.

But before doing those tests I did quite some stuff with followup questions.

The first thing was to get rid of "store youtube video, single step through it via and count rounds and hundreths of seconds that takes" for speed determination. I did that with this Infrared Speed Sensor Module:

First I had some problems with too many interrupts generated, but I found (a) solution to that myself in "Accuracy of MOCH22A based Infrared Speed Sensor Module" thread:

I used an Arduino Uno screwed on MTS and connected to my Laptop for doing the measurements: |500x375

First I did let interrupt service routine (ISR) directly write millis() and count to Serial because I tested such an operation taking roughly a hundreth second and my measurements are expected to be in low 2-digit number range of interrupts per second. Later, in order to avoid timing problems, I just did "A[cnt++]=millis()" in ISR and called a service function printing out the whole array after test completed (I did all using bitlash command shell).

The first run I did was successful but did not reach >40km/h speed I expected: |500x286

Checking everything I found the easy explanation, I did only use 3 LiPos giving >12V for the 15V motor:

The second run was successful as well and did show 42.17km/h, with a minimum of 105ms per 1.23m round for the wheels: |500x253

The 0 measurements are just some double interrupts at same millisecond, and the one delta measurement of 212ms at 107th interrupt was just a missing interrupt while brazen piece moved through the sensor.

All measurements I did were done with the 20mm 1-piece Lego wheels I used until now and the 15V motor. I did find some bigger wheels in the big Lego box from my kids (they are too old to play with it anymore). I was interested in 24mm and 30 mm.

The first run with 24mm diameter wheel+rubber was stopped hard by infrared speed sensor after few seconds:

I tried to fix the mechanical problem of getting brassed piece into middle of sensor: |500x375

For me the next video is a "must see" and it proves that my attempts to fix the physical issue were not good enough -- complete destruction, speed sensor, lost wheel, cables, ..., not stopping before the end of the video:

For the runs with 24mm diameter I had to use new motor controller board because the previous one could not deal well with the vibrations in new setup. This time I did connect both motor output to the two motors. The layout allows to use Arduino Nano as well as Arduino Pro Mini interchangably on the (not drawn) IC socket: |500x381

Here you can the the new and the old board I used: |500x375

In the next runs I saw speeds of much less than 40km/h and charts with different form, especially the missing long minimum at the middle: |500x264

Finally I found the issue, it was the unbalance of the rubber(!) which I found while diagnosing with bitlash and connected with laptop. This photo was taken with PWM=180 and clearly shows that the "flying" rubber is the issue: |500x375

I did fix that as I fix most things (like connecting infrared speed sensor at the needed height of 9V block battery) -- with superglue ;-)

The next run did loose a wheel again, fixed that with some superglue on motor shaft as I did previously with the other wheel:

I did several runs then, all showing same behavior, this is the last one: |500x237

So here are my questions: 1) I have no explanation on the few peaks >800ms delta. What could be a reason that sensor does not trigger for several rounds? [In this posting I have shown that the sensor can easily generate 93.4 interrupts per second, and here we are talking on rougly 10 interrupts per second]

2) What can be an explanation on the 24mm diameter charts not showing the long minimum the first two 20mm diameter charts above do show? [Its the same motor and LiPos, just bigger wheels]


Hi, Hermann, mate. If I produced graphs like that at uni I would have been shot. Please name your axes and units, what are you graphs of?

Tom.... :) Sorry but they don't mean anything to me.