1

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
  • you are not going to get a step by step solution with calculations .... please provide the code that you have written explain how you expect it to function and explain where it fails
    – jsotola
    Jan 11, 2020 at 8:19

1 Answer 1

2

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.

1
  • 1
    Note 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.
    – Majenko
    Jan 11, 2020 at 14:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.