<< Chapter < Page Chapter >> Page >
This module describes our implementation in Labview of an eight microphone, two-dimensional array beamformer. Due to the relatively small size of the beamformer, it was implemented using a delay and sum algorithm in the time domain.

Introduction

Our project involves using a two-dimensional array of microphones to determine the direction from which a mystery signal comes. This involves taking data from the microphones , doing analysis of the data, and then outputting the results. The second step we chose to implement in Labview. In order to interface correctly with the DAQ card we had available, we used Labview 5.1.

The labview implementation of our project involved several stages: First, we wrote a vi designed to get the input from the microphones by sampling the eight inputs to the DAQ card, and separate the resulting data into eight arrays, each holding a digitized signal. We then upsampled each array (using a separate vi for that purpose) and passed the upsampled signals to the main analysis vi .

The main analysis vi tests three of the signals by taking two of them and testing them individually against the third. This test involves delaying the two signals and taking the norm of the delayed signal and the third signal. Each norm is collected in an array, from which the max norm -- correspondent to the correct delay between the two signals -- can be found.

If we know the correct delays between three signals, we can do some mathematics (explained in greater depth in the section on the delay generation vi ) and derive the angles the signal is coming from.

As a two-dimensional array has the ability to discern a point in three-dimensional space, there are two angles found here: theta , the angle along the xy plane, and phi , the angle relative to the z axis.

From the angles found, we can then calculate the appropriate delays to be applied to the other five signals. Finally, we take all eight signals, delay them appropriately, and add them together to get our final result. This is known as delay and sum beamforming .

Waveform generation vi

Most of the work here was done for us already, through Labview's Generate Waveforms VI , a module that, given certain information about an attached DAQ card, sampling rate, time to be sampled, etc., will seek out that DAQ card, sample the requested channels, and return the results in a two-dimensional array of doubles, where one dimension corresponds to the sample of the signal at one particular point in time, and the other to which channel sampled from.

Waveform generation vi

VI we created to sample the microphones and upsample the resulting arrays

Our module took the data from said VI and separated it into eight one-dimensional arrays, one for each microphone. (This was an essential step, as many of the array analysis functions that we wished to use would only work with one-dimensional arrays.) Using our Upsampling VI (discussed below), we then upsampled the signals, lowpass filtered them to interpolate the signal, and set the eight filtered and upsampled signals as the output of this VI. This module takes as an input N, the amount by which the signals should be upsampled, and an input fs, the sampling frequency.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Elec 301 projects fall 2005. OpenStax CNX. Sep 25, 2007 Download for free at http://cnx.org/content/col10380/1.3
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Elec 301 projects fall 2005' conversation and receive update notifications?

Ask