I’m a newbie to the SSC-32 controller, so please be gentle;)
I am in the process of developing a C#.NET 2005 wrapper for the SSC-32. I’m close to finished, but would like to ask a few questions for cleanup purposes.
Is it safe to assume that the baudrate will always be 115200 for PC use? That is what it says in the manual, but I need to know for sure, so that I can eliminate one of my constructors, and simply hardcode the baudrate in my class. I am totally new to microcontrollers, so I don’t really know much about baudrates.
What are the major differences between Time and Speed? I read in the manual that Time affects all channels, so does this mean that if I have 32 servos connected, and I tell all of them to move to “x” position simultaneously with Time “a” set for one channel, Time “b” set for another channel, Time “c” set for another channel, then only one of those times will be read?
There are more questions, but I’d like to get these two answered first:)
Sounds like a nice project. I hope it works out well. I’ll take a stab at answering your questions.
During normal operation the baudrate is controlled by the Baud jumper, so as long as you make sure the jumper is in the 115.2 position you are OK. For firmware updates, the baudrate is always 115200.
In a group move command, there can be only one Time specified, and it applies to all of the servo channels in the command. All of the servo pulse widths up to the carriage return are part of the same group move. Each servo channel may have its own speed, but they all share the same move time. Internally, the SSC-32 massages the numbers to make the servos start and end simultaneously without exceeding the move speed of any servo in the group. If necessary, it will increase the move time to accomplish this.
The paragraph above probably needs some additional explanation. It is usually not possible to exactly honor the speed and time constraints in a group move command, so the SSC-32 must resolve the conflict somehow. It does so by prioritizing as follows:
1st priority is start/stop simultaneously (after all, that’s what a group move is all about).
2nd priority is to not exceed the speed command for any servo in the group.
3rd priority is to have the move occur in the time specified.
This is the SSC-32 version of the three laws of robotics
BTW, if you don’t specify a speed for a servo in a group move command, the SSC-32 moves the servo as fast as possible without violating the constraints above. And if you don’t specify a time for a group move, it assumes you want to move as fast as possible, again without violating the constraints above.
My class won’t have the ability to update firmware. That really isn’t within the scope of the project. We’ll probably just direct people over to Lynxmotion Terminal program do so. Once the SSC-32 firmware is updated, it’s updated (doesn’t need another update till next version), correct? So, does this mean that I am safe to assume that the baudrate should always be set at 115200 when I am controlling servos with the SSC-32 via a PC.?
The info you provided helped tremendously, thanks! That’s is very close to what I was thinking, but I needed some reassurance.
Yes it is totally ok to hard code your program to 115.2kbaud. You will never have to change it. As for the firmware, you will never need to update it either. There is an additional version coming out, but it involves the background sequencer not the core servo controller.
Hi folks!
You run the SSC-32 on 115,2 kb.
Is there any reason for such a high baudrate?
I hope it’s not
I’m planning to use a wireless radio transeiver to control the RS232 over the air.
This module will provide 38,4 kb as maximum rate.
I’ve seen you can reduce the speed down to 2,4 kb so this should work!?
Why 115,200?
I suppose because we can.
The SSC-32 is shipped ready for DB9 use, so there’s really little reason not to have it enabled for it’s highest rate.
As for 2400, it looks like that won’t be a problem.