Transducer mounting looks great I’ll look forward to the results of the Tahoe tests. In the meantime I have been playing around with NTP and PTP to see if I can get clocks to synchronize across a network. I purchased a GPSDO from China that has both PPS 3.3 V square wave and 10 MHz sine wave outputs and interfaced it to an Arduino Micro and two Raspberry Pis. The 10 MHz output is divided by 2 in a D flip flop to have a 5 MHz clock for timing purposes and fed into pin 12 of the Arduino. Maximum external clock for the Arduino is 6.4 MHz (16/2.5 MHz) and the PPS signal is fed into Pin 4 (ICP input). The 10 MHz output is spot on at 5,000,000 counts/sec and varies by at most +/-1 count when the GPS is locked and TXCO is at temperature. That should work out to 5,000,000 x 100 /1500 = 333,333 counts for the 67 mS needed for sound to travel 100 meters. For NTP/PTP tests the GPS can be interfaced to the Raspberry Pis several different ways, either directly using the NMEA driver, or via the GPSD, which in turn passes the data to NTP using a SHM driver. In addition a separate driver is used for the PPS signal. On the master clock side I am running NMEA driver attached via USB to the Arduino so I only send the RMC sentence with the PPS driver and the PPS attached to a GPIO pin. The master runs NTPD and PTPD but the system clock is set by NTP (-t option on PTPD). On the client side the other system has NTP disabled and only PTPD is running and logs the difference between the master and slave clocks. Attached is a picture of the setup and the histogram of the differences between the clocks after running PTPD for about 6 hours. The attached results were a little disappointing, but I haven’t been about to see how much of the variance is due to the master clock drift. With expensive hardware clocks it is possible to get sub-micro second agreement, so more tweaking is definitely needed. These are just first look results but agreement to less than two microseconds on average isn’t bad (median -0.536) however the standard deviation of +/- 88 uS is probably too high so more work is needed. I assume it will be pretty easy to set up PTPD on the beagle bone if this approach is useful.
I’ll also try and develop a simple front end for the timing board and see if I can measure some acoustic pulse durations with the Arduino using the new transducers you made, and do a follow up post with how to set up the Pis and the Arduino code.