Page 1 of 1

Getting extra ADC resolution with Dithering & Oversampling

Posted: Mar 3rd, 2017, 12:48 pm
by EKMallon
I've been playing with thermistors, and after much trial and I error found that simply digital toggling a pin with the right size resistor connected to ground gives you enough noise to make oversampling work well with 3.3v promini style boards:

https://edwardmallon.wordpress.com/2017 ... rsampling/

The overhead for adding 2-4 bits of extra ADC resolution is pretty small, but the 4n power relationship balloons up quickly after that. Personally I think the sweet spot is oversampling for 4 extra bits with 256 readings. Anyway, this should work with any resistance based sensor, provided there are no capacitors nearby to squelch out your noise signal.

Re: Getting extra ADC resolution with Dithering & Oversampli

Posted: Feb 25th, 2019, 1:19 pm
by EKMallon
Ok, so my primary reason for the oversampling was to get high-rez readings from a thermistor to monitor ambient temp with our datalogger. Turns out you can use a Pro Mini (or any other Arduino with an Atmel processor) to measure temperature using only the mcu.

https://thecavepearlproject.org/2019/02 ... or-better/

I think this is the best "No-Parts" temperature method I ever noodled around with, and it generalizes to any other processor with a hardware driven watchdog timer. Should be easy to adapt for other projects.

Re: Getting extra ADC resolution with Dithering & Oversampli

Posted: Feb 26th, 2019, 2:19 am
by Oldsirhippy
Thanks for that information - it looks like an great way to get good results. I'm going to give it a go.

Re: Getting extra ADC resolution with Dithering & Oversampli

Posted: Mar 27th, 2019, 9:43 am
by EKMallon
Lately I've been noodling around with another method to read thermistors using the Input Capture Unit on pin D8.

https://thecavepearlproject.org/2019/03 ... -readings/

This time-based approach does not use the ADC at all, delivers better resolution than 16-bit oversampling about 10x faster, AND I get to sleep the processor during the reading to save power. The process is wonderfully ratiometric, but as with the oversampling approach, I'm still leaning on the S&H constants somewhat to absorb the misc. temperature coefficients from the other parts of the system.

And the method could be used with just about ANY resistance based sensor.