What is the problem with high frequencies in ADC conversion in Arduino Uno

hello,

My project is to design a digital oscilloscope with arduino Uno. i had written a code for adc conversion using Aduino IDE in arduino UNO board. But while im testing the board with high frequencies, the output signal waveform is not getting correct signal with prescaler factor (2). Can i know what the maximum frequency the ATmega 328 will convert the signal into correct waveform and what are the frequencies can we convert into digital form to get proper converted wave.

Thanks in advance
Patricks

But while im testing the board with high frequencies,

Define "high"

What have you got as an anti-aliasing filter?

High frequencies means.....

When iam testing with above 100Hz frequency, the converted output was not correctly sampled.
What is the maximum frequency the Arduino Uno supports and Why.

8000 samples a second is a useful starting point using only Arduino functions.

had written a code for adc conversion using Aduino IDE

Care to share?

patricks:
hello,

My project is to design a digital oscilloscope with arduino Uno. i had written a code for adc conversion using Aduino IDE in arduino UNO board. But while im testing the board with high frequencies, the output signal waveform is not getting correct signal with prescaler factor (2). Can i know what the maximum frequency the ATmega 328 will convert the signal into correct waveform and what are the frequencies can we convert into digital form to get proper converted wave.

Thanks in advance
Patricks

The maximum recommended ADC clock frequency for full resolution conversions is 200 KHz. With a 16MHz UNO and only sampling a single input source, I found I could reduce the prescalar to 16 without affecting the results substantially. That gave me a sampling frequency of about 76 KHz.

The maximum conversion frequency I achieved was 258 KHz but that didn't allow enough time to actually do anything with the result, so I have no idea what sort of accuracy was achieved at that frequency.

The maximum recommended ADC clock frequency for full resolution conversions is 200 KHz. With a 16MHz UNO and only sampling a single input source, I found I could reduce the prescalar to 16 without affecting the results substantially. That gave me a sampling frequency of about 76 KHz.

The maximum conversion frequency I achieved was 258 KHz but that didn't allow enough time to actually do anything with the result, so I have no idea what sort of accuracy was achieved at that frequency.

As you said, the maximum recommended ADC clock frequency for full resolution conversions is 200 KHz. but with the prescaler factor 16, the ADC clock frequency is 1MHz and sampling frequency is 76 KHz. With this can we convert the 38 KHz input frequency signal or not?
With the prescaler factor 2, the ADC clock frequency is 8MHz and the sampling rate is 615 KHz. According to Nyquist criteria, the sampling rate should be greater than twice the input frequency. so with the 615 KHz sampling rate, 310 KHz was the maximum input frequency to b processed. But why we are not achiveing this maximum input frequency signal to be processed. and why the arduino is not allowing to do the conversion(in time credentials), please provide me the proper reason and document.

Please show your code.

It is because of the settling time and noise in the A/D converter. If you go that fast the quality of the samples is rubbish with most of the bits being noise.

You can see this if you look at the A/D section of the processor's data sheet.

patricks:
With the prescaler factor 2, the ADC clock frequency is 8MHz and the sampling rate is 615 KHz. According to Nyquist criteria, the sampling rate should be greater than twice the input frequency. so with the 615 KHz sampling rate, 310 KHz was the maximum input frequency to b processed. But why we are not achiveing this maximum input frequency signal to be processed. and why the arduino is not allowing to do the conversion(in time credentials), please provide me the proper reason and document.

I never got anywhere near 615 KHz conversion frequency. Even supposing you magically achieved it, and ignoring the fact that the results would be essentially noise, what is your Arduino going to do with each sample in the couple of dozen processor clock cycles it has available? Bear in mind that just invoking an interrupt handler will probably take more than that. You can sensibly achieve a conversion frequency of a few tens of KHz, but even at that data rate you're going to have to be very careful how you process each sample in order to keep up with the data stream.