Author Topic: Enhancing ADC resolution with Dithering & Oversampling​​  (Read 1511 times)

EdM

  • NewMember
  • *
  • Posts: 33
Enhancing ADC resolution with Dithering & Oversampling​​
« on: February 27, 2017, 03:24:36 PM »
I could never find any decent explanations of how to do oversampling with an Arduino, so I decided to do something about it:

https://edwardmallon.wordpress.com/2017/02/27/enhancing-arduinos-adc-resolution-by-dithering-oversampling/

The cheap 3.3v promini clones I was using to sort all this out probably don't have the best filtering caps on the regulator. But you should be able to tune the pin current to make it work on Moteinos without much effort. 

I think pin noise is the better way to produce the dithering, but I'd love to hear from anyone who sees a problem with the basic idea that I have not thought about.  For example: Will toggling a port that fast hurt the processor in some way?

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab
Re: Enhancing ADC resolution with Dithering & Oversampling​​
« Reply #1 on: February 28, 2017, 01:36:58 PM »
Great in depth article, I'll have to go back to digest details :)

EdM

  • NewMember
  • *
  • Posts: 33
Re: Enhancing ADC resolution with Dithering & Oversampling​​
« Reply #2 on: March 26, 2019, 11:33:56 AM »
I've been oversampling thermistors with the pin-toggle noise technique for a while now, and that method is solid. But lately I've been noodling around with a new approach that reads therms using the Input Capture Unit on pin D8.

https://thecavepearlproject.org/2019/03/25/using-arduinos-input-capture-unit-for-high-resolution-sensor-readings/

This time-based method delivers more resolution than 16-bit oversampling of the ADC, is about 10x faster, AND I get to sleep the processor during the reading. The process is ratiometric, but as with the oversampling, I'm still leaning a bit on the S&H constants to absorb the miscellaneous temperature coefficients from the other parts of the system. 

Still, it's another easy high-rez technique that could be implemented on any AVR processor.