Many inputs arduino board developing?

Hello everyone,
I'm new to arduino but I'd like to create a board with many analog inputs (~200) for a project I'm thinking of.
I've searched a little for something like it and found nothing...
The board will have to get the analog samples, digitize them and give an output through a usb or serial port to a PC. Do you think it's possible?
Where and how should I start?
Thanks in advance.

Arduino has one 10-bit ADC. It has 6 inputs that are multiplexed into it.
What you can do is add additional multiplexers on a shield or a card that you connect to one of the inputs.
Then use digital control lines to select which channel is connected.
What is the level of the signals? All are 0-5V? What are they coming from? The source may also impact the mux chip you select.

http://www.digikey.com/scripts/dksearch/dksus.dll?FV=fff40027%2Cfff802ff%2C20800bc&k=analog+mux&mnonly=0&newproducts=0&ColumnSort=1000011&page=1&stock=1&pbfree=0&rohs=0&quantity=0&ptm=0&fid=0

Paste this together in your browser, will give you examples of 16:1 muxes that are available. You will need 16 chips, and probably use a 17th to feed those 16 into to get down to 1 channel at the Arduino. Each chip will introduce some series resistance, you will need to take that into account also.

The board will have to get the analog samples, digitize them and give an output through a usb or serial port to a PC. Do you think it's possible?

Start with rough estim of through-output of your datalink (115200?) divided by number of channels, see what value of readings per seconds it gives, than compare with your requirements.

You could do this with 8:1 multiplexers (CD4051 is ~$.25 a piece). That would require 6 digital pins and 4 analog pins and 28 multiplexer chips assuming I'm calculating this right.

25 chips * 8 inputs = 200 inputs. 3 digital pins for input selection are wired in parallel across all 25 chips.

3 chips to multiplex the inputs from the 24 chips (the 25th chip can go straight through to an analog input). 3 additional digital pins control the input selection for those three chips.

CrossRoads:
What is the level of the signals? All are 0-5V?

My signals are <1 volt.

I'm going to need the option of high sample rate but I suppose if the hardware can manage, then it's just a programming problem.

Also I forgot something pretty important... All this needs to be done real-time!

Chagrin:
25 chips * 8 inputs = 200 inputs. 3 digital pins for input selection are wired in parallel across all 25 chips.

Since my signal is very weak, I guess I would have to amplify it many times so that this idea works. Wouldn't it cause noise to my signal?

Thank you all for answering and sorry for taking so long for me to answer.

P.S.

Magician:
Start with rough estim of through-output of your datalink (115200?) divided by number of channels, see what value of readings per seconds it gives, than compare with your requirements.

The readings per sec I'll get from my source will be selectable (If I manage to do it correctly) between 300-20.000 Hz.
Hard task, I know. What's the max processing power an arduino board can get?

Thank you in advance.

You could use external 8-channel 12-bit ADC chips for increased resolution without having to add amplifiers/buffers/etc for the signal to survive the analog switches/multiplexing.
4096 steps over whatever range you use for Vref into the ADC.
Chip such as MCP3208 is easy to use, 8 channels, fast SPI interface to sample the 25 inputs quickly. 100K samples/second, 10x faster than the 10-bit ADC of the Arduino.
• ± 1 LSB max INL (MCP3204/3208-B)
• ± 2 LSB max INL (MCP3204/3208-C)

P.S.
Quote from: Magician on April 12, 2013, 11:16:21 AM
Start with rough estim of through-output of your datalink (115200?) divided by number of channels, see what value of readings per seconds it gives, than compare with your requirements.

The readings per sec I'll get from my source will be selectable (If I manage to do it correctly) between 300-20.000 Hz.
Hard task, I know. What's the max processing power an arduino board can get?

115200 kbits it's approximately 10kBytes/sec, so your sampling rate 'd be 10k / 200 = 50 samples/channel x sec,
even if you truncate ADC results to 8-bits. Find a better solution, to filter out information that is important, don't pump dumb data. For example, don't send data if there is no changes from last reading, simplest way of "compression", but it's impossible to give meaningful advise w/o knowing details of your project

What do you think about this: http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11_5&products_id=129 ???
Also, what do you think of the option of giving the computer the data in analog (is there a way to do that through arduino?) or raw digital and then writting a program to do the rest?
And would it be better to have many small ADCs so that arduino's only job is to give the computer all the data or is it able to digitize so much data with minimal noise?

Please note that I'll probably have to amplify my signals before reaching arduino so not much more noise can be tolerated.
All Ideas are welcome!

All Ideas are welcome!

I think it would be a good idea if you came clean and said what your requirements are. Statements like:-

My signals are <1 volt.

Could mean anything from my signal is 0 to 1 V or my signal is 0 to 1.10-12V

Please note that I'll probably have to amplify my signals before reaching arduino so not much more noise can be tolerated.

Is totally meaningless. How much noise can you stand? All signals have noise. Amplifiers will amplify any noise along with the signal. You can get amplifiers that hardly add any noise at all, but as you have not said what the signal level you have.

All this needs to be done real-time!

Another meaningless comment. Any sampling of a signal is done in real time. What you probably mean is that you have a real time requirement which, like the voltage, you are keeping to yourself.

I'm going to need the option of high sample rate but I suppose if the hardware can manage, then it's just a programming problem.

How high is high? Without numbers this is also meaningless. And no it is not a programming problem, it is a hardware problem.

Since my signal is very weak

Does this mean a low voltage or does this mean a high impedance?

Signals like ?V. So amplification is needed. Noise as low as possible.
High is as high as 20.000 Hz but I could settle for lower. It's my goal and my Midsummer Night's Dream.
Aaaand real time is as real as it can get. The less delay the better!
Also, there's a hint somewhere around here about all this :wink:

I'd like to create a board with many analog inputs (~200) for a project

High is as high as 20.000 Hz but I could settle for lower.

OK is that 20KHz for each channel that is 200 channels each being sampled at 20KHz. That is a sample rate of 4MHz.
If so then forget it. the arduino is no where close to being powerful enough to do this or to be involved in transferring the data to a PC.

Grumpy_Mike:
OK is that 20KHz for each channel that is 200 channels each being sampled at 20KHz. That is a sample rate of 4MHz.
If so then forget it. the arduino is no where close to being powerful enough to do this or to be involved in transferring the data to a PC.

Doesn't Arduino run at 16MHz? Also I could use more than one.
Plus 2KHz per channel would be ok too (I know there's a big difference).

Last but not least, I'm also considering other ways to process the signal or to transfer it to a PC but Arduino just seems the easiest yet.

Doesn't Arduino run at 16MHz?

Yes that is the clock speed. Each machine code instruction takes one or two cycles. To do anything at a 4MHz data rate on a 16MHz machine is not possible.

Plus 2KHz per channel would be ok too

So that is a data rate of 400KHz, with two bytes per sample that is 800K bytes to shift around every second. Given that the arduino runs at 16MHz that gives you just 20 clock cycles per byte. You are not going to be able to shift data out at that rate.

but Arduino just seems the easiest yet.

It only seems easy because you know very little about it.

I have talked to some members in P.M. and I think this is a good point to tell you all that the numbers I'm giving are my goals but I'm not actually hoping to achieve everything.
The least I'm thinking of is ~50 inputs with ~300Hz but I'm hoping to get something better, especially at the sample rate because I'm thinking of working with many boards together to achieve my results.
I also know that my skills are probably not enough but I'm the type of guy that needs a project to study and learn.
Sorry for bothering, hoping you can help, arduinoeeg.

After re-evaluating some parts of my project, I decided that it is time for this thread to be locked and archived.
I will try to create something like what I started to do only with less things (due to the cost) and if I encounter any problems, I will just open a new thread so we can solve that particular problem.
In my quest, I've found out about some shields (and other stuff) that might be of help.
Maybe I'll try to reach Arduino's limits.
Thank you all for trying to help,
stubbornly trying not to give up, Arduinoeeg.

P.S. since I don't see any option here, I guess the Admins will have to lock the thread... Right?