## Piezo disc communication

26 posts / 0 new
Author
Message

Hi,

I'm building a little project, where I'm about to try and send/receive a signal; from one piezo-disc to another piezo-disc.

Have one mounted on the bottom of an aquarium (the sender) and the other floating at the surface (the receiver).

Both piezo-elements are inside waterproof containers and the one at the bottom (the sender) has - for the moment - a plastic tube mounted on it's top.

The aquarium is filled with water (drinking water, so the salinity is low) and it's at room temperature.

Using a quite simple "knock-code" for the piezo-discs connected to the Arduinos; have two Arduinos, i.e., there are two completely separated systems.

(see picture)

GOAL (nr. 1): To get the receiver/piezo-disc at the surface to be able to pick up the (yet too faint) signals produced by the sender/piezo-disc at the bottom.

PROBLEM: Need to enhance/increase the sensitivity of the receiver, i.e., want to amplify the output-signal from the receiver. As it is now - unamplified - I can pick upp the signals if there is only approx. 2-3 cm between them, but want to be able to receive them from the bottom.

QUESTION: If I do amplify the output signal from the receiver with the help from a transistor/-s; how do I then make sure that the Arduino isn't damaged if the signal gets to strong? The receiver is connected to analog port A4 on the Arduino and I guess it's easy to damage the Arduino if ampilfied to much?

## Attachment(s):

This topic has a solution.
Last Edited: Sat. Jul 20, 2019 - 03:32 PM
This reply has been marked as the solution.

If the receiver amplifier is powered from the same voltage as the arduino's internal voltage, you won't damage anything.

You probably need a fair amount of amplification.

Signal varies as the inverse square. That is, double the distance, you have 1/4 the signal. So, if it just works at 2.5cm, 5cm would need 4X gain to work same way. Then 5cm to 10 cm would take another 4X for a total of 16X. Then 20cm would take another 4X for 64X. So, 100X might  be reasonable.

Now, if it has to work at ANY distance from 2cm to 20cm, then the design of the amplifier is a bit more challenging. But, I would think that a simple single-rail op-amp would do  it, though you need to find one with enough bandwidth for your ultrasonic signal.

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Thank you, ka7ehk!!

Another question I just got; is there a "best frequency" for sending/receiving a signal under water? Have understood that the size/diameter of the piezo-element gives it a fixed frequency (or, can I somehow manipulate/change the frequency generated by the disc)? And, is there a practical maximum distance for receiving a piezo-disc's signals?

Piezo transducers, of any shape or size, have a single operating frequency that is very hard to change. You need to operate it at the frequency it is designed for. If you don't know what that is for yours, you need to find out. It may be different in water or  out of the water.

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Got it; they are said to have 2.9±0.5 KHz in frequency. Bought the ones called "Goedrum Pack of 5 Prewired 35mm Piezo Disc", at amazon.

So, in theory; if I would like to be able to pick up the signal at different distances; I would have to vary the sensitivity at "the receiving end" a great deal, as the distance changes? Presuming the transmitter is sending with a fixed strength. Or, have a code that interprets the signal different depending on the distance ...

That is a pretty low frequency, and not at all "ultrasonic". That low frequency should make them fairly easy to work with.

You should not have to vary the sensitivity.

How are you "receiving" the signal, now? That is, what is the receiving transducer connected to?

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Using the same kind of disc in the receiver. It is connected to analog port A4 on the other Arduino Uno R3 unit (using seperate units for receive and transmit as the receiver couldn't fast enough pick up signals if/when used it for the sending, too).

I then let the program SerialPlot (https://bitbucket.org/hyOzd/seri...) plot the signal received.

When using a small resistor I can pick up really small/faint "knocks" and if have no resistor at all; even fainter signals - but another piezo-disc generating signals in the water is yet too faint; unless under 3 cm distance (but, that you already knew :).

So, you are reading the signal with the Analog-Digital Converter (ADC) and sending the values out the serial port? What the the ADC sample rate?

When using a small resistor I can pick up really small/faint "knocks" and if have no resistor at all; even fainter signals - but another piezo-disc generating signals in the water is yet too faint; unless under 3 cm distance (but, that you already knew :).

I am confused, here. What do you mean "use a small resistor"? It sounds like one case is using no piezo and the other does use piezo. What is the value of the "small  resistor"?

How do you drive the transmitting piezo?

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Yes, just the C++ code: "Serial.println(analogRead(A4));" to get the value (via ADC) from the receiver connected to analog port A4 and "prints" it out via serial to the SerialPlot program. Using 9600 in baud-rate.

It is a 390 ohm "pull-down" resistor I'm using (from positive cable of the piezo and via the resistor to ground (positive cable is also connected to A4)), so the value goes back down to zero in between "knocks" received. Without the resistor the measured value/voltage never goes down to zero, but the sensitivity gets much higher. Should probably parallell-connect several of those 390 ohms resistors to get "a smaller one"? (So, both gets high sensitivity and get it back down in between?)

Actually, if you have something other than 390 ohm use two in series, from Vcc to ground. 1.0K, 2,2K, just two of the same value. THEN, connect the positive wire to the junction between these two resistors. Also, connect the same junction to A4 and set the ADC to use Vcc as reference.

With this setup, the signal will only go to zero when it is very large (very, very large, as in more than 2V peak-peak). But, that is fine. In fact, it is desirable.

9600 baud is NOT fast enough for a 2.9KHz signal. 9600 baud sends 960 characters per second (approx 1.1ms per character). Each message will be several characters, lets use 4 as an example. This means 4.4ms, approximately, for each message. But each cycle of your piezo output only lasts 0.34ms! So, at the present time, you are only getting one point, more or  less at random, in every 12.9 cycles of the received signal. Thats pretty poor odds and shows you VERY little of what the receiver is actually doing. Even if you can push up the baud rate to 250Kbaud, you STILL only get a bit more than 2 samples per cycle. For such a signal, 1Mbaud would not be too slow to do what your are doing.

BUT, then you have the problem of ADC sample rate. Well, not that much of a problem actually. You can get about 15K samples per second with maximum resolution (e.g. maximum sensitivity) assuming standard Mega328P. That would be 5 samples per signal cycle and that should be OK.

Hope this helps

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

This is one place you will get better results using a bit

of analog circuitry.  Your signal is a fixed frequency and

uses an on-off keying (OOK) mechanism to transmit the

Feed the raw signal into an LC bandpass filter tuned to

the piezo frequency to boost the signal-to-noise ratio.

The output of this filter can then be fed into an Envelope

Follower which tracks the amplitude of the signal.  Then

finally use the Analog Comparator of your chip to look

for "bumps" in the output of the envelope follower, which

will correspond to the pulses sent by the transmitter.

--Mike

Many thanks, Jim!!

Will test all the things you wrote about and then I'll give you a follow up of how things are going!

Thank you, Mike!

Will try and test it; I'll write as soon as some progress is made!

BTW, you don't need an actual inductor for the filter.

An op-amp + capacitor can by used to simulate an

inductor well-enough for a filter.  See the Wikipedia

page for Gyrator and scroll half-way down the page

to Application / Simulated Inductor.

An envelope follower is also simple to build, requiring

just an op-amp buffer, diode, resistor and capacitor.

The whole thing can be done with one TL084 quad

op-amp, for example.

--Mike

Beware - TLO84 op-amp is NOT good for 5V single supply operation.

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Oops, missed this bit. Can you suggest an alternate

part?

--Mike

Don't have a good suggestion. Even looked at Jameco to see if there was a least common denominator that would work. Only thing that came halfway close was LM358; output swing is from 0V to (Vcc - 1.5).

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

Quote:

5V single supply operation

Is this a requirement, or just convenient?

Looking at the photo, there is a wire running to

the receiver, so you could feed +/- voltage rails

for the op-amps, and just make sure the output

can't fry the analog comparator input.

--Mike

If you can get a parabola to focus the waves instead of a tube, it would be better.

However, according to my calculations, at the frequency you are using the wavelength is about 50cm (that's about 1.5 feet for our US readers) so a single wave can barely fit in your aquarium. I'm sure this will cause all kinds of weird effects with resonance and harmonics and whatever.

Maybe you can't even focus them with any waveguide so much shorter than the wavelength.

I suppose that would be an advantage of using ultra-sounds, the wavelength will be much shorter, lets say 150kHz = 1cm = less weirdness.

El Tangas wrote:

If you can get a parabola to focus the waves instead of a tube, it would be better.

Thank you for your input, very good to know!

Question: Is there any way/formula to calculate the shape (the optimal shape) of a parabol; so that it - in the best possible way - directs the waves? And, should then the piezo-disc be mounted so that the waves goes into and gets reflected out from the parabola; like Cable-TV parabols do it? Or should it be mounted directly in/on the parabol?

Last Edited: Sun. Jul 21, 2019 - 07:37 PM

tryx wrote:
And, should then the piezo-disc be mounted so that the waves goes into and gets reflected out from the parabola; like Cable-TV parabols do it?

The piezo needs to be mounted exactly the same way as in a RF parabolic antenna, that is, in the focal point of the parabola. To find it you can use this method: https://www.analyzemath.com/para...

edit: You can use the parabolic mirror in the emitter, receiver or both.

Last Edited: Sun. Jul 21, 2019 - 09:42 PM

Great! Thank you, El Tangas!

When I get home I'll post a schematic for piezo tx / rx circuit!  It uses an LM392 designed for transducer amp.

Jim

Note that the filters are for a true ultrasonic frequency transducer.

If you must use the acoustic frequency transducers that you have, then you would have to change the filter stages' values.

Or you could purchase a couple of 25 kHz piezo transducers, inexpensively, and use the circuit as presented.

You may want to try several methods of coupling the transducer to the water.

At every "interface" between air and liquid there is a HUGE impedance mis-match, and much of the transducer's energy is simply reflected backwards, and not coupled forwards into the liquid.

The mis-match occurs at the receiving end, also, where it goes from liquid to air.

Do you have an O'scope?

Even a cheap, "toy scope"?

You really need one when working with analog signals.

Even a \$20 USD single channel scope (Banggood Electronics) will let you see the signal, its amplitude, any clipping, check the gain stages, etc.

JC

Hi tryx,

I am doing a similar project and I was wondering how much voltage you were you were using for your first transducer that is transmitting the signal?

Thanks.

dapp wrote:

Hi tryx,

I am doing a similar project and I was wondering how much voltage you were you were using for your first transducer that is transmitting the signal?

Thanks.

Hi dapp!

The initial value was just the output value from the Arduino UNO's analog port; so 5 Volt. And, if measured over the disc itself; the disc had around/approx. 2,5 Volt, since using a PWM with a duty-cycle of 50%.

// Tryx

Last Edited: Thu. Oct 31, 2019 - 06:00 PM