Hi
Very interesting problem. I am afraid I have not read the linked file for lack of time, but I am giving you my opinion.
usually these noise related problems are solved averaging the sampled values during a time interval T. This time need to be calculated according to your needs, and you can make it adaptive, I mean, you can implement an algorithm to detect movement and make the time T smaller, (this can be applied also to your circles) and when it is static keep a longer T,
Now, it seems that for bad you have too much accuracy, I mean if you have a 8 bit ADC, you can try ignoring the last bit and using only 7.
since your application is real-time, you can not appy more developed techineques such as filtering.
Sal