Parallax Servo Continuous Rotation and calibration

I was wondering if somebody had used before the Micro Serial Servo Controller with a Parallax Servo with continuous rotation like this one http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/Servo/List/0/SortField/4/ProductID/102/Default.aspx.
There are 2 interesting issues.
The first one is the calibration:
Calibration requires a 1.5 msec pulse with a refresh of 20 msec.

Once you get the servo steady, a decrease of the pulse 1.5 msec will increase the speed of the servo clockwise and viceversa if the servo increases the pulse of 1.5 msec will increase the speed in the anti-clockwise direction.

So I want to ask if my approach is correct for the calibration, I should send a pololu command 1 with speed byte equal to 32 which is about 127/4.
But what should I put on command 0?
Range and direction are my unknown variables.

Hello.

We carry the Parallax continuous rotation servo, too, though you might also want to consider the SpringRC continuos rotation servo, which costs a bit less and has ball bearings on the outputs.

You should look online for some information about continuous rotation servos so you better understand what is going on. Basically, they just have their feedback system disconnected, so they keep turning since they keep thinking they haven’t gotten to the target position yet. What corresponds to a position with a normal servo gets converted to speed on the modified servo. The speed commands on servo controllers actually just gradually move the target position, so in the case of a modified servo, the speed setting will affect your acceleration instead. For the most part, you can ignore the speed setting if you’re just using continuous rotation servos, though you can play with the setting to see what it does. You can mostly ignore command 0, too, though again, you can play around with it to see how it scales how your commands get mapped to different speeds.

So, the main thing you need to do is to issue a “set position” command. For whatever command you use, you should send the middle position (e.g. a value of 63 or 64 in 7-bit mode or 127 or 128 in 8-bit mode) to do you calibration. For continuous rotation servos, there probably isn’t even much point to a lot of the higher-resolution commands, so you might be best off with the simpler Mini SSC II protocol: just put on the jumper, and send 0xFF (decimal 255), your servo port number, and 0x7F (decimal 127) to get a 1.5ms pulse out on that pin.

One last plug, for you and anyone else reading: the newer Micro Maestro USB servo controller is much, much better than the older micro serial servo controller, and with the free control center software, it’s very easy to play around with all kinds of settings and servos by just clicking buttons and moving around scroll bars.

- Jan

O yes thanks a lot for tips.
Actually I couldn’t find any proper tutorials online about servo motor theory and applications, but I guess I need to dig more into the manufacturers datasheets like Futaba.
I’m using the micro serial servo because is connected to an atmel.
This brings a second question: do you have some 3.3 serial motor controllers?
The micro serial is tolerant to 3.3 logic levels but it will be good to have also a 3.3 Vcc supply, because now I’m using some low power circuits at 3.3V.

Yes with the Mini SCCII protocol the servo works properly.

For the tutorial search, you should look for terms like “hobby servo continuous rotation modification”, not “servo motor”, which will get you many industrial results just about motors made for servos, which is not what you’re looking for.

You can connect the Micro Maestro directly to microcontrollers, too. For those applications, the USB port is just an additional option that lets you easily test operation or set configurations.

For the 3.3V operation, are you really asking about motor controllers, or are you still talking about servo controllers? We don’t have any servo controllers explicitly made for 3.3V operation, but the Micro Maestro has a brownout reset set to 3.0V. You could connect 3.3V to its 5V (out) line to get directly to the logic supply node, and it should work.

- Jan

I should add a note that you should not connect any other power sources (e.g. USB, external connection to VIN) if you make that 3.3V connection since doing so would put 5V on your 3.3V node and possibly destroy other components powered by your 3.3V line.

- Jan

The configuration:
GND -> GND
VIN -> 3.3V
SIN -> Logic 3.3 TX
OUT -> Logic 3.3 RX
RST -> Logic 3.3 digital out
doesn’t work, it’s either not enough current provided by the controller or because it has to be 5.0V

This configuration works:
GND -> GND
VIN -> 4.7V
SIN -> Logic 3.3 TX
OUT -> Logic 3.3 RX
RST -> Logic 3.3 digital out

I managed to reset the module with the RST signal,
doing LOW HIGH LOW, but I’m still interested in the parameters.

Yes for the 3.3 I was asking for servo controllers, but since this one works I’m fine for the moment.

I was saying to put the 3.3V on the regulated Vcc node, which is accessible at the “5V (out)” pad. If you connect to VIN, you lose voltage on two diodes and a voltage regulator, and you end up with much less than 3.3V on the microcontroller.

- Jan

O I totally ignored that pin!
I’m going to try it.

O wait, so you are suggesting to use the Out pad which I’m now using as the RX to as the Vcc?
[pololu.com/catalog/product/207]