2024-08-06 05:07 PM
I am looking to build a visual model of the human cochlea and was hoping to use the Adruino Nano 33 Sense which has a MP34DT06J microphone integrated. I can't find the frequency range in the documentation, but I am not an electrical engineer--so maybe it's there, but I don't understand the units being displayed. Ideally I would be able to pickup the full human hearing range (12hz to 28khz) so I can visualize this. I am not as concerned about accuracy since I will only be mapping this to 160 leds in a spiral (the shape of the cochlea). Thanks in advance for any assistance you can provide.
Solved! Go to Solution.
2024-08-06 09:38 PM
MEMS microphones equipped with a digital output convert the analogue audio signal internally into a digital signal. Due to the Nyquist theorem, the maximum audio frequency is 20kHz, although the MEMS structure can process higher frequencies and delivers corresponding signals. The digital conversion acts as a low-pass filter, so to speak.
For a higher evaluable frequency, a MEMS microphone with an analogue output must therefore be used, which can pass on the full frequency range of the MEMS structure. However, these require additional effort because the small analogue signal has to be amplified to the voltage range that the microcontroller can measure via its ADC.
ST currently offers the IMP23ABSU as such an analog MEMS microphone.
Hope that helps?
Good luck
/Peter
2024-08-06 07:59 PM
Can't find in datasheet, but product table states as 20 kHz
https://www.st.com/en/mems-and-sensors/mems-microphones/products.html
2024-08-06 09:38 PM
MEMS microphones equipped with a digital output convert the analogue audio signal internally into a digital signal. Due to the Nyquist theorem, the maximum audio frequency is 20kHz, although the MEMS structure can process higher frequencies and delivers corresponding signals. The digital conversion acts as a low-pass filter, so to speak.
For a higher evaluable frequency, a MEMS microphone with an analogue output must therefore be used, which can pass on the full frequency range of the MEMS structure. However, these require additional effort because the small analogue signal has to be amplified to the voltage range that the microcontroller can measure via its ADC.
ST currently offers the IMP23ABSU as such an analog MEMS microphone.
Hope that helps?
Good luck
/Peter
2024-08-06 10:29 PM
Thanks to you both for this response. I think I will just compromise at the 20khz so I can simplify the model and just use the built-in mic on the ardunio. If I get a researcher who wants a perfectly accurate model, I will give him the specs to the upgraded model that can detect this range. I'll be sure to share the end result when I have it working
2024-08-07 08:06 AM - edited 2024-08-07 08:08 AM
Almost impossible to do it right on arduino AtMega328. 160 led's with LOG (!!!) scale - memory is not enough, only 2k.
I build a few spectrum analyzers, and hardly get 400 pixels frequency chart using nucleo-H743zi2 with 1 MByte.
Arduino Uno runs fft-256 at max, so 128-pixel on freq. chart with Linear scale, if re-maped to log it's only 7.
2024-08-07 08:15 AM
Thanks for letting me know. My thought was not a full analyzer, but just to light up 1 led if there's any data in that range (with a low-pass filter for noise). Do you think that is possible? If not, what microcontroller would you recommend?
2024-08-07 08:25 AM
As I say the problem in ranges, they are not equals. 160 LPF's is not an option - again memory constrain and uCPU speed. FFT is the most efficient way to split freq. bands, but output is linear.
It's not an electronics, just basic school math. Try to calculate (I use Excell table) , do your homework
2024-08-07 08:46 AM
I am completely new to this for sure. I have seen the FFT examples online and they are more complex than what I'm trying to do. With a basic calculation, it looks like a range of 125hz per LED. I can also reduce the number of ranges if it's not going to work (eg. light up more LEDs for a wider range). Are there any resources you have that would support that would be helpful for this application?
2024-08-08 01:16 PM
I was able to get a basic version working, although as @MasterT pointed out, the limited processing power of the Arduino didn't allow me to display the full range, but it was a good proof of concept! Thanks for your help!