I have been referencing the “Python/SSC-32 Example” thread on lynxmotion lynxmotion.net/viewtopic.php?f=2&t=1520 and “SSC-32 Manual” for controlling the HS-785HB Winch Servo with Python v 2.6, OS X 10.6, with the SSC-32 motor controller. This is my first experience with both the SSC-32 and the winch servo. The problem is that I am unable to get the servo to go to a consistent position. The code below results in the winch servo moving in the same direction over and over, and not settling on a consistent position. Is this normal? What can I do to send the servo to some consistent location, for example, the center? Thank you in advance.
import serial
SSC32_Port = "/dev/tty.usbserial"
ssc32 = serial.Serial(SSC32_Port, 115200)
result = ssc32.write("# 0 P 1500 \r")
result = ssc32.write("# 0 P 1500 \r")
result = ssc32.write("# 0 P 1500 \r")
ssc32.close()
Thanks for the reply, but I don’t understand why that would be true.
First, the ssc-32 documentation states that the pulse is between 500 and 2500. The string " Pulse width in microseconds, 500-2500" can be searched in the documentation http://www.lynxmotion.com/images/html/build136.htm.
The 785HB winch servo operates ith the following pulse ranges:
500us = continous (full speed rotation in one direction)
500 to 600us = speed decreases as pulse nears 600us
600us = servo positioned at 0 degrees
600us to 2400us = servo moves to position where 600us = 0 degrees and 2400us = 1260 degrees (1500us = 630 degrees)
2400us to 2500us = continuous rotation in opposite direction
2500us = full speed continuous rotation in opposite direction
Therefore sending a signal of 1500us should position the servo at 630 degrees.
The winch servo is a bit special and for some pulse values it will continually rotate. if you write a lower value you will get it to settle in a single position. We suggest you experiment with other values in order to calibrate the output of your program.