GWS S125 1T 2BB Sail Winch Servo

Is there something strange about driving this servo? I expected the Arduino servo library to be able to control this. I’m only able to get a feeble twitch out of the thing when it powers up, then nothing.

Norm

The Servo can be controlled like a normal servo. Can you tell us exactly how you have everything connected and post your code? Do you have any way to verify that the program is running?

-Paul

The is just the example from the servo library. It works fine with a different servo.

Norm

// Sweep
// by BARRAGAN http://barraganstudio.com
// This example code is in the public domain.

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos’
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos’
delay(15); // waits 15ms for the servo to reach the position
}
}

Hello,

What servo library gave that as an example? Without knowing exactly what is meant by 0-180 degrees, I cannot be totally sure, but that example sounds like a good way to destroy servos, since many or most of them can break if you attempt to move them over that range.

Also, how is everything connected?

-Paul

That’s one of the examples from the official servo library included with the Arduino download.

What’s to say? The signal line is on pin 9 and the power and ground are connected to…
Power and ground.

I realize that if a servo can turn 180 degrees then technically the loop should go from 0 to 179 but how is that likely to break a servo?

I’ve also tried ‘writeMicroseconds()’ with values between 700 and 2300 which also works fine with a different servo but not with the sail winch.

Hello,

You did the right things with ground and signal, but what do you mean by “power”? About 50% of the time something does not work for someone, it is because of the power supply. In your case, there is no voltage that is both safe for servos and for the Arduino, so I wonder what you are doing. A picture of your setup might help, if that is easy for you to post.

A servo that can turn 180 should be able to go from something that one could call “0” to something that one could call “180”. But most servos cannot do 180, and the 0-180 must have some specific meaning in microseconds, which seems to not be specified by the documentation.

The safe range for servos is generally 1000-2000us. Trying anything outside of that range without being super careful is a really bad idea. I test the ranges of my servos by turning the power down to 4V or so to make them as weak as possible, then gradually approaching the minimum and maximum values, watching for the servo to stop moving. As soon as it stops or I hear it straining, I back it off a bit, record the limit, and never try to pass it again.

However, the servo never moved at all for you, right? That makes me hopeful that it has not been broken.

-Paul

Thr little bit of spec that’s not in Chinese gives speed and torque ratings at 4.8.v and 6.0v. The Arduino’s 5 volts falls nicely in between.

The servo is connected to 5v, gnd and digital pin 9. This is the way I’ve been hooking up servos all along and is per the Arduino docs. I don’t see any documentation on your site that suggests anything else.

Hello.

As Paul said, this is probably a power issue. The regulator on the Arduino isn’t really suitable for powering anything other than small servos (and even that could introduce noise that and cause problems for the microcontroller). My suspicion is that trying to move the servo is causing the Arduino to brown out and reset. You can test to see if this is the case by having your setup() routine blink the LED in a distinctive way for a couple of seconds. You really should be using a separate power supply for the servo (I recommend a 4-cell or 5-cell NiMH battery pack), but you could also try putting a big power capacitor across power and ground near the servo and see if that helps.

- Ben

Hello,

Yeah, that must be it. If you had a way of verifying that your program was running, like I was asking about innitially, you would have caught this earlier.

If your main input source can deliver enough power, I would recommend getting a regulator like this one to regulate your input power to 5V. Otherwise you could add a separate battery just for the servo.

-Paul

You got it. I hadn’t bothered to stick my uber-power shield in the test rig. I’ve never used a servo before that required that much juice.

Thanks,
Norm

Okay, I am glad that that helped. What is an “uber power shield”? Is that a specific product that you could link to?

-Paul

Just my name for it. It uses three LM2940 regulators in parallel. I’d like to add some caps to it but don’t know how to figure out what size they should be.