Measure AC Sine Wave amplitude with ADC
One way is to use a peak detector, but this has a diode voltage drop, which gives an error in the result.  

You don't say anything about frequency, but I'll assume it is much lower than the ADC's sampling frequency.

I would use a resistive voltage adder to bring the full signal within the ADC's range. The resistive adder has the advantage over the capacitively coupled adder that you don't have to take frequency-dependent attenuation from the capacitor into account. 



Suppose the ADC has a 0 V to 5 V range, and your signal is maximum 10 V peak-to-peak. Then you want Vout to be 0 V for -5 V input, and as close to +5 V as possible for +5 V input. The latter means that R1||R2 should be much smaller than R3. The former means that R1 should be equal to R2: if the input is zero then there's no current through R3, and R1 and R2 form a resistor divider between -5 V and +5 V. So if we choose R1 = R2 = 1 k&Omega; and R3 = 47 k&Omega; then the output signal will swing between 0 V and 4.95 V. 

Now take enough samples to find the minimum and maximum values, and multiply the difference by 10 V/ 4.95 V, that will give you the peak-to-peak value.