Automatic Antenna Phasing Project
Max Woesner
Class Project - Automatic Antenna Phasing
Team Members:
Joshua Sarris
Kevin Starkey
Max Woesner
Nick Christman
Problem Statement
Design and implement an algorithm to determine the amount of delay necessary to automatically add two signals from different antennas in phase. Also determine the relative amplitudes of the two signals.
Tools:
Software:
- MATLAB/Octave
- GnuRadio
- Dttsp
- Sdr-Shell
Hardware:
- Dual Softrock Receiver
- Two Antennas
Data:
Files of real world data gathered using the above equipment will be provided.
References:
Beam Steering on 160 Meters
More K1LT Notes
Install gnuradio on Ubuntu 9.10 using the package manager
Install gnuradio on Ubuntu 9.10 from GIT repositories
Other Information:
So Gnu Radio will work with Jack, you need to do the following:
Edit ~/.gnuradio/config.conf Add these three lines to the file: [audio] verbose = True audio_module = audio_jack
The IF of the signals is the sample_rate/4. The bandwidth of SSB signals is about 3 KHz, CW (Morse code) about 200 Hz. The format of the IF signals is I/Q (one on each channel).
This project should be useful with dual antenna receivers to detect the polarization or angle of arrival of a signal, and in general to improve the signals received.
Approach to Solution
We first downloaded the files with the real world data and used Audacity to shorten the data to a workable length to analyze in MATLAB.
After obtaining a reasonable length of data (~5 seconds worth) we used MATLAB's 'spectrogram' function to create a spectrograph of our signal in order to obtain a reasonable frequency. Here is the code used and the results (shown below):
close all; clear all; sound1 = 'Alaska_mid-1.wav'; sound2 = 'Alaska_mid-2.wav'; sound3 = 'Alaska_mid-3.wav'; sound4 = 'Alaska_mid-4.wav'; % Opens wave files above and labels them appropriately % while also cheking dimensions and scaling the matrices % appropriately. [I1 Q1 I2 Q2] = dimCheck(sound1,sound2,sound3,sound4); % Grabs the sampling frequency of each sound file. [FI1 FQ1 FI2 FQ2] = freqGet(sound1,sound2,sound3,sound4); % Creates a spectrograph of each signal while also % outputing the number of samples (S), the frequecnies % (F), and the times at which the spectrogram is % computed. [S1,F1,T1] = spectrogram(I1); [S2,F2,T2] = spectrogram(I2); [S3,F3,T3] = spectrogram(Q1); [S4,F4,T4] = spectrogram(Q2); Fn = F1/(F1'*F1); figure(1) spectrogram(I1) title('Spectrogram of I1') figure(2) spectrogram(Q1) title('Spectrogram of Q1') figure(3) spectrogram(I2) title('Spectrogram of I2') figure(4) spectrogram(Q2) title('Spectrogram of Q2')
As you can see, it appears that we need to create a bandpass (FIR) filter that will filter around .5 to .57 rad/s.
Unfortunately, due to time constraints, we were unable to proceed further. However, if time provided, we would have proceeded as follows:
- Create a bandpass (FIR) filter as described above.
- Create a cross-correlation algorithm that would obtain the phase difference between I1, I2 and Q1, Q2.