Setup:

Data points taken about 0.1ms apart (MCP3208, X axis is milliseconds):

Compared frequencies of values (MCP3208):

I need to be getting accurate values at least 15 times a second, ideally much faster. I've tried brute-forcing it with averages and medians etc., but even that isn't good enough for my needs. I know it is possible to get stable readings like in this video (the temperature sensor stays at 218 with the occasional 219, a range of 1, whereas my MCP3008 has a range of 10).
https://www.youtube.com/watch?v=wIAffBT ... ran-Harper
I have tried:
- Bit-banging with regular GPIO pins vs. using Spidev (no difference)
30000Hz-3000000Hz clock speeds (no difference)
Measuring the hall sensor with a DMM (it seems to stay within 1mV, which is plenty accurate)
Connecting 5V to VREF and connecting 3.3V to CH0 (similar inaccuracy; rules out the hall sensor even more)
Connecting an AA battery to VREF to make it more stable (the wire seems to be stable to about 1mV, but again, similarly inaccurate readings)
Reading the ADC at different frequencies (no difference between 0.1ms or 1s)
Probably lots of other stuff that I'm forgetting