Ultrasonic FSK data transmission

M

Mac

Guest
I'm thinking about doing an ultrasonic FSK data transmission system.

Does anyone have any idea if this would work well? My plan was to use 40
kHz transducers and use FSK with the two frequencies being 40.727 kHz and
39.529 kHz.

(These numbers come from dividing down a 4.032 MHz crystal oscillator by
102 or 99, respectively.)

For the higher frequency, I would use exactly 34 full cycles as one
baud period. For the lower frequency I would use 33 full cycles. This
works out to be exactly the same duration, for those who may be curious.
So I would have, in effect, continuous phase FSK. According to my
communications text book, the minimum frequency shift needs to be 1/2 the
baud rate or the frequency shift cannot be detected reliably. Since my
frequency shift is nearly twice that lower threshold (i.e, the same as
the baud rate), it should be no problem, right?

I would just drive the transducer with a square wave when transmitting.
For decode, I was thinking that I would use a PLL (maybe the LMC568?),
possibly with a pre-amp in front of it. I would use a comparator to
discriminate between ones and zeros. The inverting terminal would have a
highly filtered version of the control voltage, and the non-inverting
terminal would have a less filtered version of the control voltage. If
necessary, I could restrict the data set to ensure a minimum number of
transitions per byte (or whatever). Or I could use zero as a start bit and
one as a stop bit, as in typical RS232, although see below.

One thing I am worried about is that in my application I would only send
one byte at a time, with long silences in between. I have little
experience with PLL's, but I am afraid that the loop would not have
time to lock if I just start transmitting. This might preclude using
standard RS232 timing. One solution to this problem (if it is a problem)
would be to send a pre-amble of several zeros followed by a one as a start
of frame indicator. The decoder would then have to tolerate a potentially
variable and fractional number of zeros at the beginning of each frame (or
byte.)

Does anyone have any comments or suggestions? Am I doing this the hard
way?

Or does anyone have reason to believe that it won't work at all?

Thanks!

--Mac
 
"Mac" in news:pan.2004.11.05.07.00.39.781206@bar.net...
... For the higher frequency, I would use exactly 34 full cycles
as one baud period. For the lower frequency I would use 33
full cycles. This works out to be exactly the same duration ...
So I would have, in effect, continuous phase FSK.
Yes, as I recall that qualifies as CPSK or MSK (Minimum-Shift Keying). The
steps in the 2-dimensional signal space are rotations by fixed angles.
Favorable spectral properties too, from the lack of phase discontinuities.
Binary-orthogonal, just generate using a little DSP or uC, and detect with
correlation once you have a phase reference, which is pretty easy because of
the phase continuity (you can probably build some kind of loop or other to
lock to it robustly). Nothing to it.

-- Max
 
Max Hauser wrote:

"Mac" in news:pan.2004.11.05.07.00.39.781206@bar.net...

... For the higher frequency, I would use exactly 34 full cycles
as one baud period. For the lower frequency I would use 33
full cycles. This works out to be exactly the same duration ...
So I would have, in effect, continuous phase FSK.


Yes, as I recall that qualifies as CPSK or MSK (Minimum-Shift Keying). The
steps in the 2-dimensional signal space are rotations by fixed angles.
Favorable spectral properties too, from the lack of phase discontinuities.
Binary-orthogonal, just generate using a little DSP or uC, and detect with
correlation once you have a phase reference, which is pretty easy because of
the phase continuity (you can probably build some kind of loop or other to
lock to it robustly). Nothing to it.

-- Max


MSK specifically refers to a frequency shift of 1/2 the baud rate, not
just continuous-phase FSK.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
 
On Fri, 05 Nov 2004 07:47:37 -0800, Tim Wescott wrote:

Max Hauser wrote:

"Mac" in news:pan.2004.11.05.07.00.39.781206@bar.net...

... For the higher frequency, I would use exactly 34 full cycles
as one baud period. For the lower frequency I would use 33
full cycles. This works out to be exactly the same duration ...
So I would have, in effect, continuous phase FSK.


Yes, as I recall that qualifies as CPSK or MSK (Minimum-Shift Keying).
[snip]

-- Max


MSK specifically refers to a frequency shift of 1/2 the baud rate, not
just continuous-phase FSK.
Thanks. That's what my textbook says, too: half the baud rate and phase
continuous.

--Mac
 
On Fri, 05 Nov 2004 20:24:53 +0000, Max Hauser wrote:

"Tim Wescott" in news:10on84m65jqmlce@corp.supernews.com...

MSK specifically refers to a frequency shift of 1/2 the baud
rate, not just continuous-phase FSK.


I knew I could rely on the newsgroup to correct the jargon. Any technical
discussion like this one is extremely constructive, compared to all the
people currently "peeing in the sandbox" of this newsgroup, in Roger Price's
phrase. ("The big kids are hitting the little kids, the little kids are
eating the crayons, and everyone's peeing in the sandbox." -- 1970)
Reminds me of Cartman in the pool with the First-Graders. ;-)

Cheers!
Rich
 
Don't forget that the narrow bandwidth of the ultrasonic transducer places a
upper limit on the data rate!

regards -
Henry

--

<Schau auch mal auf meine Homepage www.ehydra.dyndns.info>
<u.a. Versand von Wasserflohzuchtansatz, Wasserpflanzen/-schnecken,
brasilianischer Sauerklee, Natron zum Backen/Baden, u.a.>
<Alternativ über http://people.freenet.de/algenkocher>
 
Mac wrote:

I'm thinking about doing an ultrasonic FSK data transmission system.

Does anyone have any idea if this would work well? My plan was to use 40
kHz transducers and use FSK with the two frequencies being 40.727 kHz and
39.529 kHz.

(These numbers come from dividing down a 4.032 MHz crystal oscillator by
102 or 99, respectively.)

For the higher frequency, I would use exactly 34 full cycles as one
baud period. For the lower frequency I would use 33 full cycles. This
works out to be exactly the same duration, for those who may be curious.
So I would have, in effect, continuous phase FSK. According to my
communications text book, the minimum frequency shift needs to be 1/2 the
baud rate or the frequency shift cannot be detected reliably. Since my
frequency shift is nearly twice that lower threshold (i.e, the same as
the baud rate), it should be no problem, right?

I would just drive the transducer with a square wave when transmitting.
For decode, I was thinking that I would use a PLL (maybe the LMC568?),
possibly with a pre-amp in front of it. I would use a comparator to
discriminate between ones and zeros. The inverting terminal would have a
highly filtered version of the control voltage, and the non-inverting
terminal would have a less filtered version of the control voltage. If
necessary, I could restrict the data set to ensure a minimum number of
transitions per byte (or whatever). Or I could use zero as a start bit and
one as a stop bit, as in typical RS232, although see below.

One thing I am worried about is that in my application I would only send
one byte at a time, with long silences in between. I have little
experience with PLL's, but I am afraid that the loop would not have
time to lock if I just start transmitting. This might preclude using
standard RS232 timing. One solution to this problem (if it is a problem)
would be to send a pre-amble of several zeros followed by a one as a start
of frame indicator. The decoder would then have to tolerate a potentially
variable and fractional number of zeros at the beginning of each frame (or
byte.)

Does anyone have any comments or suggestions? Am I doing this the hard
way?

Or does anyone have reason to believe that it won't work at all?

Thanks!

--Mac

Use two bandpass filters, that was a pretty common technique in radio.
You won't have any start-up problems. You probably want to mix the
signal down to a lower frequency, though. You could either do this with
analog circuitry or with a small DSP chip -- if you used the right DSP
chip you could even sample at 80kHz and do quadrature demodulation to
avoid the audio image.

Or you may be able to get away with using a cheap mixer like the SE612
without pre-filtering, on the assumption that any audio images won't
have interference.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
 

Welcome to EDABoard.com

Sponsor

Back
Top