Gas station without pumps

2018 March 13

Cabrillo College Robotics

Filed under: Robotics — gasstationwithoutpumps @ 13:56
Tags: , ,

I just donated to the Cabrillo College Robotics Club, to help them send students to the NASA Swarmathon this year:

I am not affiliated with Cabrillo College in any way (except as a resident of the county which they serve), but I’ve been impressed with their recent attempts to better serve the community, with an extensive Extension program of non-credit courses and a new Makerspace. So I look for small ways to support Cabrillo College.

The Cabrillo College Robotics Club looks like a good opportunity.They are trying to raise $7000 in a month, which may be difficult, given the resources available to community-college students.  The goal is to send the team to the NASA Swarmathon in April.  They won the 2016 NASA Swarmathon Virtual Challenge, and they are hoping to win the 2018 in-person competition this year, but first they need the funds to go there.

2017 April 4

Second Santa Cruz Mini Maker Faire

Filed under: freshman design seminar,Robotics — gasstationwithoutpumps @ 10:37
Tags: ,

The Santa Cruz Mini Maker Faire ( is 2017 April 29, 10 a.m.–5 p.m. at Gateway School (126 Eucalyptus Ave in Santa Cruz, near Lighthouse Field).  I have been accepted as an exhibitor again, and I’ll have with me some of the freshmen from my freshman design seminar course.  This year was the most successful run of that course, with all three groups being able to demonstrate their projects.

Two of the groups collaborated to do an EMG-controlled arm.  One group did the electromyograph amplifier, the other built a MeArm from a kit and programmed a Teensy board to read the EMG output and use it to control the arm.  On their public demo during exam week, they had two working channels, to control the shoulder and gripper of the MeArm.  With a little practice, the operator was able to pick up a light object with the arm.  These groups will be joining me at the Maker Faire.

The third group build their own gripper out of medium-density fiberboard, using the scroll saw and drill press in the fab lab.  They were able to demonstrate the gripper, but did not have time to build the wrist that they had also planned.  I don’t know whether this group will be joining me at Maker Faire or not.

I’ll have a number of demos from the applied electronics course also—I still need to figure out what I’ll display and how I’ll lay things out on the table.

2016 August 12

Playing with Nao humanoid robot

Filed under: Robotics — gasstationwithoutpumps @ 11:09
Tags: , , , ,

Yesterday I had an opportunity to play with a Nao robot in a three-hour workshop at UCSC, run by Dr. Denise Szecsei of the University of Iowa. I found out about the workshops through an article in Santa Cruz Tech Beat, an on-line publication about local tech events. (Santa Cruz Tech Beat is worth reading, with a high signal-to-noise ratio and only about 30 articles a month.)

The basic idea that Denise was pushing is the use of the Nao robots in introductory programming courses—she created a course at the University of Iowa called Dancing Robots that supposedly been successful in recruiting women into programming courses there (she did not give us detailed information, as the focus of the workshop was on getting us to experience programming the robots, not on academic justification). She was also looking for collaborators on either educational projects or art projects, so was glad to have some grad students from the Digital Arts and New Media project at the workshop.

You can see an example of the results of the dancing robots courses on YouTube:

I’ve always thought that the Nao robots were cute, but at $9000 from the US distributor RobotsLab (and $890/year for warranty), they are too expensive for me to buy as a toy.  So I welcomed the chance to play with one for 3 hours.

What the workshop was intended to be was a brief tutorial on Choreographe, the drag-and-drop scripting environment for the robots. That environment looks ok to use, with simple message passing along wires to trigger pre-written boxes for actions like “say” or “timeline” animation.  Most of the dancing work is done by using the timeline like stop-frame animation (at 25 “frames” per second), with the software interpolating between target poses.  The target poses are created by physically manipulating the robot, making the whole process accessible to 6th graders (though the fragility and cost of the robots makes me think that you would need careful supervision even for high-school and college students).

I was not interested in the dance aspects of the robots, so I worked with one of the workshop staff (Denise’s son) on diving into the Python SDK (there are also C++, Java, and JavaScript interfaces, but the Python one is best integrated with Choreographe and the best for rapid prototyping, which is all I had time for). I spent a little time the night before the workshop looking at the programming interface (which I did not really understand from the quick glances at the documentation) and at the capabilities of the robot in terms of sensors and actuators.

What I wanted to do was to program one action—shifting the weight of the robot onto one leg, then picking up the other leg, so that the robot stood on one foot.  I planned to do the weight shifting by coordinated motion of the hip roll and ankle roll actuators.  Initially, I had thought to do it on just one leg, but I ended up doing it on both legs, since the starting position had the feet approximately the hip distance apart, so rotating both hip-roll actuators one way and both ankle-roll actuators the other way results in a parallelogram linkage, with the hips and torso staying level while moving sideways.

To detect the weight shift, I used the force resistors in the foot.  There are several ways to access them through getData() calls: the processed “leftFootTotalWeight” and “Device/SubDeviceList/LFoot/FSR/TotalWeight/Sensor/Value”  or the raw sensor values “Device/SubDeviceList/LFoot/FSR/FrontLeft/Sensor/Value”, … .  I ended up using “leftFootTotalWeight” or “rightFootTotalWeight”.  The basic idea was to start a thread running moving the hips far to the left, and set up an interrupt routine triggered by the event footContactChanged. When that event fired, I checked the weight on the right foot, and stopped the motion if the weight was low enough (I think I used 300g, since the unloaded force resistor with the foot in the air was reporting something like 200g).

I did not have time to add a further refinement to the weight shift, to adjust the weight to be centered over the supporting foot, using the center of pressure sensor. I had the robot speak the values of that sensor, but did not use it to tweak the hip and ankle angles of the supporting leg.

Once the weight had been shifted on the left leg, I had Nao pick up the right leg by adjusting the hip pitch, knee pitch, and ankle pitch of that leg.  The posing software in Choreographe made it fairly easy to figure out what the correct signs were for the angles and for picking target values. The robot lurched a little bit as the right foot was picked up, probably because the foot had not been fully unweighted, but possibly because of the foot not being lifted quite vertically.

If I’d had more time, I would have done the centering of the weight over the supporting leg before lifting the other foot. I would also have moved the motion of the supporting foot into a separate script, so that different gestures could be made from the one-legged stance. In doing that, I’d probably want to have any one-legged boxes run a balancing thread to keep the weight centered over the supporting foot, so that sticking out an arm or a leg doesn’t topple the robot. Either that, or have a one-legged balance box that is runs in parallel with any gesture actions.  It would probably take me a day or two of programming to create one-legged action boxes robust enough for someone else to use them, and probably a few weeks of use testing before they would be worth adding to Choreographe.

Working with the robots definitely needs two people, as one person needs to spot the robot any time it is moving (remember, fragile and expensive!).

It was very useful working with someone familiar with part of the programming interface, so that I did not have to waste much time figuring out how to create a new box or test it out. He was the one who suggested outputting a string to pass into a “say” box for reporting the foot sensor values for debugging, for example. I started out just reading the sensors and reporting the weight, then tried figuring out how to interrupt an ongoing motion by raising one arm very slowly, to be interrupted by any of the touch sensors. Once I had the basics of starting a parallel thread and stopping it on an interrupt, I programmed the weight shift. Once that was working I added lifting and lowering the non-supporting leg.

I fully expected that the spotter would be called on to catch the robot as it fell during my development of the program, but despite a little worrisome lurching as the unweighted foot was lifted, the robot never toppled.

I doubt that the Python SDK is fast enough to do a closed-loop feedback system for balance, but it was certainly good enough for a slow weight shift onto a single leg, and the feet are wide enough that no dynamic balancing was needed. It would be a fun programming environment for a Python course, as long as the students were into humanoid robotics.

The Choreographe environment provides a reasonable interface for fairly simple sequencing and synchronization, but I suspect one hits its limits pretty soon. Being able to create new blocks rapidly, by copying existing blocks and editing the Python in them, makes the system a lot more powerful, though I got the impression that the “Dancing Robots” courses rarely get that far.

The Nao robots were, as I expected, a lot of fun, but I couldn’t really recommend them for a beginning programming class. At $9000 for each pair of students, they are way too expensive and way too fragile.  For beginning programmers, you really want things that students don’t have to worry about breaking if they make a little mistake. One can get fun robot toys for students to program for $100 each, since wheeled robots are much cheaper and easier to make than humanoid ones. Not only is the financial risk lower with cheap robots, but they can be made much more robust (though educational robots needn’t be made to sturdiness required of combat bots).

To break into the consumer market or school market, I think that Nao would have to come down in price by about a factor of 10, which would be difficult to manage, given what the robots contain.  There are 24 actuators (2 head, 6 in each arm, 6 in each leg), plus cameras, ultrasonic range finder, touch sensors, foot pressure sensors (4 per foot), gyroscope, accelerometer, LEDs, … . The motors and 12-bit joint angle sensors (magnetic rotary encoders) alone probably cost close to $1000.


2012 August 1

Robot motors and gears

Filed under: Robotics — gasstationwithoutpumps @ 21:41
Tags: , , , , , ,

In yesterday’s post Robot wheels, I talked about the wheels I’d found that might be useful for the panning mechanism of the robotics club’s automated foam-dart shooter, and promised to type up my notes on motors and gears today.

I already started talking about the two 12v motors we have on hand:

Mitsumi M38E-3SC
I’ve been unable to find any specifications, other than the 2400RPM and 12V on the label. I did find bunch of specs for other motors on Mitsumi’s web site, but this motor has apparently been discontinued.
The no-load current at 12.9V is about 21.4 mA.
We measured the stalling torque by taping a string to ta 5cm diameter wheel and measuring the force on the string needed to stall the motor.  We measured about 0.7N, so the stalling torque was about 0.0175±0.003 Nm (about 0.15 in-lb, 2.5 oz-in, or 180 g cm using an online calculator for the unit conversion). The stall current is about 0.65A.
Johnson Pump Motor 500
A bilge-pump motor with a 1/8″ (3.2mm) shaft for which even the no-load RPM is not reported (intended as a drop-in replacement for a 500GPH bilge pump).
I measured the no-load speed last night with a Fairchild QRE1113reflectance sensor—the flat on the shaft of the motor changes the reflectance enough  to get a good pulse holding  the rotating shaft about 1mm from the sensor. I used a 5v power source (4 NiMH AA cells) and a 180Ω series resistor for the infrared emitter (to get about 21 mA of current).  I used a 2.7kΩ resistor in series with the phototransistor, to get about a 1.3v swing with bright paper very close to the sensor, and about 0.01v with the paper a centimeter away.

The reflectance sensor is a bit of a pain to work with, because the leads are not on the standard 0.1″ spacing and are made out of much thinner metal than usual for through-hole parts. I managed to shoehorn it into the breadboard without breaking any leads, but if I want students to use this part, I should have them solder it to a breakout board.

The pin numbering does not follow that of DIP packages, running counter-clockwise from the bottom left corner, rather than the top left (or, equivalently bottom right).

With the motor shaft about 1mm away from the sensor (which required steady hands) there was a clear pulse on the oscilloscope, and the pulse was strong enough that my Fluke 8060A multimeter could measure the frequency as 126.5±0.1Hz, which translates to 7590 RPM, for the motor running at 12.94v and 0.5A with no load.

The reflectometer is pretty easy to use (but I’d want to make a small breakout board for it, since it is a pain to work with on a breadboard). It might be worthwhile using one to detect the spokes of a wheel to get some feedback from the wheel.  (My son points out that he’d rather have an absolute angle output sensor at the pivot for the pan head, since wheel slippage makes wheel-based feedback potentially misleading.)

I tried measuring the stall torque by attaching a lever arm to the motor with an 3.2mm collet adapter.

Bilge pump motor with plastic arm having 5mm holes at 5cm intervals. (Actually the holes are 13/64″, as I didn’t have a 5mm drill bit.)

The collet does not hold the plastic very firmly—holding the collet still, the arm slips at about 0.3 Nm of torque (2N at 15cm).  This doesn’t limit the measurement though, because the motor stalls with about 1.6N of force on a 5cm lever, so about 0.08 Nm of torque (820 g-cm, 11 oz-in, 0.7 in-lb), when running at 12.94V and 5.5A.

Of course, what I really want to know about a motor is neither the no-load speed nor the stalling torque, but the rated speed and torque, where the motor is running with maximum efficiency. Manufacturers provide such data to their OEM customers, but the retailers of motors often don’t get the information or don’t pass it on to their customers. I found that Lynxmotion does, which is a strong argument for buying their motors.

This is the speed vs. torque plot (also the input current, output power, and efficiency curves) for Lynxmotion’s PGHM-1 motor, taken from their data sheet.

Note that the speed goes down almost linearly with the torque load, which I understand is pretty typical of these small brushed motors.  So we can model the speed  \omega as a function of the torque \tau with \omega(\tau) = \omega_0 (1- \tau/\tau_m), with just two parameters: the no-load speed \omega_0 and the stall torque \tau_m.  It is this simplification that allows manufacturers to get away with reporting just two numbers.  Note that the output power curve can be computed from the product of torque (in N m, not kgf cm) and angular velocity (in radians/sec, not RPM). A straight line for the speed-torque curve would give a parabola for the power curve:  P_{out}( \tau ) = \tau\omega_0 (1 - \tau / \tau_m ) , with the maximum power output at half the no-load speed and half the stalling torque.

Note also that the current (for a fixed drive voltage) goes up roughly linearly with the load, so we can get a formula for the power input also: P_{in}(\tau)= V A_m \tau /\tau_m .  Dividing the output power by the input power gives us the efficiency \eta(\tau) = \frac{\omega_0 (\tau_m- \tau)}{V A_m} , which would be maximized at no load.  This doesn’t quite work, because the input power doesn’t go to zero with no load.  Adding a small offset for the no-load current gives us an input power of P_{in}(\tau)= V ((A_m-A_0) \tau/\tau_m +A_0) and an efficiency of  \eta(\tau) = \frac{\omega_0 \tau (\tau_m- \tau)}{V (A_m\tau -A_0 \tau + A_0 \tau_m)}.  This would have a maximum at \tau = \tau_m\frac{\sqrt{A_0 A_m} - A_0}{A_m-A_0} = \frac{ \tau_m}{1+\sqrt{A_m/A_0}} .

So we can get a decent estimate of the ideal load for the motor using the ratio of the stall current to the no-load current A_m/A_0.  For the PGMH-1 motor the parameters are 294 RPM no load, 157 mA no-load current, max torque ≈8.6 kg cm, stall current ≈3.3A, which would suggest a rated load of  0.179 \tau_m or 1.54 kg cm.  The actual rated load, where the efficiency peaks, is 1.12 kg cm at 252 RPM, so our crude estimate using just straight line approximations is off by about 40%.  Still, that may be good enough for figuring out whether a motor for which we don’t have full specs is usable.

For the bilge pump motor, the optimum efficiency is probably at about 0.23 \tau_m, or about 18.5 N mm (0.16 in lb, 2.6 oz in, 0.19 kgf cm) at a speed of about 1760 RPM.  It is estimated to be about 19% more powerful than the PGHM-1 motor at its rated load.  Given the uncertainty in the approximation, they are probably quite comparable in power. Is either powerful enough? (I’m still hoping my son will estimate the moment of inertia and power needed for the panning mechanism.)

They students in the robotics club wanted a panning speed of about 180°/sec with a wheel at the end of a 60cm arm moving about 190 cm/sec (75 in/sec). With the PGHM-1 at 252 RPM, the wheel size would need to be about 14.4 cm (using Lynxmotion’s wheel-speed calculator), but none of the wheels in yesterday’s post are that large.  With the bilge pump motor, the wheel size would need to be 0.8″, which is too small (particular if irregular terrain is considered).  The bilge pump motor could be geared down 15:4 to get about 470 RPM, which would be suitable for a 3″ wheel.  So now we need to look at what motors and gears are available.


There are a lot of surplus motors on the market for low prices, but they often come with no specs at all (like the Mitsumi motors I have).  I’d like to have some assurance that whatever motor we buy has enough power for the job, but is small enough to be run by the HexMotor board.  (In a pinch, we could use an H-bridge on the HexMotor board to drive a pair of relays to get unmodulated forward-backward control of more powerful motors.)

Johnson Bilge Pump Motor

Our measurements of the Motor 500 indicate a stall torque of 0.08 Nm  (820 g-cm, 11 oz-in, 0.7 in-lb) at 12.9V and 5.5A, a no-load RPM of 7590 RPM at 0.5A, and a probable rating of 18.5 N mm (0.16 in lb, 2.6 oz in, 0.19 kgf cm) at a speed of about 1760 RPM.  The motor weighs 7.4 oz and costs about $21 (including shipping).  For about $6 more you can buy the bilge pump and throw the pump away, keeping just the motor.

Because the bilge pumps only run in one direction, it is possible that the motor is not designed symmetrically. We should measure speed and torque in both directions, to see if there is a difference.

There are other bilge pump motors in the same series (750, 1000, 1250) all for under $30.  The numbers correspond to the gallons per hour of the pumps they are intended for, so should be linearly related to the power of the pumps.  That is, I would expect the Motor 100 to have twice the power and require twice the current of the  Motor 500.  I don’t know whether the impellers are bigger for the bigger pumps (which would require more torque), they just spin faster, or they have both more torque and more speed.  Since the stall current is already near the limit of the H-bridges for the 500, the larger motors would probably have to be used with relays.


I like the Lynxmotion gear motors, because they provide such nice data sheets on the motors. Most of their motors have 6mm shaft with a long flat on them, and they say that the motors are designed to be balanced to have equal performance in both directions. (A couple of the motors have 4mm shafts.)

They have 5 planetary gear motors with max speeds from 14 to 300 RPM.  We’ve already looked at the curves for the PGHM-1, which is the fastest of those motors, costs $37, and weighs 8.23 oz.

They also have 4 12v spur gear motors with max speeds from 120 to 253 RPM.  The fastest of these is the GHM-12 at $30, which has a rated load of  1.04 kgf cm at 224 RPM (about 17% lower than the PGHM-1) and weighs 7.26 oz.

The Lynxmotion motors are particularly nice if you need low speeds.  For example, if the motor were mounted directly driving the pan head, 180°/sec is 30 RPM, and the PGHM-04 at $32 with an optimum efficiency at 46.8 RPM and 9.28 kgf-cm looks promising (that’s more powerful than the Johnson bilge pump motor, I think).  It only weighs 3.59 oz. At maximum power it is still pretty efficient: 38.7 RPM, 12.73  kgf-cm, 1.83  AMP, 5.18 watts output,  24.11% efficiency.

Gear motors have to be stopped before reversing, but that shouldn’t be a problem in this application, I think, except, perhaps for fine positioning,

Batteryspace sells 3 12v gear motors, each for $12.  They all use the same motor, but with different gear heads.  Unfortunately, the specs for the motors are inconsistent, and I

  • 50 RPM no load with 0.12 oz-in (0.008 kgf cm) stall torque.
  • 200 RPM no load with 3.3 in-lb (3.8 kgf cm) stall torque.
  • 600 RPM no load with 0.7 in-lb (0.8 kgf cm) stall torque.

With the same motor and different gear heads, the torque times speed should be roughly constant, but the 50 RPM specs are way out of line with the other two.  Even the 600 RPM and 200 RPM specs differ by 60% in power.  I don’t know which (if any) of these specs to believe, though it might be worth getting one of the motors ans testing it, since the price is lower than the other 12V gear motors I’ve looked at.

Pololu and Solarbotics

Pololu and Solarbotics each have some cute gear motors, but they are 3v motors, not 12v motors and so not desired for this project.  They are probably also too low power.

American Science and Surplus

American Science and Surplus has two motors that we first noticed in their print catalog:

  • a 2500 RPM motor 1.3A no load, stalls at approx 9.5A.  No torque information given, but the power consumption suggests about twice the power of the Johnson Motor 500. “Output is through 1/8″ sq x 5/8″ deep ports at the front and back of the housing (we’ll include (2) short, square shafts to get you started).”  The motor is a bit bigger than the others we’ve looked at, being 5″ long.  It only costs $12.50 (plus shipping).  The square shaft might be difficult to connect things to—all the pinions I’ve seen so far expect round shafts with a flat.
  • a 190RPM motor

    • draw 1.5A no load, and stall at approx 25A.
    • Threaded shaft is at a right angle and is 4-1/8″ x 7/16″. Shaft thread is non-standard, so treat it as a smooth shaft and mount pulley or gear with a setscrew.
    • Measures 5-5/8″ x 2-1/2″ x 2-1/2″ overall, not counting the shaft, and has power terminals opposite the gearbox with (2) 1/4″ mounting holes opposite the shaft.

    That shaft is pretty big and we might have a hard time finding something that would fit it.


If they decide to use the bilge pump motor, it will need to be geared down a lot (more than 3:1).  The simplest way to do this is with a pair of gears.  A pinion gear is mounted on the motor shaft with a set screw, and a larger spur gear is attached to the wheel.  Note: this seems to be the terminology used in the online catalogs, though so far as I can tell “pinion” properly refers to function of a gear as a driving gear and “spur” refers to the teeth being parallel to the axis of the shaft (and not slanted, as would be used with a worm gear drive).

There are some real cheap gears on Amazon (24 gears for $8, 6 each of 40, 30, 20, and 12 teeth), but these are plastic gears to press onto a 2mm shaft, and would be difficult to use on the larger shafts of the motors we are looking at.  They probably also couldn’t handle the torques.  If you were doing something with the sort of 1.5–3V motors that Radio Shack sells, they might be quite suitable, as those motors have 2mm shafts.

The Tamiya gearbox kits are cool and cheap, but they have built-in 3v motors and are unlikely to be sturdy enough for this application, even if they could be modified to accept a bigger motor.

Tower Hobbies has a wide selection of pinion gears in 32P and 48P pitches.  The pitch is the number of teeth on the gear divided by the gear diameter in inches, so a 16-tooth (16T) 32P pinion would have a diameter of 0.5″. (Note: metric sizes use “module” numbers instead, which are the diameter in mm divided by the number of teeth.  32P would be module 0.7938, so the closest metric size is module 0.8.)

The 32P gears are sturdier, so let’s look at them.  The Robinson Racing pinions are the cheapest at $3.69 each and they come in every size from 9T to 21T (here is the link for the 15T pinion). They are spec’ed as 1/8″ (3mm), so should fit on the bilge pump motor’s 1/8″ shaft.  Going directly to Robinson Racing gets a wider selection at slightly lower prices ($3.50 for the unhardened pinions 9T–22T, $4.95 for the hardened pinions 9T–23T).

Tower Hobbies also has pinions for 5mm shafts, if we need them.

Tower Hobbies has 32P spur gears in sizes from 48T to 72T (though not every size, unlike the pinion gears).  The plastic spur gears run about $2.80 (for the Traxxas brand) to $6.79 (for the RJ Speed brand) and have holes for attaching them to wheels, but different spur gears have different hole patterns.  Steel spur gears are available, but only in a few sizes and at about $24 apiece.

The Kimbrough Racing Products 32P spur gears come in every even size from 44T to 54T, 60T to 66T, and 64T to 72T, costing $6 each.  The hole patterns look like they could fit a number of different wheel styles, but no specs are given on the hole pattern, so some guessing or measuring from photos may be needed to see if they would fit wheels other than the rather expensive ones they are designed for.

Bottom line

The bilge-pump motors are looking like a surprisingly good deal.

2012 July 31

Robot wheels

Filed under: Robotics — gasstationwithoutpumps @ 22:46
Tags: , , ,

The robotics club has continued building their automated foam-dart shooter (which I won’t call a Nerf gun any more—not because I fear trademark infringement, but because it won’t take Nerf-brand foam darts, needing the ones for the NXT generation crossbow).  After getting a Lego prototype of their pan-tilt mechanism working, they’ve been building a sturdier one out of PVC and plywood.  For the pan mechanism they wanted a wheel that was runnable off the 12v battery and controlled by the HexMotor board. Initially they built something using a small 12v motor I had (a Mitsumi M38E-3SC) for which I’ve been unable to find any specifications, other than the 2400RPM and 12V on the label. I did find bunch of specs for other motors on Mitsumi’s web site, but this motor has apparently been discontinued, and the manufacturer has no interest in keeping historical specs on their website.  (I wish more manufacturers would, since it makes it easier to find out the specs for surplus and recycled parts, which in turn allows finding the closest currently manufactured model.)

They mounted the motor with the pulley on the shaft rubbing against a caster wheel, which spun nicely with no load.  Unfortunately, even the weight of the motor pressing the caster wheel against the floor was enough to stall the motor.  (Based on the other Mitsumi motors, I’m guessing that the motor has under 80 mNm of torque.)  We need to get a more powerful motor, but how powerful and how fast a motor?  Today we looked at the design from first principles and started trying to spec the motor and wheel.

They decided that they wanted a panning speed of about 180°/sec.  They’re panning to do this by mounting a wheel at the end of a 60cm arm, so the wheel needs to move at about 190 cm/sec (75 in/sec).  With a 3″ diameter wheel, that  would require a shaft turning at about 470 RPM (a 1″ wheel would need about 1420RPM). If you have any trouble with this easy calculator computation, you could use Lynxmotion’s wheel-speed calculator. They could either get a faster motor and gear it down, or buy a gear motor that has about the right speed and is already geared down.  There are a lot of hobbyist motors and gear motors on the market, but a lot of them are made for RC vehicles, and so run at 6v or 7.2v instead of 12v, or for kid’s toys and run off 3v.  The 12V motors tend to be marketed for the automotive and marine market and are heftier and pricier (except for oddities, like the surplus Mitsumi motors).

How much torque do we need?  We tried pulling on the arm with a force gauge to see what it took to move it, but we couldn’t measure forces that low (under 0.1 N).  Of course, moving it at speed will require more torque—I should probably set my son the task of estimating the moment of inertia and determining how much torque would be needed to swing the mechanism from motionless in one position to motionless 180° away in a second.

Obviously we need more torque than we can get from the Mitsumi M38E-3SC, but how much is that?  We measured the stalling torque by taping a string to the caster wheel and measuring the force with the motor stalled but pulling on the string.  We measured about 0.7N and the wheel had a 5cm diameter, so the stalling torque was about 0.0175±0.003 Nm.  Unfortunately, very few motors have their torques reported in SI units.  Instead, weird units like in-lb, oz-in, and kg-cm are used.  Translating, the stalling torque for the motor is about 0.15 in-lb, 2.5 oz-in, or 180 g cm. (Rather than remember or look up all the conversion factors, I used an online calculator for the unit conversion.)

Any motor with less than 5 times that much torque (0.88 Nm, 0.75 in-lb, 12 oz-in, 900 g cm) is probably unusable, and we may need a much higher torque.  Keep in mind that the torque when the motor is stalled is usually much higher than torque at the rated load (which is typically at the maximum efficiency point for the motor).

I looked for wheels, gears, and motors for several hours today, in order to give the students in the robotics club some reasonable choices to consider.  In this post I’ll just discuss the wheels, not gears or motors.


I said I wouldn’t discuss motors, but I’ve already made one exception for the Mitsumi motor that stalled.  We also currently have a spare 12v bilge-pump motor with a 1/8″ (3.2mm) shaft which is intended for a 500 GPH bilge pump.  I have no idea what torque it is capable of nor what speed it runs at.

We should be able to measure the speed with a light and a photodiode—this might be a good time to use a Fairchild QRE1113 reflectance sensor (I bought a couple for an idea I had for the circuits course, but that idea is not currently looking too promising).  I think that the flat on the shaft of the motor should change the reflectance enough that we should be able to get a good pulse out of holding the reflectance sensor a couple of millimeters from the rotating shaft.

Measuring the torque is harder (says the ex-computer engineer—electronics is always easier than anything mechanical!).  We’ve got some 3.2mm collet adapters which could give us a 5mm shaft to tape a string to and the outside collar of the collet has a 1.2 cm diameter.   I suppose if we need a longer lever arm to reduce the force, we could drill a 5mm hole in something and clamp it on with the adapter.  We certainly have plenty of spring force gauges, so we should be able to find one that has a reasonable range.


There are a lot of pre-made wheels on the market, and there are some wheel systems that allow robot designers to match their needs for shaft size and wheel size with a standard hub in the middle.

BaneBots wheel system

The BaneBots wheel system has wheels that are 0.4″ or 0.8″ wide with hexagonal hubs that are 0.5″ or 0.75″. For example to drive a 2 7/8″ (73mm?) wheel from a 4mm motor shaft could be done with a 0.4″-wide 1/2″ hex hub for a 4mm shaft  ($4), then a 2.875″D 0.4″ wide wheel ($3).  To hold the wheels on the hubs requires a snap ring (included with the hubs), which means buying some snap-ring pliers ($5) as well.

Here is the description from the RobotShop web pages (Trossen Robotics has a nice summary of the BaneBots system with pictures, but their prices are not as good as Robot Shop):

The BaneBots Wheels were conceived for absolute versatility. They are constructed with a thermoplastic rubber tread bonded to a black polypropylene core making them light weight and durable while providing excellent traction. The variety of sizes and mounting options make it easy to find the wheel (or combination of wheels) that meets your needs. These wheels offer a low cost solution that is durable enough for a combat robot yet still light enough to be practical. These wheels can be used both indoors and outdoors and are maintenance free.

Wheels are available in various tread durometers (hardness):

Green Rubber tread: 30 Shore A (soft and “semi flexible”)
Orange Rubber tread: 40 Shore A (medium)
Blue Rubber tread: 50 Shore A (hard and “stiff”)

Standard low profile hubs and bushings are available supporting shaft sizes from 2mm up to 1/2″ in both drive wheel and caster applications. Wheels can be mounted one, two, or even three wide. Mounting two or three wheels to the same hub gives the flexibility of creating wider tread or mixing different durometers. The hubs and bushings offer even more versatility, allowing you to connect to metric (2mm, 3mm, 4mm, 6mm) and imperial (1/8”, ¼”, 3/8”, ½”) shaft sizes.

0.4″ Wide x Diameter:

Diameter: 1-3/8″ 1-5/8″ 1-7/8″ 2-3/8″ 2-7/8″
Green ½” Hex ½” Hex ½” Hex ½” Hex ½” Hex
Orange ½” Hex ½” Hex ½” Hex ½” Hex ½” Hex
Blue ½” Hex ½” Hex ½” Hex ½” Hex ½” Hex

2-7/8″ Diameter x 0.8″ Wide:

Green ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Orange ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Blue ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished

3-7/8″ Diameter x 0.8″ Wide:

Green ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Orange ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Blue ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished

4-7/8″ Diameter x 0.8″ Wide:

Green ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Orange ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished
Blue ½” Hex ¾” Hex 3/8” Key ½” Key 3/4” Bushing Unfinished

Lynxmotion wheels

The Lynxmotion wheel system also consists of hubs and wheels, but in a smaller variety than the BaneBots system. They also sell all their hubs and tires in pairs, so we’d be buying 2 hubs and 2 tires. Lynxmotion has 3 hub styles: universal hub (for 4 of their wheel types), 12mm hex hub (for one truck wheel), and mounting hub (for 7 of their wheel types). All the hubs are $8 for a pair of hubs.

I believe that we would be most interested in the cheapest and most versatile of their systems: the mounting hubs (which are for 3mm, 4mm, or 6mm shafts) and NFT-01 through NFT-07 neoprene foam tires.  The tire diameters are 1.5″ ($3.87/pair), 1.75″ ($4.10/pair), 2.25″ ($4.64/pair),  2.5″ ($4.86/pair), 2.75″ ($5.13/pair), 3″ ($5.36/pair).  Both the BaneBots and the Lynxmotion systems come to about $7 a wheel for the larger sizes (around 3″), but Lynxmotion requires buying in pairs.

The universal hubs (which are used with their more expensive wheels) are interesting in their own right, since they provide 4 tapped screw holes in the aluminum hub, to which anything could be mounted with the 2–4  4-40 screws.  They even include 2 5/8″×4-40 screws for each hub and an Allen wrench that fits them. The universal hubs come in 3 shaft sizes: 4mm, 6mm, and 1/4″.

If the robotics club decided that they wanted a 6″ diameter wheel, they could turn one on the lathe and mount it with universal hub.  Better, they could mount the hub to the rough blank then turn that on the lathe, to make sure that the wheel is properly centered.  Of course, to do any of this we’d first have to clear all the clutter around the lathe (which I haven’t used for 20 years), and I’d have to get a headstock mount drill chuck ($30) and an adapter ($15), since my lathe has a 3/4″ × 10tpi headstock and most lathe accessories now expect 1″ × 8 tpi.

Solarbotics wheels

Solarbotics makes 2-5/8″ diameter wheels for $4 that fit on 3 mm D-shaped shaft and on their double-flat 3mm shaft that is the output of their gearboxes.  It seems to be cheaper to get the wheels from Pololu ($3.50).  Pololu also makes gearboxes that can drive the wheels that are a bit cheaper than the Solarbotics gearboxes.  Unfortunately, neither Pololu nor Solarbotics goes in for 12v motors, and their little 3V motors and gearboxes may not be suitable for this application.  I’ve not seen any adapters for mounting the Solarbotics wheels on larger shafts.

Tamiya wheels

Tamiya, best known for their wide selection of toy gearbox kits, also makes wheels.  The wheels are cheap, but only fit on the Tamiya 3mm hex shafts.

Pololu wheels

Pololu sells wheels that fit their 3mm D shafts and onto the outputs of Solarbotics gear motors.  The wheels come in 3.2cm ($7/2), 6cm ($8/2), 7cm ($8.50/2), 8cm ($9.25/2), and 9cm ($10/2) diameters.

Pololu also makes universal hubs with 4-40 tapped holes, for 3mm ($6/2), 4mm ($7/2), 5mm ($7.50/2), and 6mm ($8/2) shafts.  This looks like a slightly cheaper way to get a universal hub than the Lynxmotion ones. The 6cm and larger wheels have 2 holes that can be mated with the holes in these universal hubs, so the Pololu wheels can be put on other shaft sizes for $7–9 a wheel, depending on wheel and shaft size (similar to the prices for BaneBots and Lynxmotion wheel systems).

Bottom line

It looks like we can get wheels for 3mm, 4mm, 5mm, and 6mm shafts with diameters from 3.5cm to 90cm for $7–9 a wheel.  We can also use universal hubs to mount home-made wheels onto those shaft sizes.

Next Page »

%d bloggers like this: