Arduino zero ADC range

I tried adc by directly touching registers on Arduino zero. However, the following results were obtained according to the adc prescaler and the SAMPCTRL register. (Received 200Hz, 3.0Vpp, 1.5V offset signal from the function generator as input.)








As shown in the graph, the faster the ADC, the smaller the range of the ADC. Why is this?

Hi @shyubi

The Arduino Zero's (SAMD21 microntroller's) ADC works by charging an on-chip sample capacitor through a sample resistor. If the input source resistance or ADC's sample rate is too high, the sample capacitor won't have time to charge to the correct voltage:

ADC Input

The prescaler and sample control registers allow the ADC to be adjusted to account for higher source reistance. Arduino sets this to the most conservative value possible, by using a divide by 512 prescaler and sets the sample control register to the maximum sample time (0x3F (hex)).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.