SVP-324 and servo DS65HB

I’ve got a SVP-324 and a DS65HB servo, and I’m really a novice for using both.

My understanding is that a servo expects to receive a width-modulated pulse on its signal line at a regular interval, and the width of the pulse indicates the position to which the servo should orient itself. Moreover, the controller–like the SVP324–is capable of sending these pulses, so that all my program really needs to do in theory is effectively say “go to position NNN” (as specified in pulse width, ranging from 450 to 2450 or something like that) and the servo will left or right until it reaches the corresponding position, at which point it will stop.

Am I expecting something incorrectly?

Looking at the description for my servo, there is no indication of its range of motion. Should I infer that its range is 180 degrees, or 360 degrees, or infinite, or some other value?

Anyway, before I describe symptoms, let me advise that I’ve tried both using the SVP’s demultiplexer and hanging the servo off servo port 0, and using the init-extended and target-b API while hanging the servo off pin A6. Both exhibit the same behavior below.

What I’m seeing is that the servo rotates forever, in whichever direction is arguably left or right of wherever I told it to go most recently. So, if I setTarget(0,1400) it starts rotating to the right and will circle over and over until I setTarget(0,1300), at which point it will start turning left forever and forever.

That’s not really what I’d expected the servo to do. Is there some obvious physical flaw–in the servo, in my hookup, in the controller–that might explain it behaving this way? Or are my expectations wrong and it’s acting the way it should?

My guess–and again, I’m a novice so it’s a pretty bad guess–is that the servo internally has some kind of potentiometer to provide it feedback on its position, and that this worthy has broken or disconnected from the servo arm. Does that sound plausible?

Hello,

It sounds like your servo is broken. Did it ever work for you? This can happen if it is pushed to an extreme position causing something internal to snap or slip; we should try to figure out what could have done that it does not happen to you again.

Do you have any other servos to try? If so, I would recommend powering them with the lowest possible voltage that will cause them to move (3 or 4 volts) until you are sure that your program works. Also, can you post a code and a description of how everything was powered?

-Paul

First foray into servos, so I don’t have another available–but that’s easily remedied. Perhaps I’ll pick up a small selection and see what works for me. I’ll also disassemble this one to see if the problem is readily apparent, so I’ll recognize what kind of trauma might have done the deed.

The behavior has always been somewhat erratic, and while there was a time when it behaved better I can’t say I was ever really confident that it would behave as I had expected a servo would. When driving to anything under a 700us pulse width it would turn about 45’ left of (presumed-) center and stop–but the motor would continually whine as if it wanted to turn further but was being restrained. Similarly, driving to anything over 2100 would cause a similar problem when turning right: it would go there and stop, but the motor would keep whining and you could feel it straining to turn further.

I modified my code to keep the pulses well inside this range, even though that limited my servo to about 90’ of rotation. After maybe fifteen minutes of testing, though, it ceased its attempts to stop at these left/right 45’ boundaries and just started circling.

I’m at the wrong location to be able to post pics or source, but will try to do so later. Thanks for the tips.

Hello,

It sounds like your servo was working just fine until you pushed it past one of its limits - which is what broke it. The standard range of motion for a servo is about 90 degrees, corresponding to a 1-2ms pulse width, and anything beyond that has the potential to damage the servo, since most servos are strong enough to destroy themselves. Next time you do it, either stick to the 1-2ms range or try using a low voltage and immediately back off from the limit points when you discover them.

You should probably also Google around a bit for things like “servo tutorial” and “how does a servo work”, and opening your servo is definitely going to teach you something. Feel free to ask here if you have any more questions!

-Paul

Ah–just knowing that 90’ of rotation is typical helps a lot. Thanks. As I said, the product description doesn’t explain that.

The setServoTarget API says that legal values for positioning are 400 through 2450. Had I been thinking a little more clearly, I’d have realized that individual servos will clearly respond to different ranges of pulses, and that the API doesn’t intend to imply that the full range of 400…2450 will work for your servo. Glad to know the symptoms from misuse of the API. :slight_smile:

Got the replacement servos and was more careful in selecting their supported pulse widths, and they’re working great. Thanks. Nice to see these behaving the way I’d expected.

FWIW, I dismantled the old servo (wow; nice hardware) and examined it pretty carefully. I never found signs of physical damage: the (cute, tiny) motor drove a series of plastic gears that eventually drove to the plastic servo armature, which was mounted atop a D-shaft-headed potentiometer. That pot was very firm in its limiting motion, and none of the gears appeared stripped–not even the inside of the armature top where it sits above the pot’s D-shaft. My best guess at this point was that, rather than screwing up the servo, my real failure was somehow related to that top armature–mounting something badly to it, so that it was able to slip off the pot’s D-shaft. Something to think about anyway.

(And of course it’s cold and dry around here, so sometime in the evening I’ve managed to static-shock my 324’s display to death; another round of go-go-gadget-replacement-part for me. Sigh.)