Magnetic Loop Antennas - Home-brew - M0HWD 240519
Thank you for visiting my page.
Here I will put all my work regarding building the Magnetic loop antennas, controller, 3D printer files for all plastic involved, mechanic and software of the tuning system etc.
but - it will be some time to complete.
after I have finished the work now it will take some time to bring all together from pieces of paper to a reasonable presentation.
so please came back from time to time , or if you prefer i can establish an email group - and i will update the group. please let me know.
Apologies for my English. Any comments and questions are welcomed.
Thank you, 73 Daniel M0HWD , 4X1WD, KK4CZI
​
The controller - VER A - bidirectional - 2 COILS - Stepper Motor
220619
The controller ver B - UNIDIRECTIONAL - 4 COILS Stepper Motor
part list: 250519
​
1 u1 ST Stepper Motor Control/Driver L293D (£4.45 inc. VAT)
2 u2 PICAXE-28X2 Module (AXE201) (£14.99 inc. VAT)
3 u3 Budget Serial OLED Module AXE133Y (£14.99 inc. VAT)
4 PICAXE USB Download Cable (£14.99 inc. VAT)
5 PRO SIGNAL - Speaker, 100 mW, 150 ohm, (£5.58 inc. VAT)
6 small vector board
7 5 ptt switches
8 1 on off switch
9 2 sockets for ics
10 1 connector and socket for the motor
11 1 connector and socket for the civ
12 1 connector and socket for the ps
13 box and cover (i will attach later the stl files for 3d printer)
14 p.s. 12 v 2 amp
15 Heat sink for Stepper Motor driver
16 RVFM MY3002 Mini Hybrid Stepper Motor Size 11 (£30.25 inc. VAT)
17 RVFM Worm Gears Pack of 10 (£5.38 inc. VAT)
18 4 mm X 3 cm long brass tube (for shaft/step connect)
19 delrin /perspex plate 30 x 15 x 1
20 BNC connector
21 1 telescopic fiber glass 7- 11 m long
22 1 parasol base
23 65 cm coax for small loop RG 240
24 1 m of large mesh screen wire
25 screws washers and nuts (braging)
26 320 cm x 32 mm pipe for main loop
27 KP1-8 5-250 pF 5kV Milirary high-voltage vacuum variable 10 - 40 m
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
CHANGES TO PART LIST FOR VER B:
​
1. 4 X 2N6308 (INSTEAD OF L293D)
2. No need of part list nr 17 Heat sink for Stepper Motor driver
​
260519
1
4
2
5
3
6
7
9
8
11
10
12
15
13
14
16
17
The stl 3d printer files are here - click on the doc , then save It to your computer -
Operation instruction - Magnetic loop controller 230619 - 120819 M0HWD rev. 1.4
Buttons (from right to left)
Short press:
1 civ - change the antenna frequency to the transceiver frequency
2 frequency - down
3 frequency – up
4 band down
5 band - up
Long press:
1 calibrate frequency to center frequency of the band
2 frequencies - down fast
3 frequencies - up -fast
4 calibrate low part of band
5 calibrate high part of the band
Calibrating the controller – the first time of operation:
The controller can be programmed for referent gears, capacitor , and bands.
This example is for a vacuumed capacitor 5-250 Pf, - 25 turns , gear have 50 tooth, and the magnetic loop is 1 meter diameter.
The bands covered in this example is 10-40m
Each band has a preferred “middle band frequency” as follow (chosen by me)
160 1830 MHz
80 3700 MHz
60 5000 MHz
40 7100 MHz
30 10120 MHz
20 14250 MHz
17 18100 MHz
15 21250 MHz
12 24950 MHz
11 27300 MHz
10 28450 MHz
6 50100 MHz
By default the program is set up for first time use to 20 m band.
By default all the bands factors are programmed to my loop.
Calibrating:
You need an antenna analyzer (I am using the aa-230 of Rig expert)
It will be easier to have a switch - switching between the transceiver and the analyzer -connected to the antenna.
1. Find out the antenna resonating frequency now.
2 bring the antenna resonance to 14250 with the frequency buttons 2/3 (my middle band for
20m)
3 disconnect the cable from the controller.
4 switch of the controller
5 press button NR 4 continually and switch on the controller, release the button.
6 Reconnect the cable to the controller.
7 bring the antenna to resonant 100kc beyond the “middle band frequency” e.g. 14150 kHz
8 press button 4 for 2 sec (long beep)
9 bring the antenna to resonant 100kc on top of the “middle band frequency” e.g. 14350 kHz
10 press button 5 for 2 sec (long beep)
The controller will calculate the factor - how many ticks of the stepper motor will be needed for 1 kHz.
The factor will be displayed on the upper right side of the controller.
After the calculation the controller will move the steeper motor to the “middle band frequency”.
If the frequency is resonate on the frequency displayed, change the resonate of the antenna with button 2/3, than press button 1 for 2 seconds.
That’s it.
Now repeat for all bands, BUT only steps 7 – 10.
To change the bands press button 4/5, and remember +-100kc is from the frequency displayed (not anymore 14250 which was done before)
Normal operation
change the transceivers frequency to find a station or empty space.
When you decide to transmit press bot 1 shortly.
As per climate change, humidity, rain etc the calibration may change a little.
the only thing that need to be done - if the center frequency changes - bring the middle frequency by pressing the band button 4/5 to the desire band , then calibrate the resonant frequency with button 2/3, then pres button 1 for 2 seconds.
Manual ver 1.4
VER 236
The controller program
#no_table : #no_data
symbol b0x = b0: symbol b1x = b1 : symbol b2x = b2 : symbol b3x = b3 : symbol b4x = b4
symbol b15_last_band = B15 : symbol w5_fac = W5 : pullup %10111110
if pinb.2 = 0 then : sound b.0,(70,400) goto DEFAULT : endif
gosub INIT
MAIN:
let b16 = pinsB & %00111110
if b16 = 62 then : on b1x goto MAIN, D7, BAND_UP, D6, BAND_DWN ,CIV ,BO6, BO7,BO8, RELEASE : endif
b16 = 60 - b16/2 : on b16 goto BOT5 ,BOT4,main,BOT3,main ,main,main,BOT2,main ,main,main,main,main,main,main,BOT1
BOT1: pause 10
if pinB.5 = 0 AND w9 < 301 then
w9 = w9 + 1
b1x = 5
if w9 > 300 then : b1x = 6: sound b.0,(70,255 ) : endif
endif : goto MAIN
BOT2: w9 = w9 + 1 : b1x=0
if w9 > 10 then: b1x = 7 : endif
sound b.0,(70,1)
if w3 > 1 then : w3 = w3 - 1 : endif
b17 = 20 : gosub DIRECTION : goto MAIN
BOT3: w9 = w9 + 1
b1x=0
if w9 > 10 then : b1x = 7 : endif
sound b.0,(70,1)
if w3 < W6 then : w3 = w3 + 1: endif
b17 = 20 : gosub DIRECTION : goto MAIN
BOT4: if w9 < 1001 then
w9 = w9 + 1 : b1x = 4
if w9 > 1000 then : b1x = 3 : sound b.0,(70,255 ) : endif
endif : goto MAIN
BOT5: if w9 < 1001 then
w9 = w9 + 1 : b1x = 2
if w9 > 1000 then : b1x = 1 : sound b.0,(70,255 ) : endif
endif: goto MAIN
BO6: gosub COMMON : gosub MID_BAND : b17 = 3 : gosub DIRECTION : goto MAIN
BO7: gosub COMMON : gosub SCREEN gosub EE_ENTER : w9 = 0: goto MAIN
BO8: goto BC
RELEASE: w9 = 0 : w11 = w11 + 1: if w11 = 1000 then : let outpinsa = %00000000: w11 = 0 : b1x = 0 : endif :goto MAIN
BAND_UP:
gosub COMMON: b15_last_band = b15_last_band + 8
if b15_last_band = 120 then: b15_last_band = 0 : endif
b0x = b15_last_band + 5 : read b0x ,b28 : b0x = b15_last_band + 6 : read b0x,B29
gosub fr_format : gosub SHOW_FR
goto MAIN
BAND_DWN:
gosub COMMON: b15_last_band = b15_last_band - 8
if b15_last_band = 248 then : b15_last_band = 112: endif
b0x = b15_last_band + 5 : read b0x ,b28 : b0x = b15_last_band + 6: read b0x,B29
gosub fr_format : gosub SHOW_FR
goto MAIN
MID_BAND:
b17 = b15_last_band + 1 : write b15_last_band, b8 : write b17, b9
A1: sound b.0, (70,500)
b0x = b15_last_band : b17 = b15_last_band + 1 :read b0x,b6 : read b17 ,B7
b0x = b15_last_band + 5 : read b0x ,b28 : b0x = b15_last_band + 6: read b0x,B29
b0x = b15_last_band + 2 : read b0x,b10 : b0x = b0x + 1 : read b0x,b11
w15 = w3
gosub FR_FORMAT
gosub FAC_SCREEN
return
FR_FORMAT: w10 = b28 * 1000 : w14 = B29*10 : w10 = w10 + w14 : write 124,b15_last_band : return
SHOW_FR: setfreq m8: serout b.6, N2400,(254,128) : serout b.6, N2400,(#w10, " ") : setfreq em64
pause 2000 : b1x = 8 : w9 = 0 : return
COMMON: w9 = 0: b1x = 0 : sound b.0,(50,25) : return
EE_ENTER: write 122,b8 : write 123,b9 : b1x = 9 : w11 = 0 : return
FAC_SCREEN: setfreq m8 serout b.6, N2400,(254,141) : serout b.6, N2400,(#w5_fac) : setfreq em64 : return
DEF: w12 = w12 * 100 : w12 = w12/w5_fac : return
DIRECTION: if w3 = w4 then : gosub SCREEN : return : endif
ZUZ:
if w3 < w4 then: gosub FIRST_1
else: gosub FIRST_2
endif
if b1x = 0 then : gosub SCREEN : gosub EE_ENTER : endif
return
SCREEN:
if w15 > w4 then
w13 = w15 - w4
else w13 = w4 - w15
endif
w12 = w13 * w5_fac : w12 = w12/100
if w15 < w4 then
w12 = w12 + w10
else
w12 = w10 - w12
endif
if b4 > 0 then: setfreq m8 : serout b.6, N2400,(254,128) : serout b.6, N2400,(#w11," ",#w4," ") : b4=0 : goto DD : endif
setfreq m8 : serout b.6, N2400,(254,128) : serout b.6, N2400,(#w12," ",#w4," ")
DD: setfreq m8 : serout b.6, N2400,(254,205) : serout b.6, N2400,(#w13," ") : setfreq em64
return
BC: w9 = w9 + 1
if w9 = 1500 then: sound b.0,(50,100): b1x = 0
setfreq m8: serout b.6, N2400,(254,128) : serout b.6, N2400,(" WAIT " ): setfreq em64
gosub A1
b17 = 3: gosub DIRECTION : w9 = 0 : sound B.0, (60,200 ): sound B.0, (50,200 )
goto MAIN
endif : goto MAIN
D6: gosub COMMON
w15 = w4 : goto MAIN
D7: gosub common
w5_fac = 20000 / w13
b0x = b15_last_band + 2 : write b0x,b10 : b0x = b0x + 1 : write b0x,b11
gosub FAC_SCREEN : gosub SCREEN
w3 = 10000/w5_fac : w3 = w4 - w3 : w15 = w3
b17 = b15_last_band + 1 : write b15_last_band, b6 : write b17, b7
b17 = 3 : gosub DIRECTION
goto MAIN
FIRST_2:
w4 = w4 + 1
high A.3 : pause b17
low A.0 : pause b17
high A.2 : pause b17
low A.3 : pause b17
high A.1 : pause b17
low A.2 : pause b17
high A.0 : pause b17
low A.1 : pause b17
if w3 > w4 then
goto FIRST_2
endif
return
FIRST_1:
w4 = w4 - 1
high A.1 : pause b17
low A.0 : pause b17
high A.2 : pause b17
low A.1 : pause b17
high A.3 : pause b17
low A.2 : pause b17
high A.0 : pause b17
low A.3 : pause b17
if w3 < w4 then : goto FIRST_1 : endif
return
CIV: gosub COMMON : hSerPtr = 0
serout c.7, T1200, ($FE, $FE,$70,$E0,$3 ,$FD)
hserin [1000,main],0,10
get 3 ,b26
if b26 = 112 then
get 6 ,b26
get 7 ,b27
get 8 ,b1x
if b1x > 9 then : b1x = b1x - 6 : endif
if b1x > 19 then : b1x = b1x - 6 : endif
if b1x > 29 then : b1x = b1x - 18 : endif
if b1x = 28 then : b15_last_band = 80 : endif
if b1x = 24 then : b15_last_band = 72 : endif
if b1x = 21 then : b15_last_band = 64 : endif
if b1x = 18 then : b15_last_band = 56 : endif
if b1x = 14 then : b15_last_band = 48 : endif
if b1x = 10 then : b15_last_band = 40 : endif
if b1x = 7 then : b15_last_band = 32 : endif
if b1x = 5 then : b15_last_band = 24 : endif
if b1x = 3 then : b15_last_band = 16 : endif
w15 = b1x*1000 : b1x = 0
w11 = b26/16
w14 = b27/16
w12 = w14*16 : w12 = b27 - w12 : w12 = w12*10
w14 = w14*100
w11 = w11 + w12 + w14 + w15
gosub A1
w14 = w5_fac/100
if w11 > w10 then
w12 = w11 - w10 + w14
gosub DEF
w3 = w3 + w12
else
w12 = w10 - w11 + w14
gosub DEF
w3 = w3 - w12
endif
setfreq m8: serout b.6, N2400,(254,192): serout b.6, N2400,( #w11, " " ) :setfreq em64
endif
b4 = 1
sound b.0,(50,100) : b1x= 0 : setfreq m8: serout b.6, N2400,(254,128) :serout b.6, N2400,("WAIT " ): setfreq em64
b17 = 3 : gosub DIRECTION
sound B.0, (60,200 )
goto main
INIT: setfreq em64: settimer t1s_4
EEPROM 5, (1) : EEPROM 6, (70)
EEPROM 13,(1) : EEPROM 14,(90)
EEPROM 21,(3) : EEPROM 22,(65)
EEPROM 29,(5) : EEPROM 30,(00)
EEPROM 37,(7) : EEPROM 38,(10)
EEPROM 45,(10) : EEPROM 46,(12)
EEPROM 53,(14) : EEPROM 54,(25)
EEPROM 61,(18) : EEPROM 62,(10)
EEPROM 69,(21) : EEPROM 70,(25)
EEPROM 77,(24) : EEPROM 78,(95)
EEPROM 85,(28) : EEPROM 86,(45)
EEPROM 93,(30) : EEPROM 94,(00)
EEPROM 101,(55) : EEPROM 102,(10)
EEPROM 109,(55) : EEPROM 110,(20)
EEPROM 117,(55) : EEPROM 118,(30)
EEPROM 2 ,(20) : EEPROM 3 ,(1)
EEPROM 10 ,(30) : EEPROM 11 ,(1)
EEPROM 18 ,(40) : EEPROM 19 ,(1)
EEPROM 26 ,(50) : EEPROM 27 ,(1)
EEPROM 34 ,(14) : EEPROM 35 ,(0)
EEPROM 42 ,(40) : EEPROM 43 ,(0)
EEPROM 50 ,(105) : EEPROM 51 ,(0)
EEPROM 58 ,(175) : EEPROM 59 ,(0)
EEPROM 66 ,(169) : EEPROM 67 ,(0)
EEPROM 74 ,(83) : EEPROM 75 ,(0)
EEPROM 82 ,(28) : EEPROM 83 ,(0)
EEPROM 90 ,(130) : EEPROM 91 ,(1)
EEPROM 98 ,(140) : EEPROM 99 ,(1)
EEPROM 106,(150) : EEPROM 107 ,(1)
EEPROM 114,(160) : EEPROM 115 ,(1)
EEPROM 0,(0) : EEPROM 1,(5)
EEPROM 8,(0) : EEPROM 9,(5)
EEPROM 16,(0) : EEPROM 17,(5)
EEPROM 24,(0) : EEPROM 25,(5)
EEPROM 32,(124) : EEPROM 33,(5)
EEPROM 40,(168) : EEPROM 41,(54)
EEPROM 48,(20) : EEPROM 49,(80)
EEPROM 56,(102 ): EEPROM 57,(90)
EEPROM 64,(169) : EEPROM 65,(96)
EEPROM 72,(198) : EEPROM 73,(108)
EEPROM 80,(19) : EEPROM 81,(137)
EEPROM 88,(214) : EEPROM 89,(181)
EEPROM 96,(0) : EEPROM 97,(139)
EEPROM 104,(0) : EEPROM 105,(140)
EEPROM 112,(0) : EEPROM 113,(141)
EEPROM 120,(0) : EEPROM 121, (255)
EEPROM 122,(20) : EEPROM 123, (80)
EEPROM 124,(48)
read 120,B12 : read 121, B13
read 122,b8 : read 123,b9
read 124,b15_last_band
read 125,b14
b0x = b15_last_band + 5 : read b0x ,b28 : b0x=b15_last_band + 6: read b0x, B29
gosub fr_format
b0x = b15_last_band + 2 :read b0x,b10: b0x = b0x + 1 : read b0x,b11
b0x = b15_last_band : read b0x,B30 : b0x =b0x + 1 read b0x ,B31
pause 5000
setfreq m8 : serout b.6, N2400,(254,1)
gosub FAC_SCREEN
gosub SCREEN
w3 = w4
hsersetup B9600_64, %00
pause 1000
return
DEFAULT:
write 122,29
write 123,80
write 124,48
write 56,102
write 57,90
write 58,175
write 59,0
write 24,0
write 25,5
write 26,50
write 27 ,1
write 32,124
write 33,5
write 34,14
write 35 ,0
write 40,168
write 41,54
write 42,40
write 43 ,43
write 48,20
write 49,80
write 50,106
write 51,0
write 56,102
write 57,90
write 58,175
write 59,0
write 64,169
write 65,96
write 66,169
write 67,0
write 72,198
write 73,108
write 74,83
write 75,0
write 80,19
write 81,137
write 82,28
write 83,0
write 88,214
write 89,181
write 90,130
write 91,1
RESET
Magnetic loop antenna Assembly part 1 ver. 17