I'm still learning the intricacies of electronics and though I have accomplished some basic tasks, circuit design is still daunting. I have an accelerometer and would like to know if the ADC I have chosen is appropriate.

Specifically the idea of my input's impedance is not clear to me. I know it relates to the current my signal can produce but I can't figure out how to calculate the necessary/available current from the data sheets.

I plan to sample the sensor at 12kHz (2x the output frequency). I think the suggests that my clock will run at about 1MHz (24bit x 12kHz).

• The natural frequency of the Accelerometer is 6000Hz, Does this refer to all three channels refreshing at 6000Hz or will the refresh rate be distributed among each channel (XYZ = 2000Hz effective)?
• I need to oversample the signal by 2x I think, so a similar question follows for the ADC. Does the 100ksps get distributed among each analog input, or can I sample all 4 inputs at 100ksps?

References and corrections are welcome!

Edit: It is an expensive sensor because I am trying to characterize an impact on the order of 500g and with duration of 3ms. For a CV of 10% I need about 10 samples in that time which is 3kHz. If a cheaper sensor exists I will gladly use it.

• does it accelerometer output data at 6000Hz? that rate could be internal and may have some DSP done.. Feb 5, 2017 at 7:15
• oh, nevermind. it's an analogue output. Yes it looks like it will provide accurate signals for acceleration events up to 6000Hz per channel as far as i can tell from the datasheet Feb 5, 2017 at 7:17
• That's a very expensive accelerometer by the way. And the ADC is an "8 Input 1 SAR", meaning 8 multiplexed channels going into a single "Successive approximation" style of ADC. Feb 5, 2017 at 7:19
• regardin impedence, it has < 100 ohms output impedance on the X Y Z outputs. This is pretty good, and tells me that it has internal output buffering of some form. This means you don't need an op-amp buffer or anything to drive the ADC. Feb 5, 2017 at 7:21
• The 6kHz is it's frequency response, so it'll respond to signals in the range of 2-6000Hz irrespective of which axis you're sampling. The 100ksps is the total sampling rate, the datasheet has a block diagram of the ADC which shows that all the inputs go through a switch array before being fed to a single ADC core, but it's a bit vague as to whether you can choose which inputs you sample or whether it just samples them all in sequence.
– Sam
Feb 5, 2017 at 7:22

For your task, that ADC will work. The sampling rate of the ADC, provided that you clock it at least 2Mhz (F_Freq * 20 clock cycles is the sampling speed, so for the 100Khz you need a clock speed of 2Mhz).

The output impedance of the Accelerometer is less than 100 Ohms, meaning it's been buffered internally. This is perfect for feeding an ADC directly, which i'm sure was what it was designed to do (and it's expensive!). The input capacitance of the ADC chip is the combination of C-in_pin = 7pF and C_sampling = 20pF. If you look at the 100 ohm output impedence with the 7pF input capacitance as a low-pass filter, the rise time of a signal is 0.7 nanoseconds. The rise time of the much larger sampling RC network of 1K ohms and 20pF is still 20 nanoseconds, which is fine for your relatively low speed application.

Usually if you have a resistive network or a passive sensor with something like 10-100k output impedance, this is when you run into issues and need to use op-amps to buffer the signals before driving an ADC like this. Otherwise what can happen is the sampling capacitor never quite reaches the steady-state "DC" value of the signal for that sampling interval and you get incorrect data.

The Accelerometer provides accurate analogue data on all three channels up to 6000 Hz, meaning if you were to sample at 12Khz x 3 channels (36KHz total bandwidth on the ADC) then you will successfully capture the data from the chip.

If you are okay with sampling at a higher rate, for example ~25Khz per channel, I think you'll get better data (resolution of the waveform) and also have some spare samples for averaging.

The ADC is a successive approximate ADC, and it has 8 input channels which are multiplexed into a single converter. The converter is clocked by the SPI bus which drives the sampling process. Chapter 6.3 on the ADC's datasheet (page 22) talks about buffering and anti-alias filtering for inputs to the ADC, if you have a high impedance source (which you don't in this case). The anti-aliasing filter can still be a good idea if you wanted to do a simple and cheap op-amp with low-pass filter with a cut-off frequency that won't affect your real signal, but will stop higher frequency signals making their way into your conversion results.

You can request any channel to be converted at any time, at the start of your SPI packet. So if you only use 3 channels, only request conversion of the 3 channels of interest. See the serial comms section for the details.

• Great information, thanks. You mention oversampling the signal by 4x the response frequency - can you clarify the reasoning behind this? My interpretation is that the response frequency of the sensor refers to the fastest signal it can "see", but in the case of lower frequency signals the analog output still contains information at higher than 6kHz.
– nate
Feb 5, 2017 at 19:21
• Also, thanks for clarifying the use cases for a pre-ADC amp. That was confusing in my reading as many of these design questions are nuanced and hard to tell if they are necessary.
– nate
Feb 5, 2017 at 19:22
• @nate you can read the general benefits of oversampling from this texas instruments app note and also the general article on wikipedia. The thing is, if your application doesn't need super perfect readings then you would be served well enough by simply sampling at 12Khz as you intended. It will certainly use much less processing time for your microcontroller. Feb 5, 2017 at 21:27
• @nate also, to clear up the sensor analogue outputs - they are a continuous signal output, you can sample them as much as you want, however it has a "flat response" meaning accurate, up to 6Khz. It can successfully 'sense' real acceleration forces that occur up to 6Khz. it can sense more than that, but it is likely less and less accurate/sensitive as you go higher up in frequency Feb 5, 2017 at 21:47

The ADC's equivalent input current is F * C * V; at 12,000Hertz, with capacitance of 27pF (to be charged or discharged as the Mux switches) and 5 volts, we have 12,000 * 27e-12 * 5 = 60 * 27 *1e-9 ~~60*30e-9 = 1.8 microAmps. The charging surges still exist, and they may or may not UPSET the sensor's buffer and make that buffer ring. An RC lowpass between MUX and ADC reduces that error. Or, since the MUX has moderate resistance itself, just place 100 or 1,000pF on MUX/ADC shared node. [At some high value, this capacitance may cause the Buffer to oscillate. No one claims high-precision analog design is trivial]

 OpAmps have "inductive output impedance" because as frequency rises the opamp has less and less control over its Vout. Assume Lout is 100 ohms, at UGBW. If UGBW is 1MHz, you need 16uH [16uH * 2*pi*1MHz = +J100 Ohms] in your OpAmp model. Place 1uF to GND, and you have a resonator at 160KHz*1/sqrt(16) = 40KHz. To dampen, use formula R_dampen = sqrt(L/C) = sqrt(16uF/1uF) = 4 ohms. Go for higher R values, and ease the load on the OpAmp in trying to charge 1uF.