BREAKOUT BOARD SCHEMATICCIRCUIT SCHEMATIC
Green probe is for DSO and red probe is for DMM
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