Continuous rotation servo question

General project help for Adafruit customers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
thefatmoop
 
Posts: 352
Joined: Tue Aug 19, 2008 4:36 pm

Continuous rotation servo question

Post by thefatmoop »

I've looked into making my own continuous rotation servo, but removing the potentiometer takes away the feedback to the servo.

For the parallax continuous rotation servo or the SpringRC servo (below)
http://www.pololu.com/catalog/product/1248
http://www.adafruit.com/index.php?main_ ... fb452eb5ef


So the question:
if I have the servo is rotating a wheel at a low angular velocity. If the wheel starts to stall will the servo increase current to try and maintain the speed set on the incoming PWM control?

So many people remove the pot which i would say makes it just into a motor gearbox, but pololu says that their servos:
"continuous rotation servo converts standard RC servo position pulses into continuous rotation speed"

I need to know because otherwise i need to go with encoders and get into a PID mess for maintaining velocity...motors with encoders aren't cheap =[. No i can't use steppers

User avatar
westfw
 
Posts: 2008
Joined: Fri Apr 27, 2007 1:01 pm

Re: Continuous rotation servo question

Post by westfw »

1) removing the pot removes feedback, causing the motor to behave as if it is always in one position, hopefully near the middle. Sometimes fixed resistors are used to replace the pot, which should guarantee this. Apply a PWM signal on one side of the middle, and the motor travels in one direction. Apply a PWM signal the other side of the middle, and the motor spins in the other direction. In theory, if the PWM signal is closer to the middle, the motor moves slower.

2) From the (one) continuous rotation servo I've worked with, and the (several) normal servos I've used, I'd say that any velocity dependence on "distance" from the desired position is quite weak, non-linear, and unpredictable. The desirable behavior of the original servo has the arm moving at full speed except for short accel/decel profiles near the endpoints, and those usually happen (IF they happen) as a result of the inherent behavior of the typical servo circuit rather than as a result of any intelligence. IIRC, There are some pulses in there related to the difference between the current position and the target position (PWM, in effect, but no feedback from the actual velocity.)

3) "motion velocity" software for servos works by dividing the desired range of motion into smaller steps and adding delays between the steps.

So I think that means an attempt to maintain a specific velocity (or pretty much "any" velocity other than "max") using a continuous rotation servo is pretty much doomed :-(

However, an encoder need not add that much expense to a motor, especially if your main concern is velocity. For example, you can put a printed pattern on your wheel and read it optically...

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Continuous rotation servo question

Post by adafruit_support_bill »

As westfw says, there is no real speed control going on because there is no feedback. The servo controller can vary the power sent to the motor, but the actual speed will be affected by other variables such as load.

On most servos, the power control won't be very linear either. Most hobby servo controllers I've seen act more like a differential-gap controller than a proportional controller.

Hall-effect sensors are useful for measuring rpm. Just glue a magnet to the shaft. Alignment is typically non-critical and they are not affected by dirt as are optical sensors.

thefatmoop
 
Posts: 352
Joined: Tue Aug 19, 2008 4:36 pm

Re: Continuous rotation servo question

Post by thefatmoop »

Thanks that answers alot.

Locked
Please be positive and constructive with your questions and comments.

Return to “General Project help”