High voltage servo control through MS8SC and Arduino

Hello,

I’m trying to control a high voltage servo (GWS IQ-910BB) through the Micro Serial 8 Servo Controller and Arduino UNO. The problem is that it starts to vibrate quite heavily after sending it a signal. I also used another (brand new) high voltage servo (GWS IQ-930BB) but it acted in the same manner. I use the following code for that:

[code]// Arduino pin connected to Pololu Servo Controller
const int servoController = 1;

// location of Servo plugged into Pololu Servo Controller (defaults 0-7)
const int servo4 = 7; //left servo (from front)

void setup() {
Serial.begin(9600);
servoSetSpeed(servo4,5);

//Move all servo’s to central position to avoid fast movements at startup
delay(1000);
servoMove(servo4,3000);

//Start movement
delay(4000);
servoMove(servo4,1000);

//Move all servo’s to central position to avoid fast movements at startup
delay(4000);
servoMove(servo4,3000);
}

void loop() {
}

/*
Move Servo using Pololu Servo Controller
servo = servo number (default 0-7)
hornPos = position (500-5500) {Test your servos maximum positions}
*/
void servoMove(int servo, int pos)
{
if( pos > 5500 || pos < 500 ) return;

// Build a Pololu Protocol Command Sequence
char cmd[6];
cmd[0] = 0x80; // start byte
cmd[1] = 0x01; // device id
cmd[2] = 0x04; // command number
cmd[3] = servo; //servo number
cmd[4] = lowByte(pos >> 7); // lower byte
cmd[5] = lowByte(pos & 0x7f); // upper byte

// Send the command to the Pololu Servo Controller
for ( int i = 0; i < 6; i++ ){
Serial.write(cmd[i]);
}

}

/*

  • Set Servo Speed using Pololu Servo Controller
  • servo = servo number (default 0-7)
  • speed = (1-127) (slowest - fastest) 0 to disable speed control
    */
    void servoSetSpeed(int servo, int speed){

// Build a Pololu Protocol Command Sequence
char cmd[5];
cmd[0] = 0x80; // start byte
cmd[1] = 0x01; // device id
cmd[2] = 0x01; // command number
cmd[3] = lowByte(servo); // servo number
cmd[4] = lowByte(speed); // speed

// Send the command to the Pololu Servo Controller
for ( int i = 0; i < 5; i++ ){
Serial.write(cmd[i]);
}
}[/code]

The following youtube link shows the behavior: https://www.youtube.com/watch?v=xJnJDVqMuu8&feature=youtu.be

I tried several pulse widths varying between 500 and 3000 us but same results. I use a DC power supply at 6V and the max. current the supply can deliver is 3A. For the test I only controlled the high voltage servo. For normal servo’s everything works fine and the high voltage servo is connected in the same way. For the normal servo operation see the following youtube link: https://www.youtube.com/watch?v=I7Xno6KywYY&feature=youtu.be

I have no idea what the problem could be. The current reading at the power supply is switching between 0.2 and 2 amps all the time. I’m afraid to demolish the servo. Could it be that the relatively thin wires are a problem? Or should I use another servo controller than the MS8SC? I can’t find any information from GWS. Is anybody else using high voltage servo’s on the pololu servo controllers?

Thanks in advance,

Glen

Hello, Glen.

From your video, it looks like your power supply is reaching its current limit, and doing a quick Internet search for those servos, I found warnings about their high current draw. Standard RC servos can draw upwards of 1A each, so if these are expected to draw much more than that, 3A might not be enough. Do you have another power supply you can try that is capable of sourcing more current?

By the way, those servos looks like they have operating voltages typical of hobby RC servos (4.8V to 6V), so they do not look like high-voltage servos from the specs I found; I suspect they are high-torque or high-current servos.

-Brandon

Hello Brandon,

First of all, thanks for your quick response. About the power supply, unfortunately I don’t have a power supply which can deliver more current. I thought 3A was quite a lot for some hobby servo’s. I’m now looking for a supply with 10 to 20A (quite expensive though). When I have a better power supply I will send an update.

Glen