Is my serial 8 servo controller broken?

Hello,

I purchased the Serial 8-Servo controller (pololu.com/catalog/product/727) and I’m having trouble determining whether it is broken.

Here’s my setup:

Test #1:

  • Plug servo in.
  • Plug power in servo power header.
  • Notice that the Yellow LED engages.
  • Send a position command to the proper servo ID via the python script.
  • Notice the Yellow LED dim/turn off.
  • Notice no movement of the servo.
  • When the command completes, the Yellow LED re-engages.

Since there was zero movement, I removed the servo and started monitoring the White, Red, Black lines with a voltage meter.

Test #2:

  • Don’t use the servo.
  • Plug power in.
  • Notice that the Yellow LED engages.
  • Send a position command to the same servo ID via the python script.
  • Notice the Yellow LED dim/turn off.
  • Notice the following:
    • Red and Black servo lines stay constant (Red is +6V)
    • Red and White servo lines start High, then while the command runs, they drop to ground.
    • Black and White servo lines remain equal (ground).
  • When the command completes, the Yellow LED re-engages.

It didn’t make sense that the Black and White servo lines remain equal when the Red and White lines change. So, I hooked up a usb voltage probe and noticed that the Black and white lines do pulse. The pulse width modulation must be too low for my voltage meter to pick up… But if that were the case it shouldn’t have picked up the Red and White voltage changes either…

Test #3:

  • I did Test #2 but across other servo headers. For example, I would send a position change to servo 7, but test the voltage changes on servo port 3.
  • Noticed that all servo ports change regardless of what the command specifies.

Can someone help me determine if my servo controller is busted? Is there a test I can perform to verify it is working properly? I suspect the controller is broken (or misprogramed) since all servo lines get the position change command.

Any help would be very much appreciated! I’ve already spent too much time trying to diagnose this thing.

Hello,

I didn’t read everything in your post carefully, but your power setup is definitely bad. Four D batteries should give you more than 4V; if they don’t, they’re dead. You should also not use the Vcc=Vs jumper in this kind of situation (it’s only for regulated 5V). With a 6V battery pack, you can just connect the power directly to the logic supply (VIN), and that will regulate it to 5V. (You will still need a separate connection for the servo power).

- Jan

Ah, Fat fingers… The 4V was a typo. It should have been 6V (4 batteries * 1.5V = 6V).

I went back and read the power guidance in the manual a few times. It was a little confusing (e.g. mentioning a 4 cell pack for under 5V), but I understand it now. I can only use the jumper if the voltage is less than 5V.

So, I’ve removed the jumper (Vcc=Vs) and apply 6V to the controller power (VIN and GND) and I also apply 9V to the servo power pins (+/-). See the attached diagram.

When I run the position command I see the same behavior as before. The yellow light is initially lit, but dims during the command and the servo doesn’t move. I also register voltage changes between the White control line and the positive (+) servo power pin. This happens on all servo pins (0-7). Shouldn’t the control only be changing for the servo ID I’m requesting?

Thanks for the quick response!


Why are you applying 9V to your servos?

For now, you should disconnect all servos, just connect logic power and your serial connection, and get the LEDs to behave as expected.

- Jan

9V? How did I type 9V? I could have sworn I typed a 6. Wow, this isn’t the best way to start… :confused:

Take a look at the diagram in my previous post. All power is coming from the same battery pack (A six volt battery pack comprised of four D cell batteries). So, both the servo controller and servo power get six volts.

Am I not getting the proper LED behavior? What is to be expected? The manual says once the serial line is detected to be high, the yellow LED will be lit.

If I remove the DTR/RTS jumper, the yellow LED is lit until I send a command, then it turns off during and after the command. A second command will flash the green LED indicating data is received.

All this happens without the servo attached.

Tell you what, I’m going to buy another servo controller (I’m going to need many in the future anyway) and a servo from pololu and see if that works. At this rate, I may be able to see if that one works before we figure out what is going on with the servo controller we’re debugging.

Well, that behavior sounds good so far. Can you plug in the servo now? You might start with Mini SSC II mode, which will send all servos to the center position once you send the first byte. If that works, too, then you probably just need to work on the content of your commands.

- Jan

The servo doesn’t move at all in both pololu and Mini SSC II mode when I send a command.

I don’t think the servo is at fault. It sometimes moves slightly when it gets that initial voltage (plugging in the servo to the servo connection or the power to the controller board).

A couple of questions:

  1. Can you describe the voltage change behavior for the servo lines when a simple pololu change position command is sent (White control vs. Red positive and White control vs. Black negative)? For example, does the W vs. R start High, then drop to Zero during the command? What is expected?

  2. Also, should all the servo lines see voltage changes or only the one I’m addressing? I’m seeing voltage changes on all lines regardless of the ID I specify in the command and this sounds bad.

I don’t know how you’re measuring your voltages, but the way you’re asking the questions makes me wonder if you know enough electronics to really understand the answers. The servo control lines have pulses on them (there’s a bit of explanation of that in the user’s guide), so you won’t necessarily get anything meaningful from a measurement intended for DC. The middle (red) power line on the board is not connected to anything on the servo controller other than the servo power pin. The only way you get anything there is by applying the servo power, which will make that line that much higher than ground (the outside, black row).

Can you post some pictures or a video of your setup?

- Jan

I admit I don’t have very much electronics experience, but I’m pretty sure I understand how this should work.

I just want to verify my servo controller is broken.

I understand a servo is powered by a constant positive and negative voltage (red and black wires). In my case I have six volts connected to the red and black lines at the bottom of the board. This only supplies power to the servos.

The white wire sends control signals to the servo with pulse width modulation.

If you have a voltage probe (which I do), you can test the control signal by attaching it to the white servo wire and also attaching it to ground (the negative connection at the bottom of the board; as you mentioned). You can’t just hook it to the control line. Voltage is a difference in charge. So, when I say White vs. Black that means I want to know the voltage change on the control line in respect to ground and a description of the wave (starts high, then drops, etc…).

When you record with the probe it shows an oscillating square wave while the servo is changing position.

Is this not true?

Again, I only want to verify my servo controller is broken. Can you help me or not?

I am getting control voltage changes, pulses, (the square wave - PWM mentioned before) on ALL servo control lines (0 to 7). Please tell me if this is normal or not. That’s all I want to know.

In Mini SSC mode, all channels start making pulses after the controller receives the first byte. With the Pololu mode, the channels are individually enabled as you send commands to them. I think it’s very unlikely that the servo controller would be broken and still generating pulses.

Can you provide more information about this probe you’re using?

- Jan

Sure thing. The probe is from Parallax and it’s pretty useful:

parallax.com/Store/Microcont … fault.aspx

Why don’t you call it an oscilloscope? With a tool like that, it should be pretty easy to find out what’s going wrong. Can you post some screenshots from that that show what the pulses look like with a servo connected?

By the way, the probes on that are most likely not differential or otherwise isolated from ground, so you should be careful where you are connecting the ground probe. If you connect it to something other than ground, and that other device is grounded, you’re going to get a short through your computer and possibly destroy your oscilloscope or computer. In other words, connecting the ground clip to the red servo wire is a bad habit.

- Jan

Good news! The servo controller is working. It took some time, but I finally figured out the problem.

For my setup, I was running on Linux using ssc-tester, then a python script for testing. Since that wasn’t working, I broke out an old PC and fired up the pololu .net application. That actually worked. However, on that same machine the python script wouldn’t work. So, I was curious as to why, but I couldn’t find the source for your servo controller application to see what serial port configuration may be different.

I ended up trying various serial options in python (making sure the baud is set before it’s opened, etc…). I even hooked up the oscilloscope and made sure the signals were identical. What ended up fixing my problem was simply removing the jumper for DTR/RTS. I still had it in the default position and it seems that the .net servo controller works fine with that configuration. But, I had to remove it for the python and the tcl app to work.

Now that the servo’s working, I’ve already moved on to hooking a motor controller up to it and letting that proxy the serial signals. That too is working fine; all on my Linux machine.

So, today was a good day.

Great! Thanks for letting us know things are working.

- Jan