Other Ways to Beamform - Page 1
Forum section: electronics / beginners

author: braddrew0
author_rank: Regular Contributor
timestamp: November 15, 2015, 10:45:27 pm
content: Hi Guys,I'm looking to do some hobby projects using antenna arrays that require beamforming techniques. Specifically, I'm trying to produce a circuit that can send the same signal to multiple antennas with a variable phase delay (dependant on the antenna). I'm trying to achieve a similar effect to phased array radar, but across a range of frequencies (generally much lower).My background is digital, so my first thought on this is the "naive" approach of using an FPGA with a common reference signal. The FPGA would use direct digital synthesis to output the phase delayed wave to a set of pins for each antenna, which would then pass through a DAC to the amplifier/antenna.Is there a "better" (more efficient, simpler, more accurate or otherwise) method of achieving this than my naive approach?Thanks guys,Brad

author: max666
author_rank: Frequent Contributor
timestamp: November 16, 2015, 12:31:47 am
content: I can't help you, but at least I know that the answers you might get will depend hugely on what frequency you intend to use. If we're talking 2,4 GHz, then direct digital synthesis will be out of the question.How much bandwidth do you need for your signal? What range? Are there obstacles in the way, or is it free air?

author: braddrew0
author_rank: Regular Contributor
timestamp: November 16, 2015, 01:36:38 am
content: Hi Max,Thanks for the reply! My first project is to basically make a test bench that I can use to play around with the technology. The idea is a board that has a bunch of outputs, which will be the signals un-amplified. Then I can use the board to test out different ideas that I come up with. My first major project using this will be a steerable sonar rangefinder and for my second I'd like to try some of the advanced interference patterns that have been used in acoustic levitation recently. Overall, I'm just looking for something that is reasonably accurate that I can use to study interference patterns and how the technologies work.In terms of frequency range, I'm mainly looking to get started in ultrasonics, so a top end of around 1MHz is plenty. I believe this is within the realms of DDS? As for bandwidth, the narrower the better however this will probably be a case of I'll take what I can get - for the rangefinder, apart from noise reduction I'm not sure how much difference it will make? The acoustic levitation side is probably a whole other ball game - I imagine that will need to be narrow, however if it's unachievable with anything I can make then I'll stick to watching the videos of it on YouTubeIn terms of power and range, my idea was to make this test bench first without the amplifiers. Then if I'm looking for more range or for a different medium, I can just change the amps. Is that a valid thought process?Thanks once again, appreciate the help!Brad

author: zapta
author_rank: Super Contributor
timestamp: November 16, 2015, 03:42:54 am
content: If you want to start with beam forming, you may want to starts with sound frequencies, you will have more design options due to the lower frequencies (and it's still useful in real life as used by sonar systems).If you plan to cover a wide frequency range, I think that your delay need to use const time rather than const phase since it is used to compensate for the eave propagation time in the medium.You can start with a simple simulation in software. Define arrangement and distances of your elements (e.g. linear spaced on a straight line) or along a circle, assume the directional function of each element (e.g. omni directional), and then play with delays and amplitude coefficients and compute the sum of energy at some far enough points.You can get quiet a lot of insight with software simulation only without having to build an echo and multi path free range.

author: braddrew0
author_rank: Regular Contributor
timestamp: November 16, 2015, 03:10:41 pm
content: Hi zapta,Thanks for the reply! Can I clarify what you mean by simulation? Do you mean simulate the effect of an antenna array using custom software? Or do you mean design the circuit and simulate the FPGA?I'm definitely interested in sound frequencies - I can see lots of uses for a board that can output multiple signals like this in hobby work. Thanks again for your help!Brad

author: Kalvin
author_rank: Super Contributor
timestamp: November 16, 2015, 03:19:13 pm
content: Audio frequency (sound) beamforming might be a good startingpoint as it can be simulated easily as zapta suggested. And with a quality sound card (quality = sample clock doesn't contain jitter which will ruing the day) and few inexpensive microphones one can test the algorithms in real world. The audio signal from different microphones can be saved to harddisk and processed off-line, or the audio signals can also be processed real-time as needed.

author: zapta
author_rank: Super Contributor
timestamp: November 16, 2015, 05:37:32 pm
content: By simulation I mean write a program in you favorite language that will compute the sum of the waves at distant points around the array. This will give you the shape of your beam. It's basically a sum of sine waves with different amplitudes (due to beam former coefficients, assuming antenna elements are omni directional) and phases (due to delays by the beam former and the extra distance in the media).Play with the beam former parameter and see what kind of beam you get for each frequency.I think it can even be done in a spreadsheet.

author: IconicPCB
author_rank: Super Contributor
timestamp: November 16, 2015, 09:20:20 pm
content: Hello Brad,Welcome to the space.I am presently looking to design an ultrasonic test bench capable of operating a number of ultrasonic transducers with programabble phase drive with the view to recreating some of the interesting effects such as for example ultrasonic force field.www.gizmag.com/ultrasonic-tactile-haptic-interaction-holodeck/29360/

author: braddrew0
author_rank: Regular Contributor
timestamp: November 16, 2015, 11:11:37 pm
content: Thanks Guys,That's a great idea to simulate in excel and test through the sound card, I'll definitely be giving that a go!IconicPCB - that is *exactly* what I was looking for! Well, not the application (although I must say, 3D haptic feedback is ingenious) but the idea of playing around with beamforming to do something practical like this. Basically what I have envisioned in my head is the bottom half of that board - I wanted a 'prototyping' board that generated the synchronised signals so that I could then make a different amplifier board based on the project... so today I might be working on ultrasonics in the 200kHz band, so I'll use XYZ amps and tomorrow it's audio sub-20kHz with ABC amps. The more I think about it though, maybe I should start more specific (ie a 200kHz ultrasonic board with amp) and then generalise later...There is a lot of great info on that site - were you part of the design team? It looks like they've used 16 core XMOS controllers synchronised across multiple boards (their paper states "XMOS L1-128" but I'm assuming that's a typo for L16-128). I hadn't even thought of this to be honest - microcontrollers are obviously much simpler than an FPGA but I didn't think they'd have the I/O for it. Their paper states that they've gotten around this by using a single line per amplifier with square waves. Would this affect the accuracy of the system? Even though the transmission frequencies are limited by the bandwidth of the antenna, I would have thought that this would be a worst case scenario - without filtering you'd be transmitting a lot of noise?Either way, great link and that definitely gives me something to think about. Thanks!Brad

author: zapta
author_rank: Super Contributor
timestamp: November 17, 2015, 12:17:19 am
content: Brad, here is an idea how to simulate the beam former. In the picture below, this is an array with three elements with spacing l. Assuming you want to create a beam directed at the source at angle alpha. The the signal path to the elements A, B, and C are increasing by l*sin(alpha) for each consecutive elements, that is, it first arrives to A, then to B and then to C. Each element is connected to a receiver channel with a gain of Kx and a delay of Tx, for x in A, B, C. You can start with Ka = Kb = Kc = 1 and the three delays are set to have all the three signals arriving to the sum (+) at the same time. Now that you have the parameters of your beam former, you can calculate the output at sum (+) for source at varying angles. This will give you the shape of your beam. Then you can play with the coefficient Ka, Kb, Kc to control the shape of your beam.

author: IconicPCB
author_rank: Super Contributor
timestamp: November 17, 2015, 05:50:59 am
content: Brad,No link to the site other than an interested reader.

author: braddrew0
author_rank: Regular Contributor
timestamp: November 17, 2015, 06:04:43 pm
content: Thanks guys - zapta, that's great info, thank you! I'll try to whip something up in Excel and see how I go...Thanks!Brad

author: hamster_nz
author_rank: Super Contributor
timestamp: November 17, 2015, 08:27:26 pm
content: This might also be of interest (if you haven't seen it already!)http://hackaday.com/2015/04/07/build-a-phased-array-radar-in-your-garage-that-sees-through-walls/Anyone can build a switched array radar system. Here is an example of one built in my garage from 80/20 aluminum and some Mini-Circuits components. The size of the array was set by the longest 6 pieces of 80/20 I could find at the local junk yard, which were 8’3”. In this system I multiplexed the transmitter port and receiver port across 13 and 8 antennas respectively. The switching sequence allows for the phase center of this radar to be electronically moved down its length for a total of 44 effective radar Transmit/Receive pairs. I used a Synthetic Aperture Radar (SAR) algorithm that accounts for wavefront curvature to form the imagery.

author: zapta
author_rank: Super Contributor
timestamp: November 18, 2015, 12:44:11 am
content: Quote from: braddrew0 on November 17, 2015, 06:04:43 pmP.S. computing the sum of sine waves of same frequency with different phases and amplitudes is done using vectors, not the momentary sin(x) + sin(y). Determine the relative phases of the signals, convert each one to cartesian, sum the x's and y's respectively and convert back to polar. This will give the amplitude and phase of the sum (which is a sine wave at the same frequency).http://www.electronics-tutorials.ws/accircuits/phasors.html

author: hamster_nz
author_rank: Super Contributor
timestamp: November 18, 2015, 01:32:59 am
content: Quote from: zapta on November 18, 2015, 12:44:11 amSo by adding a*sin(x) and b*cos(x) you can generate up to 90 degrees of phase shift (if a and b are both 0 or greater) or any phase shift you like (if a or b are allowed to be negative too).... then you don't need a phase programmable signal source for each channel, just the ability to mix sin(x) and cos(x) together in differing amounts.

author: zapta
author_rank: Super Contributor
timestamp: November 18, 2015, 05:06:48 am
content: Quote from: hamster_nz on November 18, 2015, 01:32:59 amI am by no mean a signal processing expert but your suggestion may work if your beam is for 1. Transmitting (vs recurving) and 2. Sending a single frequency some each wave. A more general approach is to use delays that compensate for the differences in travel distance in the media. This works also for reviving and for a band of frequencies.

author: hamster_nz
author_rank: Super Contributor
timestamp: November 18, 2015, 08:46:48 am
content: Quote from: zapta on November 18, 2015, 05:06:48 amQuite right about receiving - it gets just too tricky.Here's my thinking on transmitting.Say you have a line of five ultrasonic transmitters in a line over 300mm, and you want to steer by 45 degrees. At 45 degrees we need equivalent of a 212mm offset (300mm * sin(45 degrees)), the delays would be 0ms, 179ms, 358ms, 537ms, 707ms (if my maths guestimate is accurate, and the speed of sound is 300m/s).At 45 degrees the other way it would be 707ms, 537ms, 358ms, 179ms, 0ms, with the 0ms reference point being at the other end of the array.It would be a pain to use 0ms delay as the reference point, as it shifts from one end of the array to the other, so on axis would need to be 358ms delay for all sensors.Say it is transmitting at 100 kHz - a wavelength of 3 mm. The transmitters could be driven from the same DDS source with a phase offset of 2*pi*35, 2*pi*17.5, 0, 2*pi*-17.5, 2*pi*-35 (+/- 35 wavelengths) by multiplying the sin() & cos() of the transmitting signal by the sin() & cos() of the phase offset. (Yeah, I know this is too high a frequency for the number & size of the array, but let's just run with it...)You don't have to worry about the 0.358ms delay that each transmitter is offset from the ideal,as you keep the middle transmitter with 0 phase delay, and then have one end of the array equivalent to being advanced in time, the other end being delayed using + and - phase offsets.You can change frequencies, if you want to sweep the frequency to down to from 100 kHz to 50 kHz, you also sweep the phase offset down to 2*pi*17.5, 2*pi*9.75, 0, 2*pi*-9.75, 2*pi*-17, and everything works out. If do it right the change in wavelength due to the phase shift changes make it virtually indistinguishable from an delay line implementation during the sweep except maybe a the the beginning and ends of the sweep (this is most likely an incorrect - I expect that focus of the beam would move slightly to the center during the sweep, and the difference would be more the higher the frequency, faster the sweep, and the greater the beam is pointing off axis)What if you wanted to send multiple beams in different directions at the same time? If you are working with physical delay lines you are unable to. However if you do it with the math you can. Likewise, if you are using a digital memory based delay line you have to interpolate if your desired delay is not a multiple of the sample period.You can also switch transmitters between different configurations instantly, and don't have to wait for the delay to empty out as they reconfigure themselves. I guess this is how multi-beam sonar works...But on refection, this could all be done with a digital memory based delay line with one tap for each transmitter, for each concurrent frequency.

author: Kalvin
author_rank: Super Contributor
timestamp: November 18, 2015, 11:21:42 am
content: FIR filter is quite good delay lineFIR can be used to implement fractional delays, too for more granular delay adjustment. For each transmitter we need one FIR filter, thus we require N FIR filters for N transmitters. The signal from the signal source is fed into all FIR filters simultanously and the magic happens inside the FIRs. This is very straight forward when you need to streer a single signal.How much more complicated the system will become if you want to streer the same signal to two or more different locations? The brute force approach would be to add another set of FIR filters. But the FIR filters of each transmitter can be combined into one FIR filter in each transmitter, so adding beams doesn't require any overhead, other than ajusting the FIR coefficients when changing the beam properties.No complicated delay lines required

author: braddrew0
author_rank: Regular Contributor
timestamp: November 18, 2015, 08:40:53 pm
content: Wow, thanks guys, some great info here! It's going to make me a while to digest everything here but this has helped immensely!Thanks!Brad

author: hamster_nz
author_rank: Super Contributor
timestamp: November 19, 2015, 12:44:26 am
content: Quote from: Kalvin on November 18, 2015, 11:21:42 amSo true!Quote from: Kalvin on November 18, 2015, 11:21:42 amYou could even have multiple frequencies going into the FIR at the same time (e.g sum f/5, f/7,f/9,f/11,f/13 (where f is the sample rate), and extract them at different points in FIR by having a kernel for the desired frequencyHowever, that that will take a lot of MACs to calculate - at least one for each non-zero point in the kernel. At a rate of 1M sample/sec, and guessing that each sub-kernel would need to be being 4x the wavelength so it would required about 200 multiply accumulates (MACs) per channel.That isn't so bad for an smallish FPGA - a five 1MS/s DACs, An FPGA with 5 DSP block running at about 200MH/z for the MACs, 5 or 10 2k memory blocks for the sample buffer (each 1000 points for the FIR gives 1ms of delay), another 5 memory blocks to hold kernel constants for each channel.To save calculating the kernels on the fly you could have eight kernels for each frequency, each offset by 0.125us to be held in ROM. That way the control interface would be just 5 registers (one for each frequency) with the high bits selecting where the kernel starts, and the lowest 3 bits selecting which of the kernels to use. Oh, an you would most likely also need one more control register to turn each frequency on.Have a little RS232 or I2C interface to drop values into the register and you are done! five channels (200kHz, 142kHz, 111kHz, 90kHz, 76kHz) all adjustable in phase to within 0.125us, controlled over a serial port.And the same basic design could be used for receiving - just feed the input from an ADC into each FIR and sum the per-frequency-kernel outputs to give the signal for each of the five bands.