HS-785HB Sail winch servo problem

Hey guys,

I just got an HS-785HB servo motor in the mail today from robotshop. I need the 3.5 revolutions that this servo provides for the project I am working on. Anyways according to http://www.robotshop.com/en/hitec-hs785hb-servo-motor.html The servo responds to pulse width lengths of 600 microseconds to 2300 microseconds to control angular position. Everytime I write a pulse width of length 600-2300 microseconds to the servo it just continuously rotates. Has anyone ever experienced this or know what I am doing wrong? Any response is much appreciated.

Everytime I write a pulse width of length 600-2300 microseconds

What does this mean? The servo expects a train of pulses at about 50Hz repetition frequency. 1500 us should be neutral.

What time scale ?

These things take several seconds to respond.

They do not rspond the same as rc aircraft servos.

I guess I misunderstood what the time value represents regarding the pulses. What I mean for instance is that if I servo.writeMicroseconds(1500) the servo continuously rotates rather than stopping at a position.

What code are you using to test your servo? Bad grounding or malformed control pulses can make a servo go to an extreme, which would explain the continuous rotation. Some simple servo test code you might try.

// zoomkat 10-22-11 serial servo test
// type servo position 0 to 180 in serial monitor
// or for writeMicroseconds, use a value like 1500
// for IDE 0022 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.

String readString;
#include <Servo.h> 
Servo myservo;  // create servo object to control a servo 

void setup() {
  myservo.writeMicroseconds(1500); //set initial servo position if desired
  myservo.attach(7, 500, 2500);  //the pin for the servo control, and range if desired
  Serial.println("servo-test-22-dual-input"); // so I can keep track of what is loaded

void loop() {
  while (Serial.available()) {
    char c = Serial.read();  //gets one byte from serial buffer
    readString += c; //makes the string readString
    delay(2);  //slow looping to allow buffer to fill with next character

  if (readString.length() >0) {
    Serial.println(readString);  //so you can see the captured string 
    int n = readString.toInt();  //convert readString into a number

    // auto select appropriate value, copied from someone elses code.
    if(n >= 500)
      Serial.print("writing Microseconds: ");
      Serial.print("writing Angle: ");
    Serial.print("Last servo command position: ");    
    readString=""; //empty for next input

I uploaded the code above but my servo still only continuously rotates regardless of the values i write to it.

Whichever code is uploaded to the arduino involving serial commands works before I hook the motor up to the arduino voltage source and pin. The second I hook the motor up the serial port fails, and like I said the motor just continuously rotates. I really have no idea whats going on.

If you are trying to power the servo from the Arduino, that is a serious problem. All servos require a separate power supply – that one requires a power supply capable of 2 amperes. Connect the grounds together.

Sure its the right model you got in the post? Sounds like its a continuous rotation one.

Information on your servo and how to power it.


Had the same problem working with a GWS S125 sail winch servo. The problem is most likely caused by a nylon disk attached to the POT. In order to go multi turns, there's a small metal gear attached to the output shaft that turns a larger nylon disk with inner gears attached to the POT. They are not very tightly fit, and the nylon gear can be wear off by the metal teeth ,and causes the metal gear to slip. Your RC servo runs forever because the POT reading is not getting any close to the target reading. Add a drop of super glue on the metal gear and put it back after the glue is cured will fix the problem.

If not the case, check if the PCB is damaged. I got a GWS S125 with a tiny ic on the PCB exploded.

Same problem, did you fix it?

Same problem, did you fix it?

This Thread is 3 years dead.

I suggest you start your own Thread with a clear description of YOUR problem and including the program you are using.