One of the simplest bots
you can make is made by converting a couple of servos to free running mode.
You get a small motor, gearbox and speed controller all in one package.
First lets talk a bit
about how a servo works.
Most servos are
controlled by a series of pulses. The width of the high state pulse is
what determines the actual position of the servo.
Generally a pulse of 1ms
will place the servo at one end of its rotation (see figure 1) and 2ms will
place it on the other end (see figure 2)

Figure 1

Figure 2
I say generally because
I found that the range can be any where from .2ms to 3ms depending on the
servo manufacture and model. Again generally when the pulse width is
1.5ms the servo will reach the half way point in its swing.
There is a small
potentiometer inside the servo that rotates with the main shaft. This
is what tells the electronics in the servo where it is at any given time.
When we convert a servo to free running mode we disconnect the potentiometer
from the shaft and set it at its center position. We also remove any
mechanical stops that may keep the servo from turning completely around.
Once the servo can
rotate freely we can find the center spot by slowly adjusting the pulse
width. I call this the neutral position. Now by adjusting the pulse
width greater than the neutral position we can move the shaft in one
direction. By adjusting the pulse width less than the neutral position
we can move the shaft in the opposite direction.
Most servos were
designed so that when it gets closer to its allocated position it slows
down. This will allow us to adjust the speed of the shaft by
varying the amount that deviates from the neutral position.
Servo Notes on Airtronics 94102
This is one of my
favorite servos. It it the most accurate of the batch. Once
calibrated works very well as a continuous rotation servo. However
this servo has problems when battery power is above 5v. I have
found that some servos will not return to there neutral position.
If they are run off a 5v regulated source they work well.
Modifying the Servo
Note that the following
modifications will void your servo warranty.
This servo is the
easiest of all the servos to convert.
| Step 1
Remove the 4 screws on the back of
the servo.
Note that its not necessary to
remove the back of the servo. |
 |
| Step 2
Remove the top of the servo by
lifting.
Note that the two pins shown
may stay attached to the top of the servo. If they do remove
them and insert into position as shown. |
 |
| Step 3
A: Remove the intermediate gear by
just lifting.
B: Remove the main shaft by
lifting. |
 |
| Step 4
There is a small cap that covers
the potentiometer. Use some needle nose pliers to remove the cap
by lifting.
With your fingers or some small
pliers place the potentiometer shaft into the center position. |
  |
|
Update
Step 5
Using a thin blade of a razor
saw or a cutting disk on a rotary tool place a small slot in the main
shaft of the servo as shown. This will allow you to
calibrate the servo later. |
 |
| Step 6
There is a small stop that must be
removed from the main shaft. I found that using small wire
cutters and then cleaning up with and exact knife works the best. |
  |
|
Update
Step 6b
Use a 5/64" Drill bit and drill
through the top of the main gear as shown. You are making
an access for you micro screw driver to adjust the main shaft
(potentiometer).
|
 |
| Step 7
Insert the shaft into the top of
the servo case as shown and test that you can rotate the shaft
completely. |
 |
| Step 8
A: Place the main shaft back in
place.
B: Place the intermediate gear
back in place.
C: Replace the servo top.
D: Reattach the 4 rear screws.
|
 |
|
Update
Step 9
To calibrate the servo just set
it to a neutral (center position) 1500us. Use a small screw
driver to adjust the main shaft as shown. Adjust until the drive
shaft stops moving. You
can use the following program calibrate the servo's neutral position.
func main()
SERVOinit(1)
SERVO1us 1500
endfunc
include \lib\DiosHSServo.lib |
 |