Go Down

Topic: Microphone to ADC to Arduino Uno (Read 507 times) previous topic - next topic

rsfrech

I'm trying to work on converting a signal that is received by a microphone and convert that to a digital signal using an external ADC microcontroller that will then be read by the arduino uno. I am wondering if anyone has ever done this before or has information on how to implement an ADC in a circuit.


Some more information: I am using a Electret Microphone MAX 4466 and have wired it to a bandpass filter that will only allow frequencies from 10KHz to 20KHz to pass through. I then want to convert the signal to a digital signal that the arduino can read and will then light up an LED.

Any suggestions on what ADC I need and how to set this up?

Paul_KD7HB

You have to sample the ADC at more than twice the highest frequency you are interested in. Can you do that with your Arduino?

Paul

rsfrech

You have to sample the ADC at more than twice the highest frequency you are interested in. Can you do that with your Arduino?
No I'm trying to sample frequencies above 10KHz most likely up to 20KHz. I need a ADC with a sampling frequency around 44.1KHz.

Wawa

That's 88200 bytes per second if you want 16-bit (two bytes) audio.
An Uno has a whopping 2000 bytes of work memory.
That's room for about 0.2seconds of audio.
Leo..

rsfrech

Yes I know that's why I think I need to use an external ADC and then I'm hoping the Arduino will then be able to read that digital signal correct?

Wawa

I doubt an Uno has the processing power to read/process/store audio.
Better look for a board with buildin audio capabilities.
Leo..

Paul_KD7HB

Yes I know that's why I think I need to use an external ADC and then I'm hoping the Arduino will then be able to read that digital signal correct?
I detect some confusion here! The external ADC will only do it's thing when commanded by the Arduino. So, how often can your Arduino enable the external ADC and then read the results?

Paul

MarkT

I'm trying to work on converting a signal that is received by a microphone and convert that to a digital signal using an external ADC microcontroller that will then be read by the arduino uno. I am wondering if anyone has ever done this before or has information on how to implement an ADC in a circuit.


Some more information: I am using a Electret Microphone MAX 4466 and have wired it to a bandpass filter that will only allow frequencies from 10KHz to 20KHz to pass through. I then want to convert the signal to a digital signal that the arduino can read and will then light up an LED.

Any suggestions on what ADC I need and how to set this up?
You are really pushing the Uno hard - its not a fast processor, and to handle 44.1kSPS requires more crunch I suspect.

What signal processing are you expecting the Arduino to perform on this band limited signal?
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

rsfrech

I am trying to detect the sound metal makes and identify when that sound is occurring in real time or as close to real time as possible. When testing I found metal makes a frequency around 15kHz so that is what I'm shooting for to detect.


The external ADC could be implemented before the audio signal is processed by the Arduino and then the digital output from the ADC would be the input to the Arduino.

Wawa

I am using a Electret Microphone MAX 4466 and have wired it to a bandpass filter that will only allow frequencies from 10KHz to 20KHz to pass through. I then want to convert the signal to a digital signal that the arduino can read and will then light up an LED.

Any suggestions on what ADC I need and how to set this up?
I am trying to detect the sound metal makes...
So you don't need an A/D.
Just an envelope follower and threshold detector behind that bandpass filter.
Then straight into a digital pin.
That shouldn't be a problem for any Arduino.
Leo..

rsfrech

Just an envelope follower and threshold detector behind that bandpass filter.
Then straight into a digital pin.
That shouldn't be a problem for any Arduino.
What is a envelope follower and how should I try to implement it? I've never used one before.

Wawa

Basically a peak detector. It changes a high frequency signal into a varying DC voltage that follows/connects the peaks of that high frequency signal. You should be able to find many diagrams on the net.
It should be used after your bandpass circuit.
A varying DC voltage is easier to process with the Arduino than the original high frequency.
Leo..

DVDdoug

#12
Jun 25, 2019, 11:58 pm Last Edit: Jun 26, 2019, 12:08 am by DVDdoug
Quote
Just an envelope follower and threshold detector behind that bandpass filter.
Then straight into a digital pin.
That should be an analog input.  ;)

Peak Detector Circuit   I've used that circuit with audio several times* (perhaps with different C1 & RL values).   Typically unity gain is OK so you can leave-out R1 & R2 (replacing R2 with a direct connection, as shown with zero ohms).   

If you use the bipolar power supply as shown it would be wise to add a voltage protection circuit.



* I use it for sound activated lighting.  Like Wawa says, it's a lot easier reading a varying DC voltage than an AC signal.  In my application I can sample the "loudness" about 10 times per second instead of sampling the audio waveform thousands of times per second.   Plus, it throws-away the negative half of the signal so you don't need bias.  (The negative half is usually very-similar to the positive half.   But, you can build a full-wave peak detector if you want/need the negative half).,


rsfrech

I decided to use the MSGEQ7 chip to filter the frequencies, it also has a peak detector that will give me the highest value when the microphone hears that frequency.

I also want to find out how connect a better microphone to the circuit and don't know what type of output cable a microphone has, if its normally a standard aux input or different?

Go Up