I’ve found some strange behavior with the Micro Serial Servo Controller when using the Set Position, Absolute command (code 4). It sure seems like a bug in the controller firmware, but I haven’t fully pinned it down yet, so I’m hoping someone here (or someone at Pololu!) will be familiar with it.
I set a series of positions, all in absolute mode, and all values between 2000 and 4000. At first, a position like 3000 works fine and does what I expect. But then at some point, the command puts the controller into what I’ll call “bug mode,” and the servo does TWO motions: a quick movement through about 60 degrees and then back to a position that is only remotely related to the position I asked for. The yellow LED comes on at this point.
Now here’s the really weird bit: once in bug mode, I can go back to positions that worked before (e.g. 3000), and they do the same thing. This persists until I reset the controller.
No, I take it back; here’s the really weird bit. The servo that goes into bug mode (and does the weird double-motion-ending-in-the-wrong-place thing) isn’t always the same servo as the one receiving the command. For example, I just set servo 6 to position 3250, and it moved properly, but servo 2 went buggy. In fact, so far, it seems to always be servo 2 that goes buggy (but I only have servos plugged into 2, 3, 6, and 7).
Note that when I use command 3 (Set Position, 8-bit), none of these problems seem to occur. So that might serve as a work-around… but I’d really rather use command 4.
I’m communicating with the controller at 38400 bps. And, in case there’s something wrong with my code, the command block I’m sending to set servo 6 to 3250 is (in hex): 80 01 04 06 19 32. So you can double-check that this is correct Pololu serial-speak.
So. Has anyone seen this sort of behavior with the MSSC before? Jan, any ideas?
Thanks,
- Joe