ΣSigmaStudio Ask AI Русский Log in

ADAU1442 - Vrms input measurement

SigmaDSP & SigmaStudio mcrr Jun 20, 2012 00:00 13 replies Original on forum ↗
Subscribe
mcrr Question
Jun 20, 2012 00:00

Hi Srs.,

It's my first post here and I’m working with adau1442 dsp to develop a sound level meter with frequency analyzer. I know making a frequency analyzer in sigmastudio, but I don't know how to read the audio input voltage (true RMS) to calculate sound pressure level in db and A, C and Z frequency weighting filter.

I would like to know if it's possible and how to read true rms audio input voltage.

Thanks in advanced.

rms

Audio Signal Processors

true

voltage

input

adau1442

SigmaDSP Audio Processors

audio

Show More

ADIApproved Reply
Jun 20, 2012 00:00

Hi-

I moved this question to the SigmaDSP Processors and Development Tools Community. Someone here should be able to assist you.

Regards,

AndyR

EngineerZone Community Manager

ADIApproved Reply
Jun 20, 2012 00:00

Hi mcrr,

This is possible, but it requires several steps.

In order to convert between the acoustic sound pressure level and the digital level in the DSP, there are several steps.

First, you have to convert from the acoustic pressure domain to the analog electrical domain, using a microphone.

Then you have to convert from the analog domain to the digital domain using an ADC.

Then you have to filter and average the signal in the digital domain to get a value.

The sensitivity of the microphone and the full-scale voltage of the ADC need to be factored in when you are calculating the overall SPL.

First, you need to understand microphone sensitivity. That will give you a mapping between acoustic pressure and electrical level. Here's a good article about that: https://www.analog.com/library/analogDialogue/archives/46-05/understanding_microphone_sensitivity.html

Then, you need to understand how analog signals map to the digital domain in ADCs. I wrote a post describing that here: https://ez.analog.com/message/21763#21763

Finally, you'll need to then filter and average the signal in order to get your RMS level. Here's a description of how to do that in SigmaStudio: https://ez.analog.com/thread/2933

This should get you what you need.

By the way, if you use an I2S or PDM output microphone, that saves you one step because the ADC is removed from the equation. Here are some examples of those kinds of products:

I2S: https://www.analog.com/en/mems-sensors/mems-microphones/admp441/products/product.html

PDM: https://www.analog.com/en/mems-sensors/mems-microphones/admp521/products/product.html

mcrr Reply
Jun 20, 2012 00:00

Thank Brettg for your repply,

I am using a microphone with eval-adau144XEBZ board. I know the microphone sensitivity (then i know Vref). In SigmaStudio schematic, after microphone input, I have an average envelop and readback to read the input values. Now, how can I convert 28.0 format value from readback to voltage value? If I get the input voltage (vrms), i can calculate DB(spl) = 20log(Vrms/Vref). Is it correct?

Thanks...

ADIApproved Reply
Jun 20, 2012 00:00

That's correct, all except for the 28.0 part. You will be reading a 28-bit number, but the value will be 5.23, not 28.0. More information on that is available here: https://wiki.analog.com/resources/tools-software/sigmastudio/usingsigmastudio/numericformats

mcrr Reply
Jun 25, 2012 00:00

Thanks BrettG for your help.

Now, i need to read the input frequency of the audio signal. Is it possible reading input signal frequency via Sigma ?

Thanks a lot.

ADIApproved Reply
Jun 25, 2012 00:00
mcrr Reply
Jun 26, 2012 00:00

Brettg,

I'm reading the microphone input signal level, using Running Average + readback 5.23 to read DBspl, as you sad me before, but I can't read all ADAU1446 dynamic range (139db). There is another way to read the full scale?

Thanks...

ADIApproved Reply
Jul 2, 2012 00:00

The running average unfortunately loses accuracy at low signal levels. This is due to the fixed-point nature of the core and the way that the average is calculated. You can verify that by trying the peak envelope and seeing that the peak level will be very accurate down to quite low levels.

I think you might be able to use the Mean Squared (signal envelope) cell and follow that by a very expensive Square Root operation to get more accurate results.

mcrr Reply
Jul 6, 2012 00:00

Thank you very much Brettg

I will try to read using peak envelop. Is there some way to hold the peak value?

ADIApproved Reply
Jul 9, 2012 00:00

The "Hold" control on the peak envelope cell can be used to hold the peak value. You can set the time in milliseconds.

mcrr Reply
Jul 12, 2012 00:00

Thank Brettg for your time. Now I got 75db dynamic range using signal envelope, square root and linear gain. I think it's the max dynamic range possible. I tried another way but always less than 75db.

Can I connect ADAU1446 i2c communication with 5v microcontroller? Is I2C 5v tolerant? I know that nominal voltage is 3.3v, but I don't know if it is 5v tolerant.

ADIApproved Reply
Jul 12, 2012 00:00

Unfortunately, you can't exceed the IOVDD maximum of 3.3 V on any digital pins. There are I2C bus-repeater level translators available that can do the job for you. One example is the PCA9517.

EZAdministrator Reply
Aug 2, 2018 00:00

This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

Thank you,
EZ Admin