# Ultrasound pulses and reflection problems

I am building a whiteboard to track the position of its pen. I have n ultrasound receivers placed on the periphery of the whiteboard, and an ultrasound emitter in the pen. The pen emits pulses the receivers detect. A microprocessor gathers the arrival times of the pulses for each receiver, and with the time differences of arrival (TDOA) it makes an estimate of the position of the pen following a multilateration algorithm.

Ultrasounds reflect on surfaces, which can cause interference. This is a restriction on the frequency of the pulses. At the moment, I pulse the pen at 10Hz, which is enough for the reflections to die off and not interfere. Unfortunately, 10Hz is not fast enough a sampling for my purposes. Ideally the pen would pulse at 100Hz. (The pen emitter is connected to a microcontroller, so I can control the shape and frequency of the pulse.)

What tricks can I use to tackle the reflection issue? What are some standard filtering techniques? Could using different pulse patterns in a cycle help filter out the reflections?

-
What is the form of the pulse (a sinusoid, some modulated signal, etc.)? What is each pulse's duration? What bandwidth is available for the end-to-end ultrasound system? One scheme that might work would be to cycle through a set of different orthogonal pulse shapes for subsequent transmissions; this would help prevent inter-pulse interference. It would require some level of time synchronization between the whiteboard and the pen, but that could potentially be resolved. – Jason R Dec 8 '12 at 20:49
I get to choose the form of the pulse, and the duration (the transmitter is connected to a fully programmable microprocessor DAC). The ultrasonic bandwidth is 40kHz +/- 1kHz. What exactly do you mean by "orthogonal pulse shapes"? – Randomblue Dec 8 '12 at 20:57
@Justin an orthogonal family of pulse shapes are for example, pulses/signals whose dot product with each other gives 0. For example one cycle of a sin wave and one cycle of a cosine wave, when their dot product taken, give zero. – Mohammad Dec 9 '12 at 0:54
@Justin: What amount of processing resources are available on the backend that is connected to the array of ultrasound receivers? – Jason R Dec 11 '12 at 19:12
@JasonR: There are two layers of processing. The first is an ARM chip that simply does the data acquisition (sends the readings from the receivers to the internet). I then have a powerful server to receive the data and process it. – Randomblue Dec 12 '12 at 9:55

It would appear that your problem lends itself very nicely to using a CDMA scheme.

Let starts with some properties of (DSSS) CDMA. (Direct Sequence Spread Spectrum, Code-Division Multiple Access). Its a mouthful, but it is really easy to implement.

In CDMA, your pulse (at baseband) is actually made up of many concatenated 'chips' as they are called. The chips are just 1s or -1s, of a fixed duration. For example, your chipping sequence might be [1 -1 1 -1 -1 -1 1]. You would use this chipping sequence to modulate your carrier.

However, you cannot just make up your chipping code. What you want to do is use chipping codes that have the very nice property, that their autocorrelation function is a delta function like so:

(Equivalently, their power spectral density is white). For example, you can look into using Barker Sequences as your chipping code, (usually used in radar), or you can also look at using Gold Codes. Practically speaking however, this means that you get the maximum correlation score in your receiver, ONLY when the receivers' code, exactly lines up with the transmitted code, and zero otherwise.