Electrical – SPW2430 MEMS MIC Taking time in returning to base Voltage

adcarduinomems-microphonemicrophonevoltage

BREAKOUT BOARD SCHEMATICenter image description hereCIRCUIT SCHEMATIC
enter image description hereGreen probe is for dso and red probe is for dmm

Green probe is for DSO and red probe is for DMM

The whole Circuit
I am trying to create project using ESP 32 with arduino IDE which turns on when a snap is detected.
I will be using using spw2430 mems mic
datasheet here :Mems MIC Datasheet
Right now I using the Adafruit SPW2430 mems mic breakout board for testing purpose
product site here :https://www.adafruit.com/product/2716

100 to 10kHz frequency resp
VPP= 200mV
Dc bias= 700mV Zout=450 Ohm

The problem I am facing is whenever i snap my fingers or clap my hand the output voltage goes up (as expected) BUT it takes a 4-5 seconds to come back to normal reading .
Ideally it should not take that much amount of time to come back to normal reading. It should take 10 ms to come back to normal readings.

I am polling every 500 microseconds and the attenuation of the ESP32 has been set to 0 db so that the REF voltage scale is in 0 – 1V.
this similar problem is happening with arduino uno (with same set of test conditions) .
The input of adc is connected to the DC pin of the Breakout Board.
(Which does NOT have any capacitor in between the o/p of mic and I/p of adc.)

Here is the code I am using

#include<esp32-hal-adc.h>
#define ANALOG_PIN 4

void setup()
{

  pinMode(ANALOG_PIN,INPUT);
  Serial.begin(115200); 
  /*
   * typedef enum 
   {
    ADC_0db,      // 0 to 1 v 
    ADC_2_5db,  // 0 to 1.27 v
    ADC_6db,     // 0 to 1.75 v
    ADC_11db     // 0 to 3.3 v
   } adc_attenuation_t; // changes Ref Voltage Scale
   */

  analogSetPinAttenuation(ANALOG_PIN,ADC_0db);
 // Set the attenuation for particular pin currently 0-1 v

}

void loop() 
{
  int raw_value = 0; // to store raw value of mic

  raw_value = analogRead(ANALOG_PIN); // Reading the op voltage of mic

  Serial.print("Raw value is : ");
  Serial.println(raw_value);

  delayMicroseconds(500); // Sampling every 500 uSec
}

I also have a voltmeter. i connected one probe to GND and OTher one to DC pin output of MEMS Mic. The voltage reading is 700mV. When I snap my finger it reaches 800mV immediately But It takes 4-5 seconds to come back to 700mV

Best Answer

For anyone who is interested I have found the answer

anwser here

TLDR :

It is the mic's general behavior And no one can do anything about it