Great article on the benefits of ADC oversampling.

 

3689401818?profile=original

 

As you all probably know, the Ardupilot/ArduIMU uses ADC  oversampling to achieve greater than 10 bit resolution of the internal ADC. I beleive they achieved alomost 12 bit resolution- not bad, I'd say.When I discovered this, I started using that approach to increase the resolution of cheap ADC's at my work, saving but loads of $ in the process.

Anyway to any curious parties interested, here is a good article that decribes how its done and why.

improveADCbyOverSAmpling.pdf

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Great article! I am not an electrical engineering, but the essence of the over sampeling is clear to me. Very interesting.
  • I am not sure this is that simple. you have to be careful with that method and understand what you really get. oversampling and doing some kind averaging ( average, median, geometric average...) will help reduce the average error due to noise, it will not increase the accuracy of each sample because in presence of white noise you can be "unlucky" on one individual sample. in addition that technique works better with "slow" signal ( far from the nyquist frequency). a simple example: if your signal is an amplitude A sinus at a frequency close to nyquist a non oversampled signal will give you all the values between -A and A, but if you oversample a lot the resulting "samples" will be between -A/2 and A/2 more or less, so the error will be far bigger with the oversampling. and of course there are also other problems that are not covered here like the non linearity of the code or the impact of the  jitter on the sampling clock...

    So in the right environment and with the understanding of the limits of the method, oversampling and averaging will on average eliminate some noise, but if you want for example to measure a temperature with a 16 bits real accuracy do not think that averaging 64K samples from a cheap 8 bit ADC will do the trick...

    my 2 cents

  • @Nathan

    Cool!Could but could you elaborate on how an increased resolution helps mitigate gyro drift?

  • There was a thread a while back on low gyro drift obtained by ADC oversampling. I've been using this on my sparkfun AVC project and it works well. I sample a gyro at 9.6 kHz on an ardupilot, using the free-running ADC mode. Works like a champ (and runs in the background!)
  • Nice reference for the group
This reply was deleted.