ServoMaster: Observations on Parallax Servo Controllers


There are two controllers: serial and USB. Like Pololu, Parallax USB controller is basically a Parallax serial with Serial/USB bridge on top of it. Unlike Pololu, Parallax USB uses a well supported FTDI FT232BM chip, well supported by Linux community.

Both of them share the same protocol, so the driver doesn't have to be changed.

Supported Features
Individual Servo min/max preset
Hardware controlled constant velocity transition, per servo

Common Features

Good Things

  • Status feedback - this is the only controller that supports it (to the best of my knowledge);
  • Moreover, real time status feedback for hardware supported transition - if you command the servo to start the transition, and then keep reading its position, the controller will report the real time position information back to you - this is really cool;
  • Precise. The position unit is 2µs, which should be enough for most applications;
  • Fast. The baud rate may go as high as 38.4K.
  • Stackable. You can connect two controllers to control up to 32 servos.

Bad Things

  • You have to be careful with the baud rate - selection once the controller is configured to work at 38.4KBaud, there's no going back until after hardware reset. This may require jumping through extra hoops to ensure the mission-critical application is able to properly reinitialize the controller driver on a subsequent startup without someone actually pressing the reset button on the controller - that would be pretty inconvenient.

  • Warning
    Careful with your servos

    Controller has a strong timing bias towards the high end. Timing range is 500μs to 2500μs, which makes the servos that I have (admittedly, there are no two identical ones) undershoot a good 30° turning clockwise, and overshoots turning counterclockwise.

    One Parallax servo went growling at 1878μs, and Futabas I have have done the same at 2315μs, 2185μs, 2352μs, 2222μs, 2260μs, 2212μs, 2132μs, 2335μs, 1190μs, 2337μs (92.6%, 87.4%, 94.1%, 88.8%, 90.4%, 88.4%, 85.3%, 93.4%, 79.6%, 95.1%, respectively). None of the servos growled at the low end.

  • As expected, USB disconnect is not possible to handle gracefully. If the process is still holding the handle, the reconnected USB device allocates the next available serial port name. It is, I guess, possible to pig the port once in a short while and fail once the port is gone, but reliable reconnect in case when more than one USB to serial adapter is present is out of question - unless there's a way to lock a device to a port, which I a) doubt b) have to read up on.

More Good Things To Come

I thought that the Parallax driver was more or less finished, turns out, far from that. The current plan is to implement advanced controller features during next several days - keep watching the downloads area and the news channel.

To be continued

More to come after the device actually gets tested - which is, hopefully, pretty soon.