I am looking into using Arduino, or another platform if more appropiate, to log data for a 2D TDOA application using the data from 3 vibration sensors. The need for 3 sensors instead of the typical two you see with mics is because, with vibration through solids, speed can not be considered constant like through air, so a third measure is necesary to solve the equation and find the direction of the vibration origin in 2D.
I have limited experience with microcontrollers and it will be my first time using Arduino. The only thing I want Arduino to do is to get the signal from the 3 sensors with a timestamp and pass it to a PC via USB for processing. The signal will have a max frequency no higher than 150Hz. I can not specify exactly the upper limit yet because I have not decided on the sensors and most likely I will have to test a few before settling for one (suggestions welcomed), but my signal should not have a frequency higher than 150Hz. For what I have been reading in the forums, if I sample at x10 that frequency (if the sensor allows it), I should have a nice signal, and Arduino is more than capable of sampling at 1.5KHz, so that part should not be a problem.
Since I will be using Python to analize the data in the computer, I have settled on using the Firmata protocol to pass data from the Arduino to the computer, since it has good libraries for both Arduino and Python. Again, I am open to suggestions.
Since a TDOA application is very sensitive about the time difference between the signals, it is important that the timing of the measures of the three sensors is accurate, and here is where my main doubt comes. Lets say I want to read three analog sensors every 1ms, for a 1kHz sample rate, and I first read the 3 sensors when I go into the loop, and after I have the 3 readings I send the three readings through the usb together with the timestamp, for the loop to go to sleep again until it is time to sample again. The question is, is there any Arduino platform that can guarantee I can read the 3 samples simultaneously, within a minimal time difference between the three? I have read here in the forums that the Arduino Uno can not.
If I was to read the 3 analog sensors sequentially instead of simultaneously, what kind of time difference can I expect between the readings?. The sensors will be separated around 0.5meters from each other, and I just need meters accuracy, nothing too fancy. Does anyone know if the error introduced by reading sequentially by for example an Arduino Uno would introduce an acceptable error or would it completely mess the algorythm?
From my ignorance, my guess is that using digital sensors I will have less control over the exact moment when the measurment is taken and would make the real timestamp of the signal even more moody adding more error, but I am open to using digital sensors if it can make it work better.