Fluctuating ADC reading most of the time caused by noise. Try power your device using battery and keep away from mains, if the reading is getting better then it is positively the 50/60 mains noise is injected to the adc input. Some filtering needed, also averaging large number of adc samples can help a bit.
buffer in at an array and than take the average...
like
Code:
int i ;
long sum = 0;
for(i = 0; i < "your Limit say 50"; i++)
array[i] = read_adc();
for(int x = 0; x < i; x++ )
{
sum = array[x] ;
}
average =sum / i;