Let's Make Robots!

using continuous rotation servos 'instead' of geared motors

For the sake of simplicity i will use the start here robot to ask my question, as the controller in the robot I am building here will be no more complicated (2 motors, one sensor) than that, and use the same processor (picaxe28x1)

The question is; Would I be able to use continuous rotation servo's instead of geared motors as the means of transport.

The differences and complications i've run into are -

  • The inputs for a motor may be set high and low, and left in that state while the picaxe does other things like measure distances and rotate a servo.
  • In continuous rotations servo's though, the pulse needs to be continuously generated to keep them rotating, meaning that the picaxe cannot complete any other processes (like measure distances with sensor) while it is instructing a servo to continue turning.

I've been trawling through search results but i'm not finding anything that is helpful.

The reason I ask this is because the continuous rotation servo's will be used as the powerhouse for my next robot as they are relativley high torque and are easily fitted onto the chassis.

Further information - The robot is controlled of a picaxe 28x1 and a 08M
In autonomous mode, the 28x1 will be active, and doing exactly what the start here robot does, navigate with an IR sensor.In R/C mode, both the 28 and the 08 will be recieving the same information from an RF reciever and interpreting it differently. The 28 will be used to navigate (via the two continuous rotation servos) while the 08 will take care of a 2-servo turret with wireless camera.

EDIT i guess this means it needs to be able to have the servo's rotating while it is in waiting for a signal with the serin command - something i think is only possible with a changed pinstate (ie, powering a motor) rather than a pulsing signal (to control the servo)

Because the camera is controlled separately, the robot will be able to drive and rotate the turret at the same time.

Each controller recieves the same single control byte. four bits are interpreted for movement (Forward, back, left right) by the 28, and it disregards the other four. The 08 interprets the other four bits for turret movement (pan left, right, up, down) so that in this way 8 boolean signals can take care of the whole range of motion in the robot.

I figure that if all else fails i can just resort to rewiring the servo leads directly to the servo's motor and running them like normal geared motors.

Anyway, any advice/code snippets or thoughts in general would be appreciated.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

well i guess it would not work with a ultrasonic range sensor, but i guess it would be alrite to use analog rangefinder such as sharp infra red sensor which would not require pulses.

if u could check out SoR start here robot. I read it some time ago and it is made using 2 cont. rotating servos and LDR's and the administrator of the website also built a robot called stampy which used 2 cont. rotating servos and IR sensor.

you could remove the electronics inside the servo and just use it as a geared motor.. Then you can use a L293D motor driver like here: http://letsmakerobots.com/start One downside of this is that you will need 2 output pins for each motor to control it.


Don't do this, it's a waste, buy motors if you really want to, servos might be useful sometime.

This was going to be my backup, but by the sounds of it i won't be butchering my servo's any time soon.

No worries about the servo signals mate. Picaxe generates those in the background. Make sure to initialise with "servo" and then update the pulse length with "servopos".

This means you can tell your bot to travel forward and then concentrate your program on other tasks, like reading your sensors, taking decisions.

Just one warning: do not expect very fine grained speed control. The feedback systems inside (cheap) servos are not very suitable for that.

Thats the trouble with the serin. When you issue a serin command, all background tasks including servo or PWM will stop until a serial transmission is received.

To overcome that problem, you can set an interrupt on the pin you use for serial communication and change the state of that pin before sending serial data to the receiving 28X1. That way, the serin command can be issued only microseconds before the serial data arrives. Also have a look at this page and this one


The picaxe 28x2 will accept serial data in the background (while eveyrthing else opperates normally) and will put this data in the scratch pad. You can go back to it and read back the data whenever you want. It will also interrupt if you would like when a serial recieve has occured. Find hsersetup and hserin in the manual.

Here's my 2c

As rik mentioned, picaxe runs the servo commands in the background, so you can run your modified servo simultaneously with other operations.

In my case: Since I'm trying to minimise the number of output pin I use, and since the small servo didn't provide the robustness I wanted, I gutted a servo, pulled the electronics from it and attached it directly to a geared motor, or a motor controller IC. this means I can control the motor with a single pin, rather than taking up two pins. It also means I can get some kind of speed control on a regular, high torque gear motor.

I don't agree with amando69 that gutting a $3 servo to turn it into a lightweight gear motor is a waste, but if you DO gut them, save the small control board inside.


one of them will be running "backwards" and you will have to spin it in the opposite direction of the other motor to make your robot go fwd.

Unlike DC motors where you can just wire one up opposite so that forward ends up being the same for both motors, on servos that doesnt work (well on my hitecs you couldn't anyway). So when you flip one for the other side of your robot, that motors forward is now backwards. Its not a big deal, you can just make that one run backwards to go forwards, but it is something that I had not seen mentioned before I used full-rotation servos with mine.If someone knows how to change the wiring so this works, let me know.

I use an AVR with servos and just use code to make one run the other way. They do have a very low RPM, but very high torque, so you will probably want to gear them up for more wheel rotation. Usually everyone wants to gear their motors down because they are going at 5000 RPM, but this is a case where you will proably need to use gears to increase the RPMs.