help with ADC's!

Hi, I just acquired my arduino and am starting out with my project (no prior electronics experience, some programming but never interfacing with hardware).

I did some research and found that the arduino AD isn’t fast enough for me. I need at least 200 kHz sampling rate to acquire data from my 3 piezoelectric sensors (sensing vibrations though wood).
I went to the texas instrument site and selected the analog - digital search thing. It’s actually really nice: http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=analog&familyId=2019&uiTemplateId=NODE_STRY_PGE_T .
Im wondering how I would connect the AD to my arduino and what kind of interface it should have. The options are parallel, serial, SPI, and many more. Also I’m confused on the multi-channel AD’s.

Just taking one I found (assuming my serial connection guess was correct), http://www.ti.com/product/ads7230. I looked at the circuit-like diagram and got confused… So there are two analog inputs, IN0 and IN1. Where does the output come out? is that the SDO pin? How do I get data from both analog inputs from one pin :~. If someone can explain or point me to an explanation of the other pins in the lower right hand corner I would be immensely grateful too :slight_smile:

Sorry about the barrage of questions :grin:

Thanks!

You might try a simpler part to interface with to start.

http://www.linear.com/product/LTC1297

You can just ground the -Input.

Read the data with 2 SPI.transfers, need SPI.begin in void setup(). Connect signals to SS (chip select), SCK (clock), and MISO (data out)

digitalWrite (CS, LOW);
delayMicroseconds(3); // pauses for 3 microseconds
// or find some dummy instruction that takes 300 nS (5 clock pulses)
byte1 = SPI.transfer(); // syntax might need tweaking
byte2 = SPI.transfer();
digitalWrite (CS, HIGH);

dataword = byte1<<8 + byte2; // put the bytes together - I might have them swapped.

I need at least 200 kHz sampling rate to acquire data from my 3 piezoelectric sensors (sensing vibrations though wood).

Is that 200KHz per sensor, if so that puts up the data rate to 600K samples per second. What will you do with all that data, the arduino has a very limited amount of memory.

what accuracy do u need?
the arduino on-chip ADC needs just 13 clock cycles for 1 conversion…
at 16MHz u can possibly do about 200k samples per seconds (guaranteed is a minimum conversion time of 13usec → appr. 77kS/sec)…
but the accuracy will be less than 10bit… :slight_smile:
u could start with
ADCSRA &= ~(1<<ADPS1);
(that should give u a 4 times higher conversion rate)…
but possibly the ADC would get damaged/overheated…

switching from one ADC input to another takes some time… and the first conversion will be bogus…

i dont know if SPI (serial transfer) is much faster than the on-chip ADC, because: arduino needs at least 2 clock cycles per bit…

and the first conversion will be bogus...

Not true if the voltage source impedance is 10K or less.

Not true if the voltage source impedance is 10K or less.

oki… and the reference voltage should be stable (which is not necessarily the case after a change…)…