Problems with servo rotation using Micro Maestro USB SC

Hi there!

Guys, during a test using my Micro Maestro 6ch usb sc, I noted that sending a serial data to the controller, with a command for the servo rotates about 10 degrees (from the neutral point), as a result, I got a 16 degrees servo rotation. Probably I’m doing something wrong so, could anyone give me a hand to understand it?

The SSC is connected on a pc with a usb cable, using pololu virtual COM port. A Hitec HS-311 servo was used during the test with a 4.8V battery pack.

the code (C++):

[…]

unsigned char serialBytes[4];
int target, servo = 0;

[…]

target = (angle*3000)/45; // converting a angle into PWM, considering neutral point = 1500us = (90°)

DWORD bytesWritten = 0;

serialBytes[0] = 0X84;
serialBytes[1] = servo;
serialBytes[2] = target & 0X7F;
serialBytes[3] = (target >> 7) & 0X7F;

WriteFile(hCom, &serialBytes, 4, &bytesWritten, NULL);
FlushFileBuffers(hCom);

Thanks in advance!!

Hello,

The 90-degree range is usually considered to be 1000-2000 microseconds, which is 4000-8000 in the Maestro units. So the formula should be

4000 + angle*2000/45

Also, most servos are not going to do exactly 90 degrees over that range; if you want more accuracy you could use the 8-bit position commands and calibrate the ranges in the Control Center to get exactly the correspondence between value and angle that you want.

-Paul

Hummm…Understood! :smiley:
And I’ll try using the Mini SSC Protocol instead.

Thank you for your reply, Paul!