I have a project I want to complete to help me solidify the things I'm learning as a physics student at the University of Utah. I made a program that runs on a raspberry pi and simulates solving the location of the source of a sound it completes in 0.1 seconds and solves in 3-D space.
this picture shows the error if I have 7 decimal places of timing(with some tricky tricks I may even be able to get 9 decimals). each pixel location represents the simulated point and the color is how much error due to realistic timing round off.
So now I want to build it. I chose the ics-52000 mems mics from invensense because they are like a point sensor(small inlet port), they are preamplified, they are "omni-directional", they are fairly sensitive(to -26db), and they are 24 bit with a high signal to noise ratio of 65dBA.
Right now I'm scratching my head about the data protocol from the mics. They are calling it Time Division Multiplexing (TDM). the microcontroller (I chose the teensy 3.6 for it's speed) will initiate a pulse to the first mic and proceed to clock in 24 bits from the first mic then the first mic will initiate a pulse to the second mic and the microcontroller will read the 24 bits from the second mic and so on, all the mics data out pins are tied to one data line (I guess that's why they're calling it TDM). here is a picture of that timing diagram and wiring.
Elsewhere in the data sheet https://www.invensense.com/wp-content/uploads/2016/05/DS-000121-ICS-52000-v1.2.pdf it says that if I want to sample at 48kHz with 5 to 8 mics I multiply the sampling frequency with 256 for my clock frequency which is: 12.288MHz I can do more or less clock speed to an extent but I can have a max sampling frequency of 52.8kHz which leads to a clock frequency of : 13.516MHz. This is faster than I have ever clocked data(by ~13 times). I've only ever used Arduinos. I purchased the Teensy because I could see the Arduino wasn't going to cut it. how can I do this? the wires also need to be about 2 feet, give or take a few inches (I was thinking coax or ethernet?). My end goal is to have a servo motor turret fire a marshmellow and hit the mouth or face of the loudest person in the room ...cause that would be hilarious.
So, how can I read in this data at these speeds? is there a hardware port on the Teensy that can do this? any suggestions?
this picture shows the error if I have 7 decimal places of timing(with some tricky tricks I may even be able to get 9 decimals). each pixel location represents the simulated point and the color is how much error due to realistic timing round off.
So now I want to build it. I chose the ics-52000 mems mics from invensense because they are like a point sensor(small inlet port), they are preamplified, they are "omni-directional", they are fairly sensitive(to -26db), and they are 24 bit with a high signal to noise ratio of 65dBA.
Right now I'm scratching my head about the data protocol from the mics. They are calling it Time Division Multiplexing (TDM). the microcontroller (I chose the teensy 3.6 for it's speed) will initiate a pulse to the first mic and proceed to clock in 24 bits from the first mic then the first mic will initiate a pulse to the second mic and the microcontroller will read the 24 bits from the second mic and so on, all the mics data out pins are tied to one data line (I guess that's why they're calling it TDM). here is a picture of that timing diagram and wiring.
Elsewhere in the data sheet https://www.invensense.com/wp-content/uploads/2016/05/DS-000121-ICS-52000-v1.2.pdf it says that if I want to sample at 48kHz with 5 to 8 mics I multiply the sampling frequency with 256 for my clock frequency which is: 12.288MHz I can do more or less clock speed to an extent but I can have a max sampling frequency of 52.8kHz which leads to a clock frequency of : 13.516MHz. This is faster than I have ever clocked data(by ~13 times). I've only ever used Arduinos. I purchased the Teensy because I could see the Arduino wasn't going to cut it. how can I do this? the wires also need to be about 2 feet, give or take a few inches (I was thinking coax or ethernet?). My end goal is to have a servo motor turret fire a marshmellow and hit the mouth or face of the loudest person in the room ...cause that would be hilarious.
So, how can I read in this data at these speeds? is there a hardware port on the Teensy that can do this? any suggestions?
Last edited: