Motor Test Station (MTS)

I am building a Motor Test Station (MTS) which allows to test different motors and decide which one to use for Arduino based robot project.

In thread Is ther an Arduino command interpreter running on Arduino already? I Iasked for a command interpreter on Arduinbo and described what I had done wrt MTS sofar.

I learned about Bitlash and that is perfect to test the motor setup (Arduino, L293D controller, motor, power).

Quite some time I tried to get ESP8266-01 in addition or as replacement onto MTS as well allowing wireless interactive control of speed and direction. I had to give up because of motor voltage spikes resetting the Wifi chip, see thread HOW TO SECURE ESP8266-01 FROM MOTOR VOLTAGE SPIKES? -- although it was really nice to wirelessly telnet through ESP8266-01 into Bitlash running on Arduino(!).

Today I completed first real Arduino controlled run (youtube link):

The fully mounted autonomous control consists of:

  • 12V motor is driven by L293D motor cotroller
  • In fact 12.42V by 3 fully loaded 3.7V LiPos
  • Arduino Nano controls L293D
  • 5V Arduino powered by 3.7V LiPo fully loaded with 4.16V

Program loops PWM from 80 to 160 in single steps with a delay of 50ms, then it waits for 10 seconds at 160 and then stops the motor (while entering blink LED mode).

The whole wooden arm with mounted stuff does weigh 75g.

You can hear at end of video that the wheel is bumping and therefore has no 100% ground contact.

Although 75g weight single frame analysis by shows

  • 2.5 rps or 150rpm
  • with 1.33m per round gives 3.325m/s or 11.97km/h

Because of high speed and no remote access to MTS I did add safety glass to MTS for my security in case things break and fly around ...


Making use of Arduino Nano ICSP for 5V and GND allows to get rid of a mini breadboard (12g) resulting in 63g.

Same program, no other changes, higher speed.
Again measured with single frame analysis on

12.75 rounds in 4.60s gives 2.77 rps or 166.3 rpm, with 1.33m per round gives 3.68m/s or 13.27km/h.


I think you are testing the wheel as much as the motor! Do you measure the motor current?

I think you are testing the wheel as much as the motor!

:slight_smile: I decided on the (slowflyer) wheels when I was targeting the whole Arduino robot to be less than 30g in weight, including two motors. If going with the 3 times more torque one (18g per motor vs. 8g vs. 3g) perhaps different wheels would be better ... that is what I want to use MTS for, test first and build "asurano" then (Arduino Nano robot similar to Asuro).

Do you measure the motor current?

Not yet. Do you mean with analogRead() and store until motor stopped?
(I have given up on Wifi connect)


Here is the technical data for the current 12V motor I test, text is German but you should get the information:

I already have a 15V motor that has 3 times the torque as the 12V one:

Even the micromotor I tesed 1st was able for 200km/h idle speed -- but it did not start in MTS :slight_smile:


Before increasing PWM above 160 I eliminated last remaining mini breadboard (-12g) and replaced it equivalently by soldering solution (+1g) resulting in 52g total weight.

Wow, new youtube video analysis with really surprised me:

12 rounds in 3.16s is 3.80rps or 227rpm, with 1.33m per round for the wheel this is 5.05m/s or 18.18km/h(!).

And this is not my fastest motor, and runs at only PWM=160, there is still room to PWM=255 ...

So I have reached my target of 5m/s with ease and will now try to find out how much faster is possible. The real robot will have 2 motors which I would suspect will increase max speed also.

[5m/s because speed of 3.1m/s on average(!) seems to be state of the art currently, initial run of this video ]

(animated gif created with gifsicle at original speed)


I would just calculate the speed from the motor speed and the wheel radius... Surely that's easier?

I want to measure the real sped, not some numbers from motor spec.

I completed the runs for this motor with PWM=200 and PWM=255 max.

up to 200:
10 rounds in 2.40s is 4.17rps or 250rpm, wheel round 1.33m gives 5.54m/s or 19.95km/h.

up to 255:
12 rounds in 2.76s is 4.35rps or 260.9rpm, wheel round 1.33m gives 5.78m/s or 20.82km/h.

The 3 LiPos providing power to motor had 12.10V.

Not the 200km/h idle speed, but the motor had to move 52g and >20km/h is good.


Would it improve things if you moved the pcb etc on the arm back towards to pivot point and beyond to give you some balance in the spinning axis.
I'm not up on the dim years of my physics 101 , but concentrating the load around the pivot point should reduce the angular momentum as well.

Unless you need the load to help with traction.

Tom.... :slight_smile:

For speed measurement, put an LED on the arm as far out as possible, pointing down.
A photo-transistor in the test bed can detect the passing LED and using another arduino, calculate RPM and hence motor shaft speed and arm tip speed.

Tom..... :slight_smile:

The LED tip is good, I did plan to build a light barrier for rpm counting myself.
Unfortunately I have killed one of my photo resistors and cannot find the other ...

On load at pivot point -- I did what you proposed:

I depened the 3 LiPos for the 12V and put everything besides the motor to pivot point.
It was really good that I took a video!

To my surprise the load went to the outside at very high speed, and continued to work as programmed!
See youtube video with quarter speed:

I will try again with better fixation of load tomorrow, its late here (in Germany).

Thanks to my slow android video camera this picture shows exactly the moving out of load from pivot point (watch the LED)!

Slighty faster than before (before loosing load), 268.66rpm compared to 260.9rpm, or 21.44km/h.


Thank you so much Tom -- pivot point mass concentration gave 20% max speed boost !

Added a small wooden piece with superglue onto the moving wooden arm in order to prevent Arduino and LiPos moving away from pivot point.

I killed 2 Arduino Nanos by loose cables and 12V getting in contact with what it should not -- good that I had 3 Nanos (OK, have several Pro Minis that can be used as well). You can see small on/off switch below the Arduino that allows to live safely without removing cables for powering on/off.

The pivot point Tip from Tom gave another 4km/h max. speed! (youtube video)

11 rounds in 2.12s gives 5.19rps or 311.3rpm.
And wheel with 1.33m per round runs 6.90m/s or 24.84km/h!


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:

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.04817500 = 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.04817500 = 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:

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):

Non-flat surface requirement is given by RobotChallenge Line Follower Enhanced "Seesaw" :wink:


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

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 :wink:

I thought the wheel hole was a perfect fit for 12V motor axis -- it was not :wink:
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.... :slight_smile: