In this post we answer frequently asked questions related to Analog-to-digital converter specifications for the ATmega 328/p. Often times these are not clear and can be confusing. For instance there is a tendency to confuse Clock rate with sampling rate.
Without further ado, let’s get into it.
The ATmega 328 P has a 10-bit Analog-to-Digital Converter with a maximum sampling rate of 15 kilosamples per second (kSPS).
The ADC internal to the microcontroller has 8 input channels which are multiplexed into the ADC. Put simply only one of these input channels is input to the ADC at any given time. The picture below shows a block diagram of the system architecture.
The maximum clock frequency that can be input to the device is 16 MHz. However that’s not the rate at which the ADC samples an input signal.
The ATmega328 is used in the Arduino Nano and Uno.
Reference Voltage
The minimum value of the ADC output represents GND (or 0 Volt) and the maximum value represents the voltage on the AREF pin minus 1 LSB. Optionally, AVCC or an internal 1.1V reference voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX register.
So there are three options for AREF. Two are internal and one is external.
The internal connection is shown in the section of the block diagram below.
The max input voltage on the analog input is VREF or AVCC. AVCC itself should not exceed 5.5V. The recommendation is that VCC is between 4.5V and 5.5V.
This VREF value can be used to calculate the ADC output values for a 10-bit ADC. Note that this is a unipolar ADC.
Related Posts and Calculators
- What is the sampling rate of the Raspberry Pi ADC?
- What is the sampling rate of the ESP8266 ADC?
- Sampling rate of the Arduino Due ADC
- Sample rate of the Arduino Nano
- Nyquist rate – find the required sample rate given the max input frequency of the input signal