1
\$\begingroup\$

I have tried to evaluate the analog microphone (IMP23ABSU) built into the STEVAL-STWINKT1B with the FP-SNS-DATALOG1 (HS-Datalogger). The values were exported as "raw values" (this is an option that can be selected when executing the data logger script). According to the manufacturer, the unit of measurement is dB. Below you will find the DeviceConfig.json file used during data export with the datalogger.

{ "id": 7, "name": "IMP23ABSU", "sensorDescriptor": { "subSensorDescriptor": [ { "id": 0, "sensorType": "MIC", "dimensions": 1, "dimensionsLabel": [ "aud" ], "unit": "Waveform", "dataType": "int16_t", "FS": [ 130 ], "ODR": [ 8000, 16000, 32000, 48000, 96000, 192000 ], "samplesPerTs": { "min": 0, "max": 1000, "dataType": "int16_t" } } ] }, "sensorStatus": { "subSensorStatus": [ { "ODR": 192000, "ODRMeasured": 192000, "initialOffset": 0.19303, "FS": 130, "sensitivity": 1, "isActive": true, "samplesPerTs": 1000, "usbDataPacketSize": 4096, "sdWriteBufferSize": 136192, "wifiDataPacketSize": 0, "comChannelNumber": -1, "ucfLoaded": false } ] } } 

ST provides Python scripts for plotting, among other things. Below you can see such a plot. enter image description here According to the manufacturer, the Y values are in dB, which is very unlikely at this point (30000 dB peak).

Now to my actual question. Do I have to normalize the Y-axes somehow in order to display the sampled values in a meaningful way?

The documentation of the IMP23ABSU can be found here and the documentation of the STEVAL - here. I found that the sensitivity of the IMP23ABSU is -38 dBV ±1 dB @ 94 dBSPL, 1 kHz. Must i normalize the Y-Values by 94 dBSPL? The Datasheet of the IMP23ABSU also tells me, that the mic has an acoustic overload point of 130 dBSPL (meaning it can't measure more than 130 dB without distortion). Accordingly my sampled data has to be normalized by a given factor in order for it to be in the range of 0-130 dBSPL. Am i correct?

EDIT: I have uploaded a snippet of the schematic that shows the microphone (MP23ABSU) enter image description here and its connection via M1P_Filt with the op amp (TS922EIJT). enter image description here Perhaps this can help determining the actual amplitude unit.

\$\endgroup\$
6
  • \$\begingroup\$ What's the question really? Based on the plot, audio data is linear 16-bit PCM, and gets clipped because it's too loud sound or too much voltage out from mic or too much analog gain before ADC. \$\endgroup\$ Commented Nov 4, 2023 at 16:04
  • \$\begingroup\$ I want to know if i have to somehow normalize the data or convert it so that i can interpret it. The manufacturer told me that the unit is in dB; 30000 dB doesnt make sense so i guess either im doing something completely wrong or im missing a crucial point here. \$\endgroup\$ Commented Nov 4, 2023 at 20:58
  • \$\begingroup\$ They are not in dB for sure. Audio is not sampled in dB. The mic sensitivity is however measured in units of outputing -38 dBV, which means 38 dB less than 1V, when being fed with SPL of 94 dB, and it can't handle more than 130 dB SPL, and 0 dB SPL is not the minimum value even. \$\endgroup\$ Commented Nov 4, 2023 at 21:32
  • \$\begingroup\$ Perhaps the vertical scale represents sound pressure in Pa since im measuring air leakage at around 5 bar (500 kPa) with a 1 mm orifice. The maximum y-value would then be 32767 Pa which equals around 0.3 bar. \$\endgroup\$ Commented Nov 5, 2023 at 8:49
  • \$\begingroup\$ I am pretty sure it doesn't represent pressure in Pa. 32768 Pa compared to 20 micropascal reference would be 184 dB SPL. Microphones are intended for audio, not for measuring static pressures at 5 bar. They are just the sampled voltage waveform and without looking at the schematics for mic amplifier and ADC and the ADC software settings, you don't really know what pressure, or basically, what voltage from mic represents 32767 as value. \$\endgroup\$ Commented Nov 5, 2023 at 10:07

1 Answer 1

0
\$\begingroup\$

Calculating the exact units is a little pointless.

This is not a precision pressure sensor. This is just a microphone intended for audio. The mic output tolerance is already +/- 1 dB, so between -39 and -37 dBV, or roughly +/- 10%, for the given reference SPL tone.

The signal path about what sound pressure changes cause what kind of voltage changes out of the mic, what the voltage is after amplification, and what values come out of ADC when it samples the voltage can be of course calculated and known, but it does not matter if you are only interested in what SPL causes what digital signal amplitude.

The signal at each stage depends and is affected by component tolerances and this is intended for audio - if volume is too high then adjust volume down, if it is too low then adjust it up when recording, based on what you are recording (is the sound loud or soft, is the sound source far or near, so basically what is the audio SPL at mic).

If you need an exact relationship, calibrate the system. Send out a known reference sound in SPL and see what values comes out digitally, and you are done.

But it might be that using an audio microphone when you need some absolute pressure sensor may not give you the measurement results you need.

\$\endgroup\$
7
  • \$\begingroup\$ SPL is measured in decibels and is a logarithmic scale. As the support of the manufacturer pointed out, the unit is dB; i guess they mean SPL by that (but that is just an assumption). As i am recording air leakages it gets louder with increasing pressure - hence the amplitude gets higher. As im measuring with signed 16 bit integer i get a overall max of 32767 amplitude (which as you can see is reached almost every moment). Therefore i guess i also have to increase the range (perhaps using an int32_t) in order to capture all occuring amplitudes. \$\endgroup\$ Commented Nov 5, 2023 at 12:53
  • \$\begingroup\$ Do you have a reference that i could use to calibrate this system? I havent calibrated systems so far. \$\endgroup\$ Commented Nov 5, 2023 at 12:56
  • \$\begingroup\$ @Tom Where is it said that output is in dB? And what output you mean? According to everything so far, everything points out the voltage waveform is sampled into 16-bit integer with an ADC. If it is a 16-bit ADC and analog voltage already hits ADC input conversion range, you can't get any more range even if you switch to 32-bit variables. Only way to accept louder sounds is to drop gain somewhere, maybe in the amplifier. \$\endgroup\$ Commented Nov 5, 2023 at 12:59
  • \$\begingroup\$ @Tom Why do you need calibration? Louder hiss means louder amplitude. Why does it matter what the actual amplitude means in SPL if you just try to detect from where a leak emits sound? Another way to limit the aplitude is to keep the mic further away from source of sound. \$\endgroup\$ Commented Nov 5, 2023 at 13:03
  • \$\begingroup\$ The support says here that the raw data is in dB. With output i meant the recorded digital signal inside the microcontroller evaluated with a dataloger \$\endgroup\$ Commented Nov 5, 2023 at 13:05

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.