Using pololu SSC in mini II SSC mode in linux

Hi,

I’m having some problems using the “Pololu serial 8-servo controller”, part #0727. I’m ultimately trying to use it by sending logic-level signals, but am having problems even whilst using the DB9 connector to send RS232 signals.

  1. I have a C program that sends commands in Mini II SSC mode. I’ve tried this program on the original Mini II SSCs, and it works. However, using the Pololu SSC, the LEDs indicate that it receives the signal, but the servos do not move.

  2. When I plug the power into the SSC, the yellow LED turns on, but the green and red LEDs do not. Subsequently, whenever I send a signal, the green and red LEDs flash/flicker once. Is that the right indicator I should receive?

  3. Assuming the code works for RS232, can I simply use the code to send logic level signals by just changing the connections hardware?

Thanks in advance for your help

Hello,

Do you have the mode jumper on for Mini SSC II mode? Also, are you sure you are using a straight-through cable? (The Mini SSC II doesn’t have a DB9 connector, so something about your setup between the two must be different.) Also, what are you doing with the handshaking lines? It’s possible that you are resetting the controller through the handshaking lines. If you do not have control over them, you should disconnect the reset jumper.

The green indicator should keep flickering every time you send data.

I’m not sure what you mean with your last question. The servo controller has the RS-232 conversion hardware built-in, so why wouldn’t you use it? If you want to port your program to a different platform that doesn’t have an RS-232 port, you might have to make some changes to your code depending on how you access the serial port.

- Jan

Thanks for the quick response. Yes, I have the mode jumper to cover “protocal selection jumper”. Yes, I am using a separate DB9 cable for the pololu, though I’m certain that both cables are able to transmit the signal to their respective SSCs, since the pololu LEDs flicker whenever I send a signal.

However, is it correct that whenever I send data, both the green and red indicators flicker, or should I only see the green indicator flicker? Also, the yellow LED stays on throughout the process - is that correct?

How do I make sure that I do not reset the controller through the handshaking lines? I’m not sure I understand what exactly are handshaking lines and resetting the controller.

As for the logic-level, yes, unfortunately I’m using a operating system that only has ttl logic-level serial output. On that note, are there sample C codes that work on Linux systems that have proven to work with the Pololu?

Thanks so much.

You’re in luck in one respect. All the Pololu servo controller’s RS-232 to TTL converter does is shift and scale the levels of the serial signal you send, but the data stays the same. If you get a code working over RS-232, and you can port it to a system that generates TTL signals you should be fine. The one thing you might have to do is re-invert it, if your system outputs inverted TTL, but we can worry about that later.

I have a couple of Pololu mini-servo controllers at work (I’ll check tomorrow) but I seem to remember the yellow LED coming on initially, then going off after receiving proper data (properly formatted and in the range of acceptable positions). After that I think only the green LED should flickering with the signal when the controller was working properly. The red LED indicates an error of some sort, so it should really never come on.

Handshaking is part of the RS-232 protocol which has to do with one device checking to see if another is ready to receive data before sending it, but it goes over separate wires in the DB9 layout. If you’re not going to intentionally reset the servo controller with your software (and why would you?) you shouldn’t have a jumper over ANY of the three pins labeled DTR/RTS reset enable.

Basically, you need only connect Pin 3 (signal transmit) on your computer’s DB9 to the RS-232 input pin on the servo controller, and Pin 5 (signal ground) on the DB9 to ground on the servo controller. If you have other TTL devices that only need to listen for serial information (i.e. not communicate back with the computer) you can string them to the logic-level serial output pin on the servo controller. Pretty nifty, huh!

Also, you need to make sure that you’re db9 cable isn’t a “null modem” cable, which switches pins 2 and 3 (Tx and Rx) between the two ends to let two RS-232 devices communicate both ways with each other (like an ethernet crossover cable). You can check to make sure pins 3 and 5 are continuous in your cable.

Are you powering the servos separately, or with the Vcc=Vs jumper? If your power supply is too weak the controller might be resetting every time a servo makes the slightest attempt to move. If it works with your Mini-SSCII this is probably not the case.

Code might also be the problem. You can buy special Mini-SSCII’s with different servo addresses, and your code might be addressing servos outside the 1-16 that the Pololu servo controller initially responds to, or it might be sending some extra serial data that the Mini-SSCII ignores but that irritates the Pololu. It is also possible to change the servo numbers that the Pololu controller responds to, but it is highly unlikely that you did this by accident.

I only have experience programming for servo controllers (Pololu and SSC) in Windows, and I’ll admit that someone else wrote the communication protocol parts (I’m a mechanical engineer after all), but if you post your code I’d be happy to look at it. Also, wiring descriptions/schematics/photos are always nice. What are you trying to make in the end?

-Adam

Thanks for both of your help! The problem was indeed the reset jumpers - I had kept it on because that’s how it was when it came in the package… now it works just like a mini II SSC…thanks!