Best Pololu product for analog input

I have two micro-maestros and I am successfully using them as analog inputs over USB right now, however there seems to be a lot of noise on the lines. Even using a battery as a voltage source causes some fluctuation on the target line, and up to 25% on the neighboring lines even with nothing connected to them.
Is there a good way to eliminate this cross-talk, or is there another Pololu USB product that would perform better? I really like the USB interface that you offer, and I have been able to get very good update rates, but the noise limits me to one usable analog input.
I have been thinking about purchasing a wixel; would that produce better results?

Hello, ChrisBob.

How much noise are you seeing? With a steady voltage, what is range of readings you get from the Maestro?

Because of the way that ADCs work, an input line with nothing connected to it (floating) will be affected a great deal by the voltage of the line that was previously read by the ADC. The Micro Maestro reads the analog inputs in order by channel number, so if all the channels are configured as inputs and channel 1 is floating, the reading on channel 1 should be affected a lot by channel 0, but not affected very much by channel 2.

Here’s something you could try with the Micro Maestro: Configure all the channels as inputs. Connect channels 0, 2, and 4 directly to GND. Connect channels 1, 3, and 5 to the inputs you want to measure. The grounded channels should serve to reset the ADC’s capacitor to 0 V. If you try this please let me know how it works!

What is the impedance of the analog outputs you are trying to measure? A lower impedance should help.

By the way, the Maestro has 220 Ohm resistors on its channels, which makes the situation a little worse.

If the suggestions above don’t solve your problem, then maybe the Wixel will work better for you. Everything we know about the accuracy of the Wixel’s ADC is in the CC2511 datasheet, so you should read it and see if it matches your requirements. Please note that the Wixel can not tolerate voltages over 3.3 V.

We provide a test_adc app in the Wixel SDK which reads voltages on the 6 inputs and streams the results to the computer over a virtual COM port, either as a bar graph or in CSV format. That app probably has the same issues that the Maestro has, but you can modify the source code to make it better. For example you can add some dummy readings of the GND between the readings of the inputs. The CC2511 internally connects GND to one of the ADC inputs, so you would not have to sacrifice any pins on the Wixel to do this (just add “adcRead(12);” to the code in the right place). You could also add code to take multiple readings and average them together.

What kind of ADC resolution do you need? I expect there to be dedicated ADC chips available that are better than the ADCs on the Wixel or Maestro.

–David

David,

Thank you for your reply. I had not considered the issue of floating inputs, and once I get a test setup again I am confident that will help.
I have actually been surprised to find that I can’t come up with another ADC option. I don’t need very high quality, and even 8 bit and 20Hz would be plenty; plus I have already learned to communicate with the maestro controllers over USB, so I get to use what I already know. $20 is really hard to beat even if it not exactly the application you had in mind when you designed them.
For me one of the biggest features of the maestro devices is that you publish the usb commands so that I can use libusb, or even a custom linux device driver to communicate with the devices. It looks like there is not a USB SDK for the wiexl so I will stick with the micro meastro for now.

Maybe you should add a combination DAC ADC to usb device to the lineup. Most options on the market are in the $100 range with 10+ channels. There is no good cheap option in the 2 inputs, 2 outputs range.

-Chris

I’m glad you like the Maestro so much!

We don’t have a USB SDK for the Wixel because none of the apps have a native USB interface like the Maestro’s. Most of them emulate a virtual COM port. This virtual COM port is just like the Maestro’s Command Port and TTL Port, which are probably /dev/ttyACM0 and /dev/ttyACM1 on your computer. There is no need for an SDK because almost every programming language has a way of sending and receiving bytes from a serial port. To see how to do it with C in Linux, check out this post:

That code was written for the Maestro, but the methods shown for opening a serial port and sending and receiving bytes on it are general.

If you try the thing I suggested about having dummy inputs tied to ground, let me know how well it works!

–David