Chumby, MicroMaestro and No Motor Action

I’ve been working with a Chumby hacker board and a 6 channel Micro Maestro, but have yet to get any of the servo motors I have tried to do anything. I originally tried the serial USB protocol and /dev/ttyACM0. The data was sent correctly as best Linux could tell, but the yellow blinking light on the uM never showed that it had derived the port speed and no motor ever reacted, so presumably the 0xAA was lost. I also tried the compact version of the protocol with no better effect. (Yes, I checked my regulated 5V 2A power supply and it is producing 5V current. Yes, the three servo motors have all been plugged in correctly.)

Next I tried using libusb-1.0 and some simple C programs. Here I seem to be communicating with something. I can set servo targets and when I get parameters, the targets seem to be set. Unlike the USB serial interface, something seems to be out there, but no set of target values seems to cause any of the motors to do anything, not a whir, not a budge.

I don’t have a PC and the Linux on the Chumby doesn’t seem able to run the Pololu control program, but I’d like to reset my uMaestro back to factory settings and confirm that all of the ports are in servo mode. It is possible that I accidentally mucked up some parameters. What is the proper way to do this using libusb-1.0? I’m not sure of the proper REQUEST_XXX and what parameters it would take. Is there some more complete documentation on this?

P.S. I really like your little FORTH interpreter. If I can get a motor to spin, maybe I’ll explore a bit. Great ideas never die.

Hello,

If the yellow LED is indicating that it has not detected the baud rate, you are in a UART serial mode, which means that the Maestro is expecting data on its RX line rather than USB. In addition, since it is waiting to do a precisely timed baud detection, it will not be able to send any servo pulses. You should switch to USB Dual Port mode to control the Maestro with USB.

If you do want to reset the settings with your own code, you will need to set the parameter PARAMETER_INITIALIZED to 0xFF. You should be able to see this in the method restoreDefaultConfiguration defined in Usc.cs.

I recommend finding a Windows or Linux PC somewhere, resetting the parameters there, and getting the Maestro working on with our control center first before moving to the Chumby. But it sounds like it is going to work for you, and I am really interested to hear whether you manage to get it working and would be happy see some more details, like pictures, code, etc., if you want to share! What is your goal with the project?

-Paul

Thanks for the hints.

I guess if I am using the USB interface instead of TX/RX, then that yellow LED will be blinking. I noticed a number of posts asking how to turn it off, but it doesn’t bother me.

If I want to reset the board, I need to use:
controlTransfer(0x40, (byte)uscRequest.REQUEST_REINITIALIZE, 0, 0);
not:
controlTransfer(0x40, (byte)uscRequest.REQUEST_REINITIALIZE, 0, 0);

Thanks for the hints.

I guess if I am using the USB interface instead of TX/RX, then that yellow LED will be blinking. I noticed a number of posts asking how to turn it off, but it doesn’t bother me as long as it isn’t indicating a problem.

So, if I want to reset the board, I need to use:
setRawParameterNoChecks((byte)uscParameter.PARAMETER_INITIALIZED, (ushort)0xFF, 1);
not:
controlTransfer(0x40, (byte)uscRequest.REQUEST_REINITIALIZE, 0, 0);
I assume the former resets the parameters, but the latter resets even more stuff. Is this correct?

I am still puzzled at the lack of motor activity, so I’ll bare my massive ignorance here. I am using two regulated 5V 2A power supplies. One powers the Chumby hacker board which in turn powers the Pololu MicroMaestro via the USB connection. Mindful of the power budgets of the Chumby, WiFi card and the motors I will be driving, I use the other power supply to drive the servos. These are two separate AC to DC power supplies with no grounding plugs.

Do I need to connect the ground line that powers the servos to a ground line that sets the ground for the MicroMaestro? I’m a software guy, but the lack of a common ground seems kind of strange. Could this explain why no motor ever runs? Is it even safe to make that connection or is this a good way to test my home’s sprinkler system? Should I consider using the second power supply to power both the MicroMaestro and the servos?

Yup, that’s massive ignorance, right there.

(Yes, I know, I could have hunted around for a larger single power supply, then gone to a dozen different suppliers to get all the little jacks, pins, prongs and forks that I’d need to drive everything from the same supply. WIth a little bit of soldering, even I could figure out how to do this, but it was so easy to hook up two power supplies I had flopping around.)

I may be getting slightly less ignorant.

From: arduino.cc/cgi-bin/yabb2/YaB … 1282129381

I’ll give it a try.

Hello,

All of the grounds on the Micro Maestro are connected already - you should connect all of your grounds to the board, but you should not need to make any connections between multiple ground pins on the board.

And I still highly recommend that you find a PC and get it working there first!

-Paul

You were absolutely right about the ground.

My problem seems to have been that the serial interface was waiting for an autospeed byte. Since I was using the USB interface, not the RX/TX serial connectors, this meant that nothing was going to happen. Needless to say, this was prominently noted in your manual. I just had to read the thing.

I still haven’t gotten a PC. I wrote a little Mac program that lets me FTP and SSH to a Chumby Hackerboard controlling the microMaestro and used that and the Falconwing toolkit to put together a little server for controlling the servos. I drive that from a client written in RealBasic on my Mac. It’s great having Linux on a hobbyist board.

In any event, I copied your PC/Maestro interface to some extent so I can set the various configuration parameters and variables.

I am still curious about your Forth program representation. Do you send bytecodes to the controller or the actual source code? I’m guessing bytes, but even a NAND gate seems to have a few billion computrons built in nowadays.

Hello,

It’s in our manual, but lots of people miss it. I also pointed out that problem to you in my original response - did you misread it somehow?

Anyway, the Maestro scripts are indeed compiled and sent to the Maestro as bytecode, which makes it a lot simpler than a forth interpreter. If you ever find a PC, you will be able to see the bytecode generated by your script by clicking the “View Compiled Code” button on the script tab of the Control Center.

So are you moving servos with the Chumby now?

-Paul

Yes, I am. I have a couple of servos that are dancing nicely.

I still have some issues driving what seems to be a non-responsive “sailing winch” motor, but these may be related to my problems setting and getting the speed and acceleration. If I do a get_variables, I get one set of speeds and accelerations from the servos, but if I do a get_parameter for each servo speed and acceleration separately, I get different numbers. I’m guessing that I’ll get this sorted out soon, and it may help me figure out what is going wrong with the winch motor. Is there a code sample for setting up a rotation with it?

Eventually, I will hunt down a PC, but I might check out your software under WINE first. I already have too many computers acting up around here, but I suppose there is always room for one more.

Hello,

Have you looked at the code in our USB SDK? Beyond that I am not sure what you are asking for.

It is very unlikely that you will get the Maestro Control center to work under WINE. Are you sure that among your “too many computers” you don’t have a single Linux or Windows PC? Being able to check things in the control center would probably help you immensely with the configuration and testing process.

-Paul