https://fweb.wallawalla.edu/class-wiki/api.php?action=feedcontributions&user=Brian.haddad&feedformat=atomClass Wiki - User contributions [en]2024-03-28T21:36:37ZUser contributionsMediaWiki 1.39.1https://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10962Brian Haddad2014-01-27T02:28:57Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brianhaddad(AT)outlook(dot)com<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Formatting Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
===<u>PSK31 Demodulation</u>===<br />
Fall, 2012<br />
<br />
Signals & Systems (ENGR 455)<br />
<br />
<br />
[[PSK31 Demodulation]] <br />
*Partner [[Denver Lodge]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10961Brian Haddad2014-01-27T02:26:23Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brianhaddad(AT)outlook(dot)com<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
===<u>PSK31 Demodulation</u>===<br />
Fall, 2012<br />
<br />
Signals & Systems (ENGR 455)<br />
<br />
<br />
[[PSK31 Demodulation]] <br />
*Partner [[Denver Lodge]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10960Brian Haddad2014-01-27T02:23:08Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brianhaddad(AT)outlook(dot)com<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
===<u>PSK31 Demodulation</u>===<br />
Fall, 2012<br />
Class: Signals & Systems (ENGR 455)<br />
<br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10959Brian Haddad2014-01-27T01:05:33Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brianhaddad(AT)outlook(dot)com<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
===<u>PSK31 Demodulation</u>===<br />
Fall, 2012 <br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10624Brian Haddad2012-12-13T07:19:35Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
===<u>PSK31 Demodulation</u>===<br />
Fall, 2012 <br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Denver_Lodge&diff=10623Denver Lodge2012-12-13T07:08:01Z<p>Brian.haddad: </p>
<hr />
<div>== '''PSK31 Demodulation''' ==<br />
*Partner:[[ Brian Haddad]]<br />
Link to Article:[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Denver_Lodge&diff=10622Denver Lodge2012-12-13T07:07:36Z<p>Brian.haddad: </p>
<hr />
<div>== '''PSK31 Demodulation''' ==<br />
*Partner:[[ Brian Haddad]]<br />
Link to Article:[[Brian Haddad| PSK31 Demodulation]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10621Brian Haddad2012-12-13T07:06:59Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
=='''''Projects'''''==<br />
<br />
<br />
=== PSK31 Demodulation ===<br />
Fall, 2012 <br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=PSK31_Demodulation&diff=10620PSK31 Demodulation2012-12-13T07:04:42Z<p>Brian.haddad: </p>
<hr />
<div>Partners: [[Brian Haddad]]<br />
::[[Denver Lodge]]<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*'''Matlab Script''': The scripts aren't available at this time (I am having trouble uploading them). In the mean time, contact me if you would like a copy.<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10619Brian Haddad2012-12-13T07:01:30Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 <br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=PSK31_Demodulation&diff=10618PSK31 Demodulation2012-12-13T06:59:43Z<p>Brian.haddad: Created page with ' '''''Abstract''''' :This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them t…'</p>
<hr />
<div> <br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*'''Matlab Script''': The scripts aren't available at this time (I am having trouble uploading them). In the mean time, contact me if you would like a copy.<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10617Brian Haddad2012-12-13T06:57:13Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
[[PSK31 Demodulation]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*'''Matlab Script''': The scripts aren't available at this time (I am having trouble uploading them). In the mean time, contact me if you would like a copy.<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10616Brian Haddad2012-12-13T06:52:55Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
[[PSK31 Demodulation]]<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*'''Matlab Script''': The scripts aren't available at this time (I am having trouble uploading them). In the mean time, contact me if you would like a copy.<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10615Brian Haddad2012-12-13T05:55:27Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*'''Matlab Script''': The scripts aren't available at this time (I am having trouble uploading them). In the mean time, contact me if you would like a copy.<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10614Brian Haddad2012-12-13T05:23:39Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses [http://en.wikipedia.org/wiki/Varicode Varicode]; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
'''''Sample Output'''''<br />
<pre><br />
>> main<br />
<br />
noise =<br />
<br />
0.9487<br />
<br />
<br />
frequencychoice =<br />
<br />
2<br />
<br />
<br />
z =<br />
<br />
1.0e+03 *<br />
<br />
0.1005 3.9993<br />
<br />
<br />
W =<br />
<br />
0.0017 0.0033<br />
0.0992 0.1008<br />
<br />
<br />
Wn =<br />
<br />
0.0992 0.1008<br />
<br />
<br />
percent =<br />
<br />
53.7313<br />
<br />
<br />
ans =<br />
<br />
Columns 1 through 10<br />
<br />
0 0 0 0 0 0 0 0 0 0<br />
<br />
Columns 11 through 15<br />
<br />
0 0 0 0 0<br />
<br />
<br />
ans =<br />
<br />
Hello <br />
<br />
<br />
ans =<br />
<br />
Hello<br />
</pre><br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10610Brian Haddad2012-12-13T05:04:01Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*[http://opensource.org/licenses/BSD-2-Clause BSD license]<br />
:*[http://en.wikipedia.org/wiki/Varicode Varicode]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]<br />
*[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10609Brian Haddad2012-12-13T05:02:46Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*[[http://opensource.org/licenses/BSD-2-Clause BSD license]]<br />
:*[[http://en.wikipedia.org/wiki/Varicode Varicode]]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10608Brian Haddad2012-12-13T05:01:22Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
:*[[http://en.wikipedia.org/wiki/Varicode Varicode]]<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10607Brian Haddad2012-12-13T04:58:10Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab | PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery| PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10606Brian Haddad2012-12-13T04:57:42Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab| PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery| PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10605Brian Haddad2012-12-13T04:56:25Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab | PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery | PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10604Brian Haddad2012-12-13T04:55:42Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab| PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery| PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10603Brian Haddad2012-12-13T04:50:41Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab.git| PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery| PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10602Brian Haddad2012-12-13T04:49:40Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab| PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery| PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10601Brian Haddad2012-12-13T04:47:21Z<p>Brian.haddad: /* PSK31 Demodulation */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:For now, the decoder can process multiple signals that have the same message and phase. These multiple signals can be transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. The decoder can easily handle 0.1 dB down noise.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson<br />
<br />
'''''References'''''<br />
*[[https://github.com/frohro/PSK31-Simulation-Octave-Matlab|PSK31 Simulation Octave/Matlab]]<br />
*[[http://www.mathworks.com/matlabcentral/fileexchange/2839-psk31-model-with-symbol-timing-and-carrier-recovery|PSK31 Model with Symbol Timing and Carrier Recovery]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Denver_Lodge&diff=10600Denver Lodge2012-12-13T04:35:20Z<p>Brian.haddad: </p>
<hr />
<div>== '''PSK31 Demodulation''' ==<br />
*Partner:[[ Brian Haddad]]<br />
Link to Article:[[Brian Haddad| PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10599Brian Haddad2012-12-13T04:34:53Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Denver_Lodge&diff=10598Denver Lodge2012-12-13T04:34:30Z<p>Brian.haddad: </p>
<hr />
<div>== '''PSK31 Demodulation''' ==<br />
*Partner:[[Brian Haddad]]<br />
Link to Article:[[Brian Haddad| PSK31 Demodulation]]</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Denver_Lodge&diff=10597Denver Lodge2012-12-13T04:31:57Z<p>Brian.haddad: Created page with ' == '''PSK31 Demodulation''' == *Partner:Brian Haddad Link to Article:'</p>
<hr />
<div><br />
<br />
== '''PSK31 Demodulation''' ==<br />
*Partner:[[Brian Haddad]]<br />
Link to Article:</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10595Brian Haddad2012-12-13T04:29:41Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre><br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10592Brian Haddad2012-12-13T04:21:11Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
<pre> % This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...</pre> <br />
<br />
<pre> % Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...</pre><br />
<br />
<pre> finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...</pre><br />
<br />
<pre> percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);</pre><br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10585Brian Haddad2012-12-13T04:06:13Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
% This section highlights the code. For the entire script, use the link above.<br />
%<br />
% This project is written by Brian Haddad and Denver Lodge.<br />
% This is the main script in Matlab that will call different scripts<br />
% with more specific functionality.<br />
%<br />
% PSK31 was developed by Peter Martinez...<br />
% ...<br />
<br />
% Global Variables<br />
%--------------------------------------------------------<br />
message = ('Hello'); % <----- enter your message<br />
message = [message,' ']; % Appends spaces to the end for accuracy<br />
phrase = message;<br />
phase = 2*pi()*rand(1); %50.000*3.14159/100;<br />
Fs = 80000; % Sample Rate<br />
fc = 100; % Carrier Frequency<br />
fc1 = 4000;<br />
n = 0.0; % Pause time (seconds)<br />
N = 32; % wavwrite N-bit (8,16,24,32)<br />
noise = 3*10^(-10/20) %= 10 db down<br />
frequencychoice=2<br />
% -----------Variables from other scripts----------------<br />
[t,v] = encode_psk31(message,phase,Fs,fc);<br />
[t1,v1] = encode_psk31(phrase,phase,Fs,fc1);<br />
%[t2,v2] = encode_psk31(phrase,phase,Fs,);<br />
%[bitstream] = demod_to_bitstream(v,Fs);<br />
%--------------------------------------------------------<br />
% ...<br />
<br />
<br />
finv_spec = ifft(spec);<br />
[z]=findfreqs(v,Fs,200,.5);<br />
z<br />
bandsize=140*Fs/length(spec);<br />
z=z-bandsize/2;<br />
z2=z+bandsize;<br />
W=2.*[z' z2']./Fs<br />
%use corner frequencies to filter the signal.<br />
Wn=W(frequencychoice,:)<br />
[b,a]=butter(3,Wn);<br />
%[b,a]=cheby1(3,.5,Wn);<br />
finv=filter(b,a,v);<br />
absfinv=abs(finv);<br />
% ...<br />
<br />
percent=percent*100/length(bits); % Displays the percentage of accuracy<br />
percent % from the inbits to the outbits<br />
outbits(1:15)<br />
make_msg(inbits)<br />
make_msg(outbits)<br />
t0 = 0:1/Fs:1/31.25-1/Fs;<br />
one = ones(size(t0));<br />
zero = cos(pi*t0*31.25);<br />
<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10581Brian Haddad2012-12-13T03:53:31Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
:*Matlab Script:<br />
:*BSD license<br />
<br />
% This section highlights the code. For the entire script, use the link above.<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.<br />
<br />
'''''Special Thanks'''''<br />
:Dr. Rob Frohne<br />
:Dick Benson</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10579Brian Haddad2012-12-13T03:34:25Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|center|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|center|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|center|Figure 3]]<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10578Brian Haddad2012-12-13T03:26:05Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
:Figure 1 shows the process of the decoder.<br />
[[Image:Figure_1.png|thumb|500px|Figure 1]]<br />
<br />
:Figure 2 shows he Fourier transform of the signal; first with noise, then without. These graphs help identify the carrier frequencies.<br />
[[Image:Figure_2.png|thumb|500px|Figure 2]]<br />
<br />
:Figure 3 shows that the signal being sent to the wave file by the transmitter, is the same as the one being read by the decoder.<br />
[[Image:Figure_3.png|thumb|500px|Figure 3]]<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10577Brian Haddad2012-12-13T03:17:47Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above .1dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=File:Figure_3.png&diff=10576File:Figure 3.png2012-12-13T03:17:28Z<p>Brian.haddad: </p>
<hr />
<div></div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=File:Figure_2.png&diff=10575File:Figure 2.png2012-12-13T03:17:15Z<p>Brian.haddad: </p>
<hr />
<div></div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=File:Figure_1.png&diff=10574File:Figure 1.png2012-12-13T03:16:51Z<p>Brian.haddad: </p>
<hr />
<div></div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10573Brian Haddad2012-12-13T03:11:49Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach filters the signals to find the peaks and interpolate them to connect the maximums and form the wave. This decoder can handle up to two signals simultaneously and with the same message and phase, but with different carrier frequencies. The decoder can also handle well above 10dB down noise.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10572Brian Haddad2012-12-13T03:05:41Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. PSK31 uses Varicode; a unique binary alphabet where no letter can be found in another. A transmission begins with several zeros so the decoder can synchronize to the exact frequency. The continuous zeros phase shift at a rate of 31.25 per second; hence the name. Each character begins with a 'one', and ends with double zeros ('00'). When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10571Brian Haddad2012-12-13T02:57:46Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
:Our project involved creating a "transmitter" to simulate a real signal that our decoder could identify the frequency and interpret the message. The transmitter uses a look-up-table to convert ascii characters to Varicode, then modulate the carrier frequency and add noise. The receiver does the same thing in reverse. The transmitter sends two signals simultaneously. At the moment, both signals have the same message and phase, but are transmitted on separate carrier frequencies. Very little improvement is needed to improve the decoder so it can receive multiple messages and phases simultaneously. To simulate a real signal, the signal is written to a .wav file to be read by the decoder. This ends the transmitter portion. The decoder begins by reading the .wav file and sending it to a Fourier transform so we can locate the frequencies the signal is transmitting on. Once the frequencies are determined, the signal goes through a bandpass filter at one of the identified carrier frequencies to remove the noise associated with it. The next step is finds the peaks of the signal or local maxima, and interpolates them to create a wave. (Figure 1, plot 3) shows the signal at this stage. Next, find the local minima and mirror it over the t-axis from that point to the end of the transmission(Figure 1, plot 4).<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Results'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10570Brian Haddad2012-12-13T02:14:54Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10569Brian Haddad2012-12-13T02:14:32Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
: This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
: PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10568Brian Haddad2012-12-13T02:13:13Z<p>Brian.haddad: /* PSK31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
:This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
:PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
:These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10567Brian Haddad2012-12-13T02:12:34Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
::This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
::PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase, it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10563Brian Haddad2012-12-12T00:08:40Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
::This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
::PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase,<br />
:it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10562Brian Haddad2012-12-11T17:27:47Z<p>Brian.haddad: </p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email 1:''' brian.haddad(AT)wallawalla(dot)edu<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
::This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
::PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase,<br />
:it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10561Brian Haddad2012-12-11T02:40:03Z<p>Brian.haddad: /* PSK 31 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email 1:''' brian.haddad@wallawalla.edu<br />
'''Email 2:''' brianhaddad@outlook.com<br />
<br />
'''Phone:''' 909-638-6286<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
::This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
::PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase,<br />
:it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddadhttps://fweb.wallawalla.edu/class-wiki/index.php?title=Brian_Haddad&diff=10560Brian Haddad2012-12-11T02:39:45Z<p>Brian.haddad: /* PSK 31.25 Demodulation (In Progress) */</p>
<hr />
<div>'''Contact Info:'''<br />
<br />
'''Email 1:''' brian.haddad@wallawalla.edu<br />
'''Email 2:''' brianhaddad@outlook.com<br />
<br />
'''Phone:''' 909-638-6286<br />
<br />
<br />
'''Articles Added:'''<br />
*[http://focus.ti.com/lit/an/sloa093/sloa093.pdf Filter Design in 30 seconds]<br />
*[http://en.wikipedia.org/wiki/Wikipedia:CHEAT Wikipedia Cheatsheet]<br />
<br />
<br />
<br />
== '''PSK 31 Demodulation (''In Progress'')''' ==<br />
Fall, 2012 [[Image:PSK31_sample.png|thumb|200px|PSK31]]<br />
*Partner [[Denver Lodge]]<br />
<br />
<br />
'''''Abstract'''''<br />
::This project demodulates at least two PSK31 signals with limited phase shifting.The approach begins by filtering the signal to find the peaks and interpolated to connect the maximums.<br />
<br />
<br />
'''''Introduction'''''<br />
::PSK31 was developed by Peter Martinez (G3PLX) in 1998. PSK31 varies in amplitude and phase, but not frequency. This is extremely useful in amateur radio. When there is constant phase,<br />
:it is considered to be a 'one', when the phase shifts, it is a 'zero'.<br />
<br />
<br />
'''''Matlab Script'''''<br />
% This script demodulates the PSK31 signal<br />
<br />
<br />
'''''Matlab Plots'''''<br />
These are the plots<br />
<br />
<br />
'''''Conclusion'''''<br />
:The end.</div>Brian.haddad