100+ analog inputs on a microcontroller

Hi,

For some time now I have been using 14 analog inputs for reading force sensors with a MEGA to map the pressure distribution of an object on the sensors, but now I need to use 100 sensors and was wondering if you guys had any ideas?

At some point you reach the limit of what an onboard ADC can do and you must go with faster external part.
What's your time allocation for performing these 100 reads?
For example, you can get 10-bit, single supply ADC that will do 200million samples/second,
so I imagine the limit there will be the speed of your interface to the chip.

I also imagine obtaining that speed is going to be pretty difficult across 100 inputs without some really fast multiplexing chips.

If you can define the speed you want to operate at, we can help define a hardware method to get there.

Thanks for your reply, I'm looking to get around 40 analog reads per second on each sensor, so 4000 total per second. However, I'm also looking to improve the resolution to 16 or 32 bit. I'm also wanting to send this data wirelessly (hence battery powered) via xbee or something similar to a PC to process all this. I could just scale up by having 10 MEGA's but then theres the hassle of synchronising them all and then connecting every MEGA wirelessly to a single PC.

Do you have any pointers in terms of known hardware that could do this?

Thanks

You speak of wirelessly, how far apart are these 100 locations, and the base computer?
What kind of project is this anyway (if it is not secret)?

Sorry for the confusion, all sensors to be connected into a micro-controller (wired), which then communicates to a PC 10 meters away within line of sight.

32 bit ADC? I don't think that even exists. 24 for sure, but you need a really good electrical design to not have the lowest bits wiped out by noise.
Digikey shows two 31-bit parts that are ridicuoulsy expensive

I have another thread where I am reading 16-bit audio at 44,100 (sampling every 22.676uS) and storing to SD card, do a search on "16 sample and playback", will pop right up.
Your big problem will be finding analog switches that can change fast enough to let the data settle from read to read.
100 channels means 7 16-channel muxes going thru a 2nd 8 channel mux to present 1 signal to a 16 bit ADC.

Maybe a better bet would be eight 16 channel muxes each feeding 1 channel of an 8-channel ADC, can command channel 1-16 on all muxes, then go back and read one at a time so that all would have plenty of settling time.
http://www.digikey.com/product-detail/en/ADS1178IPAPT/296-22952-2-ND/1770128 16 bit
http://www.digikey.com/product-detail/en/ADS1278IPAPT/296-21983-1-ND/1642940 24 bit
http://www.digikey.com/product-detail/en/ADG406BNZ/ADG406BNZ-ND/820059

Lets do the math for 96 channels, 16 muxes into an 8-channel ADC.
If you read in 192 bits of data (24*8, 24 bytes), select the next analog channel and send the 24 bytes out, using 8 MHz SPI speed:

192 bits at 8 MHz read speed = 24uS to read them all in.
Sending out 24 bytes = (24*(8+2)) = 240 bits at 115200 = 2083uS.
Update 1 output register to increment from 0,1,2,3,4 ... will take 2-3 clock cycles.
So 2107uS, 2.1mS per 8 channels. x 16 = 33.7mS for 96 channels
1/33.7mS = ~29.6 samples/sec per channel.

The holdup in this example is the wireless transmission.
The 16 MHz AVRs will do 230,400 cutting the 16 channel frame time to 1065uS.
x 16 = 17.05mS
1/17.05ms = 58.65 sampels/sec per channel

So you need a pretty quick wireless interface. How fast does xbee go?

This should get you there for wireless

72 Mbps data rate. Looks to have plenty of transmit power as well, so 10 meters would certainly seem within range.

Wow! Thanks for all the information, yes the Xbee wifi is plenty fast, but is there a micro controller out there that can handle all of this, especially with all the multiplexors that can run off a lithium battery? After reading up, 16 bit is all that I need (thanks for pointing out possible noise issues)

"but is there a micro controller out there that can handle all of this"

Didn't I just finish demonstrating that a 16 MHz processor could handle it?
You could do it with an Uno even, as there is not that much data to handle. With 16-bit ADC there is even less than with 24-bit, so that would allow even faster sampling rates.

How many volt Lithium?
3.7V - would need a boost converter to get 5V for the 8-channel ADC and 16 MHz range.
7.4V, 11.8V - regulate down to 5V. Linear regulator probably best in this situation to avoid possibility of adding switching regulator noise into your circuit.

As I posted:

Maybe a better bet would be eight 16 channel muxes each feeding 1 channel of an 8-channel ADC, can command channel 1-16 on all muxes, then go back and read one at a time so that all would have plenty of settling time.

http://www.digikey.com/product-detail/en/ADS1178IPAPT/296-22952-2-ND/1770128 16 bit
http://www.digikey.com/product-detail/en/ADS1278IPAPT/296-21983-1-ND/1642940 24 bit
http://www.digikey.com/product-detail/en/ADG406BNZ/ADG406BNZ-ND/820059 <<< 16 channel analog switch with 160nS channel switch time

Thanks for making that clear, I'm very much a newbie but now glad that even my MEGA can cope with this! I was anticipating a very expensive processor to deal with all the multiplexors and switching. Thanks for the links and all your replies!

No problem.
Still looking pricey with 8 16-channel muxes and 8 channel ADC.

(wrong link earlier - this is the 1-lot, the other is 250 -lot)

You may add it up and decide to go with 16 channel muxes into another 8 or 16 channel mux and then a fast single channel 16-bit ADC.