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.
Getting extra ADC resolution with Dithering & Oversampling
Re: Getting extra ADC resolution with Dithering & Oversampli
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.
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.
- Oldsirhippy
- Posts: 86
- Joined: Oct 1st, 2013, 7:18 am
Re: Getting extra ADC resolution with Dithering & Oversampli
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
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.
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.