Skip to main content
Associate III
October 30, 2023
Question

Unit of measure for the MEMS IMP23ABSU microphone

  • October 30, 2023
  • 6 replies
  • 6168 views

Hello, i have searched for this information, but couldnt find it anywhere. Whats the unit of the measured of the MEMS IMP23ABSU mic? I have used the STEVAL-STWINKT1B with the FP-SNS-DATALOG1 from which i created several .csv files that i now need to analyse. I have exported the values as "raw values" (which is an option you can choose when running the script of the dataloger).
So far i have checked the DeviceConfig.json from the dataloger and found out that the unit is  "unit": "Waveform". Does that mean the values, measured from the microphone, are in Pa or dB?

You can find part of my DeviceConfig.json below.

{
 "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
 }
 ]
 }
 }

 

This topic has been closed for replies.

6 replies

TomRettAuthor
Associate III
October 29, 2023

Hello, i have searched for this information, but couldnt find it anywhere. Whats the unit of the measured of the MEMS IMP23ABSU mic? I have used the STEVAL-STWINKT1B with the FP-SNS-DATALOG1 from which i created several .csv files that i now need to analyse. I have exported the values as "raw values" (which is an option you can choose when running the script of the dataloger).

Federica Bossi
Technical Moderator
November 3, 2023

Hi @TomRett ,

Welcome to ST Community!

The raw data are in dB.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
TomRettAuthor
Associate III
November 3, 2023

Thanks for the reply! I have plotted the measured raw data and started analysing it where it looked like if i had peaks at 30000 dB (Y-Axis)? Can it be that i must normalize the Y-Axis by some factor? Is there any documentation for this? IMP23ABSU-MIC_hsdatalog_plot.png

Federica Bossi
Technical Moderator
November 6, 2023

Hi @TomRett ,

Sorry, looking closer, the data go from -32000 to +32000 so they are in LSB over 16 bits, and it seems they cover all the dynamics up to full scale, which is 130dBSPL, or 0dBV, or 1V (because 94dBSPL = -38dBV).
If you want LSB in volts, you have to do 1V/32.768 = 30uV
If you want it in dBV, LSB(dBV) = 20*log(1V/32.768)
With the conversion factor above you get dBSPL, which is directly related to Pa.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
TomRettAuthor
Associate III
November 8, 2023

So the LSB covers values as small as -32000 and the MSB is covering values as large as +32000? How can i convert it do dBSPL? The LSB represents only negative numbers out of a 16-bit integer, so how can i get the other half (MSB)?

Regarding the DeviceConfig.json:

Can i reduce the sensitivity for it not to reach the 130dbSPL? ("sensitivity": 1)

What does the ""samplesPerTs": 1000" translate to? Is this the sampling frequency of the IMP23ABSU? 

Isnt the sampling frequency defined with "ODR": 192000, "ODRMeasured": 192000 ? What is the connection and the difference between ODR and ODRMeasured

TomRettAuthor
Associate III
November 10, 2023

bump

SimonePradolini
Technical Moderator
November 13, 2023

Hello @TomRett 

In DATALOG1, data from each sensor are saved in .dat as raw data. .dat contains bytes and data format is described in the json file you shared. So, in the case if the analog microphone, .dat contains "int16" kind of data.

Python scripts allows to elaborate, convert and plot data in different formats, both as raw data or applying the right gain in base of their physical meaning. The gain is described in the Sensitivity field of the above cited json file. For example: accelerometers data could be managed as int16 values or converted as g (gravitational acceleration). In the analog microphone use case, sensitivity is 1 and data are simply expressed as int16 values.

DATALOG1 could be a powerful demo for multisensor acquisitions, but we were not able to include a calibration procedure to guarantee a precise dBSPL measurement.

Let me also introduce you FP-SNS-DATALOG2 (link). DATALOG2 is the new and most updated Function Pack, extending functionalities and board support from the older DATALOG1. We are continuously working on DATALOG2 to let also the microphone volume and gain controllable by the user. So please evaluate the possibility to update the fiwmware and use FP-SNS-DATALOG2.

 

Best regards

Simone

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
TomRettAuthor
Associate III
November 13, 2023

Thanks, but that doesn't answer my questions. 

What sensitivity values does the DeviceConfig.json accept ("sensitivity": 1)?

Is the sampling frequency defined with "ODR": 192000, "ODRMeasured": 192000 ? What is the connection and the difference between ODR and ODRMeasured

SimonePradolini
Technical Moderator
November 13, 2023

Hi,

Excuse me, I lost some of the questions in the long thread.

Sensitivity is only a readable value, you can't set it.

ODR and ODRMeasured as separated values. They described the nominal and the real measured data rate value for each sensor.

The greater part of MEMS sensor has each own resonator with no timing synchronization with the MCU. So, there could be the possibility that sensor clock drifts, and there is no control on the difference between the sensor master clock and the MCU clock. In this situation, setting a nominal ODR can generate a real ODR drifted about 3-5%.

This is not the use case for microphones, where no internal resonator is needed. To let the microphone working it exposes a pin for linking directly a clock from the MCU. So, by design, there is no clock drift between the microphone and the MCU and ODR and ODRMeasured are exactly the same.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
TomRettAuthor
Associate III
November 13, 2023

Thanks you! I receive a shorter amplitude range when i set the ODR from e.g. 192000 to 32000. Why does this happen? Here is the same procedure with ODR: 192000, ODRMeasured: 192000

IMP23ABSU-MIC_hsdatalog_plot_192_kHz_phi_1.png

and below with ODR: 32000, ODRMeasured: 32000

IMP23ABSU-MIC_hsdatalog_plot_32_kHz_phi_1.png

 

SimonePradolini
Technical Moderator
November 29, 2023

Hello,

We are working on patch releases for both FP-SNS-DATALOG1 and FP-SNS-DATALOG2.

By looking at your requests we found a bug in the software microphone setup we'll solve in those releases.

Updated versions should be online in a couple of weeks. I suggest to update the package and eventually come back with your further feedbacks.

 

Best regards

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
TomRettAuthor
Associate III
November 29, 2023

What is the bug? I am working with the mic on a daily basis and all my measurements depend on it.