Arduino Uno Board use successive approach ADC of 12 bits and 16 MHz frequency clock. What is the maximum voice frequency can be converted using arduino uno board? I want the step by step solution with calculations.
1 Answer
First of all, the ADC on the Uno is 10 bits, not 12.
The naive approach of having analogRead()
in a tight loop can give you
up to 8.9 kS/s (112 µs per sample), but you won't be able to
do much else, as the CPU spends most of it's time just waiting for the
ADC to do its job. If you configure the ADC manually, then you can set
it into the so called “free running mode”. You then get about
9.6 kS/s (104 µs/S), but then the CPU is free to process one
sample while the next one is being converted.
If you need to go faster, you can tweak the frequency of the internal ADC's clock. Then it's a compromise between speed and accuracy: the faster you go the less accurate. You may get rough but kind of usable samples at up to 77 kS/s (13 µs/S).
For a detailed comparison of the different clocking options, with speed and accuracy estimation, see the article ADC conversion on the Arduino (analogRead), by Nick Gammon.
-
1Note that thanks to the Nyquist-Shannon theorem the sample frequency is twice that of the maximum content frequency - so 8.9kS/s would equate to a 4.45kHz maximum audio frequency.– MajenkoJan 11, 2020 at 14:34