Sunday, September 03, 2006
What appears to be a major unanticipated problem with shaft-encoded gearmotors...
Anyway, I was reversing rotational directions and testing the limits for the speed range that I could get on the motors running them in this configuration. I was able to get a high of about 5v and a low of about 0.94v with the 16F628A on the old board and I've been pushing and shoving the technology to at least match this.
I was staring at the two gearmotors and set one at a very high rotational speed and another at as low a rotational speed as I am able to get when I had a very unpleasant epiphany.
Here it is folks: Shaft encoded gearmotors have upper and lower rotational limits, right?
The high limit usually isn't much of a problem. What I hadn't seen before is that the lower limit very definitely is.
I happened to be visualising a threaded positioning table for the XY axes. Both Reiyuki and Vik's designs came to mind. I thought of extruding sloped lines on an xy plane thereon.
Then it hit me. If the lower rotational limit isn't zero varying smoothly to the upper limit, there are two whole sheafs of shallow sloped lines that you can't extrude.
You can, of course, turn off one axis and let the other run at any speed. Holding that speed, however, and starting up the other axis you won't be able to extrude a shallower sloped path than the slowest speed of one axis divided by the fastest speed of the other.
That's a disaster.
What happens if you try to turn the motor at it's slowest speed for .1 seconds, then coast?
The goal should not be "Move motor X at speed A, and motor Y at speed B), it should almost always be, "Make sure motor X is positioned over point A, and motor Y is positioned over point B." Just make (A,B) follow a line. All you need to worry about then is the sample points accurate enough, and are the motors responsive enough.
Maybe you can try something. Instead of seeing what the slowest you can get a motor to run continuously, see if you can find out the shortest distance that a motor can move at it's slowest speed and still come to a stop; I.E:
1. Stop motor.
2. Measure position.
3. Start motor.
4. As soon as any motion is detected, Stop motor.
5. Measure position difference.
How far does it move? If it only moves at most .2mm, you'll still have better than .1mm accuracy.
Links to this post: