A garden loop antenna

For the 10 and 20 meter amateur bands there are in my opinion better antenna’s than the often used end-fed which is prone to picking up local man made noise (QRM) because the shield of the coax should be grounded, actually, a ground plane would be useful. Another reason why the end-fed picks up more noise is that they are E-field receivers while a lot of man-made noise (QRM) which is all around our living area has a high E-field component. If you make a loop then you listen to the H-field, the magnetic component, in theory that should give you and advantage.

My active antenna described earlier on my blog is a low-impedance H-field receiver which you can not use for transmitting, it always outperforms the G5RVj which I already have in the garden, on the image below you see a part of the G5RVj (the upper wire is part of it) which is two times +/- 7.8 meter of wire with a central open line feeder, at the bottom of the open line feeder there is a 1:1 balun to convert it to an asymmetric transmission line, 7mm aircell coax.

The image below is what I denounce to be the garden loop. You don’t need a whole lot of garden, actually one high mast in the back of the garden and a lower pole on one side. Construct a triangle with sides approximately 20/3 meter of length (use your analyser to put it just below or above the 20 meter band, or right in the middle if you have the patience for it), and use a 1:4 balun in one of the corners. The Delta loop is roughly 200 Ohm, and we down-transform it to 50 Ohm. The 20m delta loop is resonant at one lambda, so the 20 meter band, and also works at 10 meter. Drawback is that it takes up more space, I have it running as a weekend and sporadic E-season experiment.

IMG_3815 (1)

Be creative and have fun, antennas offer a lot of playground for that.

Status: last update on 2-Jun-2019 7:00

BER in BPSK

The bit error rate in bi-phase shifted keying modulation is simulated in MATLAB in the following way:

% digital modulation tester (works with large arrays and stides)

l = 10000000; % number of symbols to generate by stride
m = 100; % number of strides
clear xx; clear yy1; clear yy2; jj = 0;
for ii = -20:10:130,
EbNo = ii/10; ber1 = 0; % ber2 = 0;
for kk = 1:m,
ber1 = ber1 + digitanal( l,EbNo,1 );
% ber2 = ber2 + digitanal( l,EbNo,2 );
end
if ((ber1 > 0) & (ber2 > 0)),
jj = jj + 1;
xx(jj) = EbNo;
yy1(jj) = ber1/m;
% yy2(jj) = ber2/m;
end
EbNo
end
% semilogy(xx,yy1,’o-‘,xx,yy2,’o-‘)
semilogy(xx,yy1,’o-‘)
xlabel(‘Eb/No in dB’);
ylabel(‘BER’);
grid

where digitanal is as follows

function [ber] = digitanal( l,EbNo,type )

% this is for BPSK and QPSK actually

EbNoReal = 10^(EbNo/10);

if (type == 1), % BPSK
s = (round(rand(1,l))-0.5)*2;
n = (1/sqrt(2*EbNoReal))*randn(1,l);
r = s+n;
symbols = sign(r);
check = sum( (s == symbols) );
ber = ((l – check)/l);
end

if (type == 2), % QPSK
s1 = (round(rand(1,l))-0.5)*2;
s2 = (round(rand(1,l))-0.5)*2;
n1 = (1/sqrt(2*EbNoReal))*randn(1,l);
n2 = (1/sqrt(2*EbNoReal))*randn(1,l);
r1 = s1+n1;
r2 = s2+n2;
symbols1 = sign(r1);
symbols2 = sign(r2);
check = sum( (s1 == symbols1) & (s2 == symbols2) );
ber = ((l – check)/l);
end

end

It gave me this:

berbpsk

So, a Eb/No of 4 dB results in a BER of 0.01, which seems compatible with the analytical equation.

Last update: 3-10-2018

SWR bridge with noise source

In this demonstration we measure the standing wave ratio (SWR) of a load, in this case an UHF antenna. A constraint is that we want to do this in a cost-effective way up to 1.7 GHz. My earlier discussed VNA is not capable of doing this, you can get VNAs that can but they rapidly become rather expensive.

In the demonstration video we generate noise with a tool that essentially amplifies the noise of a zener diode, you could make it yourself, but if you google for BG7TBL noise generator then you will soon find out it is easier to order it than to build it yourself. Noise from the BG7TBL tool has the property that it is random phase by frequency and that the amplitude is somewhat constant over the entire spectrum. Put it on the scope and you get what you expect: something that resembles white noise. The tool needs up to 12 Volt to operate, it will get hot, but it also works on a 9 Volt battery.

If you insert noise in the SDR (I used my airspy) then it will fill the entire HF VHF and UHF spectrum, and you may wonder why you would like to do that at all. Please insert attenuators because the output of the BG7TBL tool is rather high, so I added 30 dB attenuation before I did the measurement with the SDR. When I measure the reflection properties of a load then 10dB goes before the bridge, and 20 dB goed after the bridge to prevent that the bridge is influenced too much.

There is a very good reason why you would like to insert artificial noise into your SDR. The reason is that it allows you to measure the performance of filters or loads connected in between the source and the receiver. In the video we inserted a RF bridge between the source and the receiver.

The RF bridge comes from the transverter store on ebay, see the movie, also there the conclusion is, it is easier to buy one than to make one. The bridge has an input, an output, there is a reference port and there is a device under test port. There are only SMA connectors on the PCB, the schematic is as follows:

On the input (left in the schematic) you insert a signal into the RF bridge, and on the reference port (top port in the schematic) you insert a nominal dummy load of 50 Ohm. On the output of the RF bridge (right port in the schematic) you measure the throughput with your SDR (an airspy). There are now several possibilities depending on what you connected to the DUT port (bottom port in the schematic):

  1. Nothing is connected to the DUT port, in this case the signal reflects back into the RF bridge and this is picked up by the receiver. The throughput is called the directivity of the RF bridge. (for details see the discussion on the transverter-store web page).
  2. The DUT port has a dummy load of 50 Ohm (or the same amount of Ohm as the reference port). In this case you will notice that no signal will pass the bridge and that everything is dissipated in the dummy load at the DUT port.
  3. Connect an unknown load to the DUT port, and now you will see that some of the signal is reflected back to the receiver, but that the rest of the signal is dissipated into the load on the DUT port.

With the first and the second measurement you calibrate the set-up, with the third measurement you can see who much dB is dissipated in the unknown load. You can measure this in the waterfall plot, and hence you can measure the so-called reflection loss RL in decibel caused by the unknown load. Next you need to convert the RL into a SWR value, the equation is as folows:

RL = 20 log10( (SWR-1)/(SWR+1) )

I measured on the waterfall a reflection loss of 20 dB near 440 MHz, this is compatible with a SWR of 1.2, the connected antenna is a miniature version of a 70 cm amateur band antenna.

Hybrid coupler as RF bridge

An alternative for the RF bridge discussed before is to use a 90 hybrid coupler, I found one at a ham market in Beetsterzwaag Friesland. This is what it looks like:

90 degree hybrid coupler from Technical Concepts, its center frequency is 500 MHz, so close to the 70cm band.
And this is the replacement schematic of the 90 degree hybrid coupler, they are also referred to as branchline couplers or quadrature couplers.

The purpose of the 90 degree hybrid coupler is to split an input signal into two paths, one is essentially forward with 0 degree -3 dB and the other is also forward but then 90 degree phase shifted. There is also an isolated port, anything that is reflected in the system ends up at P4.

To turn this into an RF bridge for measuring SWRs you connect the noise source to P1, the antenna to P2 and a 50 Ohm dummy load to P3. You could interchange P2 and P3, the device is symmetric, it has no effect on the SWR measurement. I use SMA 50 Ohm coaxial dummy load, you find them on ebay where they are a lot more affordable compared to buying them new. The SDR (preceeded by a 20 dB attenuator) is connected to port P4. For 70cm antennas this approach works, but don’t try this for frequencies that are far off the 500 MHz because the bridge 90 degree hybrid coupler was not designed for this.

A more extensive discussion about 90 degree hybrid couplers can be found here.

Last update:  30-5-2018

DelfiC3 cubesat recording

The DelfiC3 project is described here and the purpose of this experiment was to see whether a 3 element Yagi for 2 meter is sufficient to catch the signal. With the airspy, and the yagi shown below and sdrshap we found an SNR of approximately 10dB. You need to stay a few meter away from the notebook that records the data to avoid radio frequency interference.

IMG_0908
This is the 3 element yagi discussed further down this blog

This was the passage on 27-feb-2018 at 9:40 at the campus of the TU Delft. The elevation was approximately 30 degrees, and the ground track was eastwards. Mind that the satellite transmit power is no more than approximately 2 Watt and that the distance to the transmitter is some 2000 km.

PE4WJ added: the TX power is 10dB under the total power consumption, which is 2.4W. So 2.4 Watt minus 10dB = 0.24 Watt, or 23.8 dBm.

Last update: 5-Mar-2018

 

 

Dodecahedron with resistors

IMG_1742

The topology is shown in the image, there are 12 faces, 20 nodes and 30 edges. I started with node 1 as the pole, and compute the resistance at all other nodes with 1000 Ω resistors along the edges. The same MATLAB program found 5 possible solutions:

  • Category 1: drain at nodes 2,3 and 4:  633 1/3 Ω
  • Category 2: drain at nodes 5,6,7,8,9 and 10: 900 Ω
  • Category 3: drain at nodes 11,13,14,17,19:  1066 2/3 Ω
  • Category 4: drain at nodes 12,15,18:  1133 1/3 Ω
  • Category 5: drain at node 20: 1166 2/3 Ω

I guess the code is sufficiently debugged now, the answer agree with what I found on the internet.

Last update: 28-1-2018 15:09

Icosaeder with resistors

If you can do the cube, then you can also do the icosaeder, the topology is as follows:

icosaeder

Enter the topology in the program that I used for the cube, and of course, the Kirchhoff conditions are automatically generated. With 1000 Ω resistors I found:

  • Configuration 1: From node 1 to node 12  : 500 Ω
  • Configuration 2: From node 1 to node 6    : 366 2/3 Ω
  • Configuration 3: From node 1 to node 7    : 466 2/3 Ω

For configuration 1 the current solution shows zero ampere between nodes 2-3, 3-4, 4-5, 5-6 and 6-2 and also between nodes 7-8, 8-9, 9-10, 10-11 and 11-7. For the other configurations this is not the case.

Are there volunteers to solder the “resistor icosaeder” and verify the answers?

Last update: 28-1-2018 11:52

Resistor cube

What is the replacement resistance of this resistor network? There are three possible answers, the original problem I found on stackexchange (and other websites) was like this:

resistorcube

All resistors are the same value, the answer is 5/6 times the value of each resistor. The are also other answers, namely, the resistance along one side or the resistance across a face between two corner nodes.

How to solve this problem

Your friends for this problem are Ohm’s and Kirchhoff’s laws. Both laws are linear and you can build a system of linear equations to be solved. So how does this work? In a network of resistors there are voltage nodes, they are numbered in black, at which there are voltages, and there are currents along links between the nodes, the resistors numbers are in red. The voltage difference between two nodes A and B over a resistor R results in the linear condition Vb – Va = I * R. Also at a node you have the condition that the sum of all incoming currents equals to the sum of all outgoing currents. This is all you need together with two boundary conditions, namely a prescribed voltage at the entrance of the network (node 1) and 0 volt at the exit (node 7). The entrance point is called the source, and the exit point is called the drain.

In the resistor cube problem there are 8 nodes, and 12 links. The MATLAB code creates the matrix A and the vector y and it solves A x = y so that x in the end returns all the voltages and currents in the network. Due to the boundary conditions you need to remove two Kirchhoff law equations. The rationale is that we set voltage of 1 at node 1 and at node 7 we ground the system. The sum of the currents that connect to node 1 results in the replacement resistance for the cube. For the problem posted on stackexchange it becomes 5/6 times the resistors in the cube.

MATLAB code for the problem

In the follow code the Ohm law equations are hand coded, also the Kirchhoff conditions and the boundary conditions are manually inserted.

%
% Cube with resistors, when R=1000 Ohm, the replacement resistance becomes
% 833 Ohm, thus 5/6 times R
% 
clear
R = 1000; Vset = 1;
vnode = [1 2 3 4 5 6 7 8];
inode = [1 2 3 4 5 6 7 8 9 10 11 12]; inode = inode + 8;
nlink = 0; njoint = 0; ne = 0;
nlink = nlink + 1; link(nlink,:) = [vnode(1) vnode(2) inode(1)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(2) vnode(3) inode(2)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(3) vnode(4) inode(3)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(4) vnode(1) inode(4)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(5) vnode(6) inode(5)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(6) vnode(7) inode(6)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(7) vnode(8) inode(7)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(8) vnode(5) inode(8)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(5) vnode(1) inode(9)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(2) vnode(6) inode(10)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(3) vnode(7) inode(11)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(8) vnode(4) inode(12)]; resistor(nlink) = R;
% njoint = njoint + 1; joint(njoint,:) = [inode(1) inode(4) inode(9)]; flow(njoint,:) = [ -1 1 1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(1) inode(2) inode(10)]; flow(njoint,:) = [ 1 -1 -1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(2) inode(3) inode(11)]; flow(njoint,:) = [ 1 -1 -1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(3) inode(4) inode(12)]; flow(njoint,:) = [ 1 -1 1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(5) inode(8) inode(9)]; flow(njoint,:) = [ -1 1 -1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(5) inode(6) inode(10)]; flow(njoint,:) = [ 1 -1 1 ];
% njoint = njoint + 1; joint(njoint,:) = [inode(6) inode(7) inode(11)]; flow(njoint,:) = [ 1 -1 1 ];
njoint = njoint + 1; joint(njoint,:) = [inode(7) inode(8) inode(12)]; flow(njoint,:) = [ 1 -1 -1 ];
for i=1:nlink,
 ne = ne + 1;
 idx = [link(i,1) link(i,2) link(i,3)]; 
 A(ne,idx) = [-1 1 resistor(i)];
end
for i=1:njoint,
 ne = ne + 1;
 idx = [joint(i,1) joint(i,2) joint(i,3)]; 
 A(ne,idx) = [flow(i,1) flow(i,2) flow(i,3)];
end
ne = ne + 1; A(ne,vnode(1)) = 1;
ne = ne + 1; A(ne,vnode(7)) = 1;
fprintf('Number of links/joints/equations = %d %d %d\n',nlink,njoint,ne);
y=zeros(ne,1);
y(ne-1) = Vset; y(ne) = 0;
x = A\y;
voltages = x(vnode)'
currents = x(inode)'
Ical = -x(inode(4))+x(inode(1))-x(inode(9));
Replacement = Vset/Ical;
fprintf('R= %f, Replacement resistance = %f\n',R,Replacement);

The outcome of this problem not only depends on the value of the resistors, but also on how we define the boundary conditions of the system. But we can change that, lets keep for simplicity the source at node 1, but select difference nodes where we ground the system. I found this for 1000 Ω resistors along the cube:

  • Ground at node 2, 4, or 5 and the replacement resistance becomes 583 1/3 Ω
  • Ground at node 3, 6, or 8 and the replacement resistance becomes 750 Ω
  • Ground at node 7 and the replacement resistance becomes 833 1/3 Ω

In other words, the problem is very symmetrical and there are only three possible answers.

Automate a part of the equations

Want to play around with code that automatically generates the Kirchhoff and boundary conditions so that you only need to specify the current paths? Try this code, in principle it should be expandable to something like SPICE which is a general tool:

%
% Cube with resistors, all R=1000 Ohm, 
% Calculate the replacement resistance depending on the boundary conditions
%
clear
R = 1000; 
%
% Here are the voltage nodes and the current links
%
vnode = [1 2 3 4 5 6 7 8]; nv = 8;
inode = [1 2 3 4 5 6 7 8 9 10 11 12]; 
inode = inode + 8; ni = 12;
nlink = 0; njoint = 0; ne = 0;
%
% topology: you only need to specify the voltage current relations
%
nlink = nlink + 1; link(nlink,:) = [vnode(1) vnode(2) inode(1)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(2) vnode(3) inode(2)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(3) vnode(4) inode(3)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(4) vnode(1) inode(4)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(5) vnode(6) inode(5)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(6) vnode(7) inode(6)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(7) vnode(8) inode(7)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(8) vnode(5) inode(8)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(5) vnode(1) inode(9)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(2) vnode(6) inode(10)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(3) vnode(7) inode(11)]; resistor(nlink) = R;
nlink = nlink + 1; link(nlink,:) = [vnode(8) vnode(4) inode(12)]; resistor(nlink) = R;
%
% define here the boundary conditions (where is the source/drain)
%
bc = zeros(nv,1); 
bc(vnode(1)) = 2; Vset(2) = 1; % this is the source condition
bc(vnode(7)) = 1; Vset(1) = 0; % this is the drain condition <<<<< change the drain condition here
to = zeros(1,10); sense = zeros(1,10);
%
% automatically generate the joints (the Kirchhoff relations)
%
njoint = 0;
for i=1:nv,
 if ( bc(vnode(i)) == 0 ),
 from = vnode(i);
 idx = find( (link(:,1) == from) | (link(:,2) == from) );
 nidx = size(idx,1);
 if (nidx > 1),
 nto = 0;
 for jdx = 1:nidx,
 p = idx(jdx);
 if (from == link(p,1)),
 nto = nto + 1;
 to(nto) = link(p,2);
 sense(nto) = 1;
 ipath(nto) = link(p,3);
 end
 if (from == link(p,2)),
 nto = nto + 1;
 to(nto) = link(p,1);
 sense(nto) = -1;
 ipath(nto) = link(p,3); 
 end 
 end
 % [from to(1:nto) sense(1:nto) ipath(1:nto)];
 njoint = njoint + 1;
 joint(njoint,:) = ipath(1:nto); flow(njoint,:) = -sense(1:nto);
 end
 end
end
%
% Insert the Ohm and Kirchhoff relations in the A matrix, add the boundary
% conditions
%
for i=1:nlink,
 ne = ne + 1;
 idx = [link(i,1) link(i,2) link(i,3)]; 
 A(ne,idx) = [-1 1 resistor(i)];
end
for i=1:njoint,
 ne = ne + 1;
 idx = [joint(i,1) joint(i,2) joint(i,3)]; 
 A(ne,idx) = [flow(i,1) flow(i,2) flow(i,3)];
end
y=zeros((ne+2),1);
for i=1:nv,
 j = vnode(i);
 if (bc(j) ~= 0),
 ne = ne + 1; A(ne,j) = 1; 
 if (bc(j) == 1),
 y(ne) = Vset(1); 
 end
 if (bc(j) == 2),
 y(ne) = Vset(2); 
 end
 end
end
%
% The A matrix and the y vector should be complete here
%
fprintf('Number of links/joints/equations = %d %d %d\n',nlink,njoint,ne);
x = A\y;
voltages = x(vnode)'
currents = x(inode)'
Ical = -x(inode(4))+x(inode(1))-x(inode(9));
Replacement = (Vset(2)-Vset(1))/Ical;
fprintf('R= %f, Replacement resistance = %f\n',R,Replacement);

Are my answers correct?

IMG_1740
Soldering this thing is fun, I found twelve 270 Ω resistors with a tolerance of 1%

In order to check the model I made a resistor cube from twelve 270 Ω resistors. Next you take the multi-meter and start to measure a sufficient number of resistances so that the mean and the standard deviation can be determined. With 95% probability I found:

  • 225.50 +/- 0.16 Ω for node 1 to 7 like combination
  • 203.04 +/- 0.34 Ω for node 1 to 3 like combinations
  • 157.88 +/- 0.48 Ω for node 1 to 2 like combinations

The resistors are according to me somewhat larger than 270 Ω, probably they are closer to 271 Ω, in any case, the model predicts:

  • For 270 Ω resistors you get: 225, 202.5 and 157.5 Ω
  • For 271 Ω resistors you get: 225.83, 203.25 and 158.08 Ω
  • For 270.5 Ω resistors you get: 225.42, 202.88 and 157.79 Ω

The last guess is closest to the measured values. The conclusion is that model and data seem to be in agreement.

Have fun and share your ideas

Last update: 28-Jan-2018 00:25