360 degree servo's

Is there anyone who is using servo's for 360 degrees rotation and using them with Arduino?

I know that servo's can be modified so they can rotate 360 degrees (by removing a stop on one of the gears) and also that 360 degrees servo's do exist.

I am working on something where I need more than 360 degrees rotation. This sounds strange, but what I mean is that when I am at 359 degrees and want to go t 5 degrees, I don't want the servo to makes the shortest turn to the 5 degrees (by moving 6 degrees to the right) and not by moving 354 degrees back.

I had a look at the various servo libraries and found out that they only support 180 degrees (correct me if I am wrong).

Maybe I would be better of with a stepper motor?

All hints welcome!

Many thanks!

Jan D

Hi Jan, I think you may want a stepper. Removing the stop in the gear and disconnecting the physical connection to the position feedback pot converts a servo to continuous rotation. But it sounds like that is not what you want. The problem is that you need position feedback and the pot in hobby servos do not work over 360 degrees.

If you don't' need high torque or accuracy, you could get a hobby servo to operate over a 360 degree range by using some form of external gearing. But I would think using a stepper would be easier and better for what you want.

Have fun!

This isn't the definitive answer by a long shot, but my understanding is that servos are either limited in how far they rotate if you want to control position with any accuracy, or modified/built to rotate freely in which case you only control their speed and direction of rotation, not the position they stop at.

A stepper motor will allow you fine control of how far it rotates in one direction or another, with no limit to the number of turns, but it will not center to a desired position or provide high torque in maintaining that position against other forces. You just tell it X clicks clockwise and it tries to do that, with no guarantees.

In the end, you are (I think) trying to create a closed control loop so that some motor provides torque to rotate something until some sensor indicates a desired position has been reached. A stepper motor by itself, or a continuous rotation servo, do not provide the sensor part of the loop, while the sensor in a standard servo does not support rotations past a certain range.

So you need an alternative sensor that tells you where in the rotation you are, and to generate a control signal to the motor (of whatever type) accordingly. Servos use potentiometers to sense position, so perhaps a pot or two with weird tapers might work, or the good old optical encoders from a mouse with modified discs?

Having said all that, if anyone knows of an off-the-shelf servo that behaves as you describe (since it's not inconceivable to make one, I just don't know of any), I'd love to save the link to the vendor for future reference!

but it will not center to a desired position

Hi Matt,

It's been a long time since I played with steppers but I thought that they did position to within a step. i.e. pulse the motor x steps forward and it will move x steps. Holding torque is motor dependent but steppers I was using held better than the hobby servos I am playing with these days. Is my memory too hazy?

Hi Mem, I didn't express myself clearly there, sorry.

Big honking stepper motors do usually have more torque than the liddle biddy ones in a servo, definitely. What I meant was that if you DO move it out of position, once you let up, the servo will seek the desired position again, while the stepper motor will just sit there. As for pushing back against a displacing force, a servo pushes back proportionally to the displacement, while a stepper just resists with its holding torque until it slips and settles at the next step. One is not better than the other, just different for different applications.

This is why skipped steps on a stepper are such a pain when trying to do precision positioning... you never notice they happen and they don't self-correct.

I use to have one of those CNC foam cutting machines to cut wing cores for RC gliders (gave it to a friend when I moved to the US), and every once in a while, the steppers would skip a step or two and you'd not just get a divot at that spot in the profile, the whole profile would be off by that much for the rest of the cut.

Matt, thanks for the clarification. Perhaps Jan can chime in and say a little more about the desired accuracy and torque needed for the application.

The nice thing about servo’s is that you can send them ‘degrees’ of movement, and that is what I need for my application.

Without revealing too much about what I am working (at least, not for now), precision is very important. The goal is to follow an object that gives it position.

So, if a stepper can pass it’s target (and it doesn’t realize that), it will be of by one or more degrees and after a few movements, it could be way of. That is not what I want.

Regarding torque, I don’t need much more torque than over half a kilo (17 ounces). Most hobby servo’s can do that.

What I wrote in my initial post regarding going from 359 to 5 degrees. This can’t be done if the servo has to move 354 degrees, this takes too much time and I could loose valuable information.

Mem’s suggestion to use external gearing would be nice to achieve 360 degrees with a 180 degrees servo, but it still leaves me with the continues rotation…

I hope this helps!

Your suggestions are much appreciated! Please let them come.

Steppers do NOT lose steps that often, particularly if lightly loaded... this is why we are able to cut foam and other materials to a high degree of precision with them, despite the fact that the only time we actually know their position for sure is at the beginning, when they are up against some stop.

I would recommend a stepper, and perhaps some sensor that tells you when the angle is zero (a single notch optical encoder, perhaps, or a hall effect magnetic sensor on the shaft) to reset any discrepancy between where you think you are pointing and reality. For most applications, that should be plenty.

Steppers do NOT lose steps that often, particularly if lightly loaded

It depends on the stepping pulse speed. Most people try and pulse them as fast as possible and that brings them close to the stall speed even with no load. Agreed if you are running them much slower than they are capable of going then there is usually no problem. In your application I would have thought the limiting speed would be set by the cutting feed of the material so you are not likely to run into these problems.

Thanks again for your suggestions.

I have no experience at all in using optical encoders and magnetic sensors. I will see what I results I get with just the steppers first. If that is not satisfying, I will dive into using those 2 items.


It depends on the stepping pulse speed

I would think that any decent stepper would be working well within its capabilities if it was rotating at similar speeds to even the fastest hobby servo geared to rotate 360 degrees.

In your application I would have thought the limiting speed would be set by the cutting feed of the material so you are not likely to run into these problems.

Yes, when cutting foam I had issues with the wire touching the foam rather than with skipped steps when I tried to go too fast. You usually want the foam to melt from radiated heat and never touch the wire to ensure uniform cut width and prevent drag on the wire bowing it away from the ideal straight line.

I will see what I results I get with just the steppers first.

Sound like the best plan all around… don’t forget to report back so future arduino users have a chance to find the solution via Google.

any decent stepper would be working well within its capabilities if it was rotating at similar speeds to even the fastest hobby servo

I think you’d need to figure out how much angular resolution you need, determine your gearing ratio (if any) and taking that into account, figure out how many steps per second you would need to get the desired slew rate.

With no gearing, I too would expect to be safe from stalls and skipped steps with insignificant loading of the shaft and at typical servo slew rates.

If jds were to find out different, the first things to try before adding rotational position sensors could be to lighten the load and to add gearing to allow the steppers to work at a lower slew rate (keeping in mind gearing that slows down the motor will increase the load and vice versa).