Hello guys.
I’m new here, and I have a question about the SSC-32 and the continuous rotation servo. I hope you can help me.
So here is my problem: I want to control 2 servos with SSC-32 via a C program. For the moment, I try to rotate only one servo . I managed to rotate it in both directions, but it moves continuously, even if I add “T3000” for example, as a time of 3 seconds. From what I’ve seen if I send the string “#0P1000\r” the servo moves in one direction, and with “#0P2000\r” it rotates in the other direction; both without stoping. If I try “#0P1000T3000\r” also rotates the servo without stop.
I am interested about rotating the servo in both directions, with different speeds (that means adding the speed parameter S in the string) and for a specific time (T parameter). If someone knows how to do this, I would appreciate some examples (strings to be sent). As I said, in my tests I only managed to rotate it in both directions.
Thank you in advance while looking for your answers.
Try sending 1500. If the motor still rotates but slowly then try 1505, 1510, 1515, if it goes faster then try 1495, 1490, 1395. You must find the exact stop value for each CR servo. Around 1500 should stop them, above that should proportionally increase the speed in the CW direction, and below that should proportionally increase the speed in the CCW direction.
The T and S modifiers are for group moves with normal servos. You are misunderstanding how they work.
you need to send nominal 1500us pulses to the servo to stop a continuous rotation servo from moving. sometimes the number varies slightly from 1500us… could easily be anywhere from about 1450 to 1550us.
you can use the lynxterm application with the ssc-32 and a servo on channel 0 to determine where it’s true “off” value is. click the button on lynxterm to set all servos to 1500uS (or 1.5ms, I forget how it’s labeled). the servo may stop, or it may be rotating slowly. if it’s rotating slowly you can use the slider to find the value at which it stops rotating. I’d suggest finding both endpoints, ie where it starts to move CW and where it starts to move CCW, and average them together to get a solid “off” value.
Now when you want to stop the servo from moving you will send that “off” value from your program. You can use it with a timed move to decelerate over a time period from whatever speed you have it set to.
Bear in mind the real speed adjustment range is probably only about +/-100uS from the “off” value so there will not be any difference in speed between 1300, 1000, or even 500us.
You’re fast!
Thank you again. Tomorrow I’ll try it. As it’s my first attempt with servos & ssc-32, I didn’t know how to command a continuous servo.
I’ll return with the results.