Hydrophone amplifier and sampling

Status
Not open for further replies.
Hey all,

Looking for some advice on sampling some raw voltages from a hydrophone (eventually trying to do some TDOA / beamforming with 4 of them).

Here is my tentative plan (hydrophone-> amp->recombine balanced signal -> strip DC and bias -> sample)

Im using an Aquarian Audio AS-1, in initial tests seems to be a great high impedance phone: https://www.aquarianaudio.com/as-1-hydrophone.html

That connects to my pre-amp via unbalanced BNC cable. It runs through the OPA1642 opamp by Texas Instrument. Powered by phantom power. Im using the circuit from this instructables but may need to modify it slightly for phase shift reasons. https://www.instructables.com/OPA-Based-Alice-Microphones-a-Cardioid-and-a-Figur/

Post preamp stage shows +- 700mV or so on the oscope with me clinking a coffee cup full of water and the phone submerged.

The signal runs across the balanced XLR cable and into a circuit based on this link. https://www.diyrecordingequipment.com/pages/balanced-input-output-assembly-guide. I am slightly worried about the phantom power going into this Op-Amp. I may need to put DC blocks.

This should recombine the signal into an unbalanced line. I will then run it through a 100uF DC block and then bias the voltage for the ADC to sample (maybe I need another buffer stage?)

Currently, I have an ISR sampling the channels (up to 4), stuffing the results into a circular buffer, then whenever the circular buffer has enough data (512 bytes block size ) to fill a block of data, I write to an SD card.

I have an Eagle Circuit drafted.(warning its ugly). Will link the code I am using shorty for the teensy side. Just looking for some feed back on things that might go wrong if any one has some ideas. Digikey order is in and I am planning on building it this weekend.

Eagle Schematic
https://drive.google.com/file/d/1J4BhXnX_OKRQQq-kNJ2S5OznFEHRJVjh/view?usp=sharing
 
Last edited:
I know there are some users on this forum with experience using hydrophones, so I would comment only on TDOA
(BTW, I would TDOA not call beamforming, but this is not relevant)
In order to do TDOA, you need to sample the 4 channels synchronously. Valid also for beamforming. So, using a system where each channel has own ISR is a source of trouble, except for very low sampling frequencies. BTW, what is your desired bandwidth?

However, I'm confused, your schematic indicates a MCP3008 (a 8-channel 10bit ADC with fs of 200kHz). First, I would consider 10 bit resolution not adequate for most underwater sensing systems. Also, why an ISR for each channel if you use MCP3008?
 
You are completely right. I should of put TDOA/Beamforming.

I am hoping I can account for the 1 to 2 microseconds between samples in post processing. Another error in my above post (what I get for trying to post something between meetings at work). The one ISR would sample each of them sequentially. I'm not partial to the MCP3008. I just happened to have one in my spare parts bin. Any recommendations on an ADC converter that is high resolution and can sample multiple channels in one clock cycle?

Code added to this repo: https://github.com/julianblanco/audioSampleTeensy/tree/main/src/main.cpp
 
I'm not partial to the MCP3008. I just happened to have one in my spare parts bin. Any recommendations on an ADC converter that is high resolution and can sample multiple channels in one clock cycle?

Is your desired sampling only 5 kHz?
OK, I note, you are not using an ISR for each channel, but one ISR for all channels, and sample the channels sequentially in the Timer-driven ISR.
If you stick with this complexity and program is working, I would not change.
However, if you wanted to go faster and do some processing, then you should consider
- Using a ADC the multiplexes the data (TDM format)
- for underwater application use an ADC of at least 16 bit
- Use DMA to transfer data data to memory (not necessarily faster but reduces the number of ISRs and allows use of CPU for other tasks).

comment on underwater noise
ambient background noise is typically 1/f (better -17 dB/decade) which means that if no conditioning, than ADC will be driven mostly by very low frequencies. If ADC dynamic range is limited to, say, 10 bits (60 dB) then there is little chance to see any week signal that is above, say, 1 kHz.
two work arounds:
a) use 24 bit ADC witch gives you, say, 20 bit (or 120 dB) dynamic range
b) use a 10-30 kHz single pole high-pass filter to equalize the ambient noise.
(or combine both)
method b can easily be done if you replace the coupling capacitors (47u in your schematic) by much lower values (say 1-10 nF). The exact value depends on residual circuit (e.g. ADC input impedance)
 
method b can easily be done if you replace the coupling capacitors (47u in your schematic) by much lower values (say 1-10 nF). The exact value depends on residual circuit (e.g. ADC input impedance)

wanted to say 0.1 to 1 uF
 
My physicist friend who asked for my help with the project wants at least 10kHz. I think 40kHz would be optimal.

I've tried the Cirrus CS42448 before 6 24 bit A/D converters IIRC. But I was never able to get the chip to initialize when connecting with my teensy. I didnt see any bridges under the microscope but maybe when I did my hot air rework i nuked the chip.

Ultimately, id like to increase the dynamic range, but in the short term i will try the high pass filter.

Really appreciate your comments!
 
The choice of the OPA1642 is good I think, it has JFET inputs so its current noise shouldn't be an issue with that fairly high
reactive impedance (19k at 1kHz - about 8nF of piezo transducer I presume). The OPA1642 has low quiescent current draw
too which will help with phantom powering.
 
The choice of the OPA1642 is good I think, it has JFET inputs so its current noise shouldn't be an issue with that fairly high
reactive impedance (19k at 1kHz - about 8nF of piezo transducer I presume). The OPA1642 has low quiescent current draw
too which will help with phantom powering.

The 5.1 nV/sqrt(Hz) voltage noise is acceptable for most LF application. Obviously, the good old time with sub-nV/sqrt(Hz) FETs are gone. Also, one may need protection diodes on the input, so that a dropping hydrophone (extreme voltage spikes) does not kill the preamp.

Edit: As it may be of general interest:
the selected hydrophone (AS1) has a sensitivity of 40uV/Pa

quietest spectral ambient noise at 1 kHz (Sea state 0, no shipping, deep water) is 10 uPa (20dB//uPa) (1Hz BW)
So, in order to be ambient noise limited and not pre-amp limited, pre-amp voltage noise must be less than 0.4 nV
In other words: the 5 nV pre-amp noise corresponds to a spectral ambient noise of 125 uPa (42 dB//uPa) (still 1Hz BW).
Depending of the application this may, however, be acceptable (costal water, lot of ship traffic etc, are not quiet scenarios)
 
Last edited:
Some really good content on this thread. Thanks all! I am a friend of the OP helping with this project (but not the smart physicist one). We are shooting for a 4 element array with 75cm spacing between elements. For proof of concept we might try a 1000hz source signature (small illegal fishing boat). Goal would be to collect all for channels synchronized with decent SNR across 0 to 10kHZ band. I know this is a little out of date but I have been using this wenz curve chart for ballpark estimation of the ambient noise.

wenzcurve.jpg
 
Some comments:

For low noise you can try J309,LSK170,LSK489,INF3601. J309 is 35 cents and will be much lower capacitive load too. Look in The Art Of Electronics 3rd edition for a 1nV/sqHz preamp example and more info on low noise jfets.

I use OPA1654 as my default go to piano. It has 3.8nV/sqHz at 10 kHz.

A 24bit audio adc will give you a maximum of 108dB dynamic range.

With 75cm spacing you reach special aliasing soon. 10kHz won’t be useful for beamdorming at that spacing. Maybe aim for 100 to 1000Hz.

Are you planning to do beamforming signal processing on the teensy or offline?
 
Some comments:

For low noise you can try J309,LSK170,LSK489,INF3601. J309 is 35 cents and will be much lower capacitive load too. Look in The Art Of Electronics 3rd edition for a 1nV/sqHz preamp example and more info on low noise jfets.
can you source these JFETs? esp.LSK170, LSK489. OK, J309 on Mouser is 4,60 Euro.
 
OMG, did you see that price?

You can get those in SMD for 38cts/piece, or 10cts/piece per 1000. But try the opamp first, opa1642 or 1654, opa134 etc...
 
Ill keep that in mind! The first version it might be easier to work with thru hold stuff. Then once we bench test I plan to design a PCB for it.
 
Ad743, AD745 are fast enough for 1kHz sounds, LT1113, LT1792 and the newer ADA4817 are low noise candidates from Analog Devices. The sub 1nV preamp in TAOE is in figure 3.3.4 page 152.
 
OMG, did you see that price?

You can get those in SMD for 38cts/piece, or 10cts/piece per 1000. But try the opamp first, opa1642 or 1654, opa134 etc...

However J309 is 10nV/sqrt(Hz) not to be compared with LSK170
 
Datasheet has no noise data (except for a 100Hz quote, which is useless because 1/f is a bit high on this part). The Spice model is pretty accurate too, and it has a low source-resistance. From source-resistance and transductance you can ballpark the noise. But all this is a bit off topic don’t you think. Just build the preamp, limit the bandwidth, short the input, measure the output with a RMs meter or scope.

(tried to send you a private ,message, to talk about the analog side of things, but ur preferences are set to not receive private messages)
 
Status
Not open for further replies.
Back
Top