Additional analog inputs options for Fez Hydra

Hi

For a particular project Im working on we need a lot more analog inputs, on the order of 16 analog inputs while the Hydra only offers 6 analog inputs.

Doing some initial investigation Ive come across 2 main possibilities in terms of expanding the number of analog inputs.

  1. External off CPU A/D with data transferred via SPI, I2C etc.
  1. Multiplexer connected to one of the Hydra CPUs analog inputs, plus a number of digital pins on the Hydra to select the analog channels via the multiplexer.

http://www.sparkfun.com/products/9056

Some differences between the 2 approaches I can think of:

  • A/D resolution
    In the off CPU case you could potentially get an A/D converter with higher resolution compared to the Hydras 10bit resolution.

  • A/D sampling rate
    In the off CPU case you could potentially get an A/D converter with a much higher sampling rate compared to the sampling rate you can achieve with the Hydra.

For my particular project neither the A/D resolution or A/D sampling rates are that critical.

What is fairly important though is how close together the analog channels can be sampled. In the ideal world given what were measuring all the analog inputs would be sampled simultaneously.

Does anyone know what the minimum sampling time between analog channels would be on the Hydra using the multiplexer listed above or even just using the 6 built-in analog channels on the Hydra?

Are there any other obvious or not so obvious alternatives Ive missed?

Cheers

If you need this fro professional use and you need accurate 16bit reading, try to use a specialized isolated analog inputs. Just google it, the internet if full of these http://www.shjelectronic.com/

The 10bit resolution is fine for our specific application.

The main initial question is whether there are any other/better ways to add additional analog inputs to the Hydra.

What you described will work fine. Multiplexer or analog input chip over SPI/I2C

If you need readings from multiple sources as close as possible together then you probably want to look at a separate device that has multiple inputs itself, so you don’t need to “do things” to change the sample like a multiplexer might - internally a lot of ADCs multiplex the line into one ADC anyhow, so that might only provide a small amount of difference. All depends on if you can handle msec’s of difference or not?

The other thing to think about is that if you use an external ADC, you don’t have good old adc.read() to help out, you have to create your own. If you multiplex, you could multiplexer.select(1);adc.read();multiplexer.select(2); etc etc whereas with a separate ADC your ADC read function may be an I2C command and a subsequent I2C read.