J-Pole.scad 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. include <dimlines.scad> // @see https://github.com/pwpearson/dimensional-drawings/tree/master
  2. $fn=15;
  3. // some colors
  4. color_copper="#FFDD00FF";
  5. color_ladder="#2F4F4F22";
  6. color_dimension="#2F4F4FFF";
  7. // dimensions
  8. dimension_width=.5;
  9. // Ladderline CQ562:
  10. // @see https://kabel-kusch.de/Koaxkabel/CQ553-CQ562/FEEDER.htm
  11. // 300 Ohm, max. 1KW, width 10 mm, dia of wire 1.5mm, distance between wires 7 mm
  12. ladderline_type="CQ562";
  13. ladderline_ohm="300 Ohm";
  14. velocity_factor=0.905; // Velocity factor of ladderline CQ562
  15. conducter_dia=1.5;
  16. conducter_distance=7.0; // center to center
  17. ladderline_width=10.0;
  18. max_power="1 KW";
  19. echo("----------------------------------------");
  20. echo("Ladderline type: ", ladderline_type);
  21. echo("velocity_factor: " , velocity_factor);
  22. echo("Resitance: ", ladderline_ohm );
  23. echo("diameter of conducter ~ ", conducter_dia, "mm");
  24. echo("center distance between conducters ~ ", conducter_distance, "mm");
  25. echo("width of ladderline ~ ", ladderline_width, "mm");
  26. echo("max. power: ", max_power);
  27. echo("----------------------------------------");
  28. // length of cut's in ladderline
  29. cut_len=5;
  30. // @see https://m0ukd.com/calculators/slim-jim-and-j-pole-calculator/
  31. // @see http://oe1iah.at/images/Antennen/PraesidentenAntenneMIKE.pdf
  32. // @see http://oe1iah.at/Hardware/Antennen/SlimJim2-70.shtml
  33. // @see https://www.everythingrf.com/rf-calculators/frequency-to-wavelength
  34. // λ = C/f
  35. //
  36. //λ (Lambda) = Wavelength in meters
  37. //c = Speed of Light (299792458 m/s)
  38. //f = Frequency
  39. // Speed of Light (299792458 m/s)
  40. speed_light=299792458;
  41. // Center frequency in 2 meter band in MHz
  42. freq_2m=145;
  43. echo("Center frequency for 2 meter = " , freq_2m, " MHz");
  44. // λ = C/f
  45. wavelen_2m = speed_light/freq_2m;
  46. echo("Wavelength for 2 meter band = " , wavelen_2m);
  47. // Wavelength considering velocity factor
  48. len100_2m=wavelen_2m*velocity_factor/1000;
  49. // Overall length (λ*0.75)*vf
  50. len075_2m=(wavelen_2m*0.75)*velocity_factor/1000; // total length of antenna
  51. echo("Total length of antenna = " , len075_2m);
  52. //Half wave radiator section (λ/2)*vf
  53. len050_2m=(wavelen_2m*0.5)*velocity_factor/1000;
  54. // Quarter wave matching section (λ/4)*vf
  55. len025_2m=(wavelen_2m*0.25)*velocity_factor/1000; // length of matching section
  56. echo("Length of matching section = " , len025_2m);
  57. // How is the 50Ω feed point calculated?
  58. // Literature is not clear:
  59. // some say its 3.2 mm others use 3.2 mm for the lower end of the cut etc.
  60. // Here is a calculation from one website:
  61. // Adjust for 1:1 SWR. (λ/40)*vf
  62. // feedpoint=(wavelen_2m/40)*velocity_factor/1000;
  63. // I use 30 mm for the lower end of the cut and test it out then:
  64. feedpoint=30;
  65. echo("Distance to feedpoint = " , feedpoint, "mm");
  66. echo("----------------------------------------");
  67. echo("wavelen_2m = " , wavelen_2m, "m");
  68. echo("len100_2m = " , len100_2m, "mm");
  69. echo("len075_2m = " , len075_2m, "mm");
  70. echo("len050_2m = " , len050_2m, "mm");
  71. echo("len025_2m = " , len025_2m, "mm");
  72. echo("----------------------------------------");
  73. ///////////////////////////////////////////////////////////////////////////////////
  74. // Main
  75. ///////////////////////////////////////////////////////////////////////////////////
  76. makeLadderline();
  77. makeBridge();
  78. drawDimensions();
  79. ///////////////////////////////////////////////////////////////////////////////////
  80. //
  81. ///////////////////////////////////////////////////////////////////////////////////
  82. module drawDimensions()
  83. {
  84. // base line
  85. color(color_dimension)
  86. translate([ladderline_width, 0, 0])
  87. line(length=ladderline_width*4, width=dimension_width, height=dimension_width/2,
  88. left_arrow=false, right_arrow=false);
  89. // feedpoint line
  90. color(color_dimension)
  91. translate([ladderline_width, 0, feedpoint])
  92. line(length=ladderline_width*1.5, width=dimension_width, height=dimension_width/2,
  93. left_arrow=false, right_arrow=false);
  94. //quarter wave matching section line
  95. color(color_dimension)
  96. translate([ladderline_width, 0, len025_2m])
  97. line(length=ladderline_width*2.5, width=dimension_width, height=dimension_width/2,
  98. left_arrow=false, right_arrow=false);
  99. //top line for total length
  100. color(color_dimension)
  101. translate([ladderline_width, 0, len075_2m])
  102. line(length=ladderline_width*3.5, width=dimension_width, height=dimension_width/2,
  103. left_arrow=false, right_arrow=false);
  104. // feedpoint dimension
  105. color(color_dimension)
  106. translate([ladderline_width*2, 0, 0])
  107. rotate([0,-90,90])
  108. dimensions(feedpoint, dimension_width);
  109. // cut width dimension
  110. color(color_dimension)
  111. translate([ladderline_width*2, 0, feedpoint])
  112. rotate([0,-90,90])
  113. dimensions(cut_len, dimension_width, DIM_OUTSIDE);
  114. // quarter wave matching section dimension
  115. color(color_dimension)
  116. translate([ladderline_width*3, 0, 0])
  117. rotate([0,-90,90])
  118. dimensions(len025_2m, dimension_width);
  119. // cut width dimension
  120. color(color_dimension)
  121. translate([ladderline_width*3, 0, len025_2m])
  122. rotate([0,-90,90])
  123. dimensions(cut_len, dimension_width, DIM_OUTSIDE);
  124. // quarter wave matching section dimension
  125. color(color_dimension)
  126. translate([ladderline_width*4, 0, 0])
  127. rotate([0,-90,90])
  128. dimensions(len075_2m, dimension_width);
  129. }
  130. ///////////////////////////////////////////////////////////////////////////////////
  131. //
  132. ///////////////////////////////////////////////////////////////////////////////////
  133. module makeLadderline()
  134. {
  135. // right conductor
  136. difference() // make cut for quarter wave matching section (λ/4)*vf
  137. {
  138. translate([conducter_distance/2, 0,0])
  139. color(color_copper)
  140. cylinder(h=len075_2m, d=conducter_dia, center=false);
  141. // cut for quarter wave matching section (λ/4)*vf
  142. translate([(conducter_distance-conducter_dia)/2-0.5,-ladderline_width/2,len025_2m+0.1])
  143. cube([ladderline_width,ladderline_width,cut_len-0.2], center=false);
  144. }
  145. // left conductor
  146. translate([-conducter_distance/2,0,0])
  147. color(color_copper)
  148. cylinder(h=len075_2m, d=conducter_dia, center=false);
  149. // make the isolation plastic
  150. difference() // make cuts for feedpoint and quarter wave matching section (λ/4)*vf
  151. {
  152. // ladderline
  153. translate([0,0,len075_2m/2+conducter_dia/2])
  154. color(color_ladder)
  155. cube([ladderline_width,conducter_dia+1,len075_2m-conducter_dia], center=true);
  156. // right feedpoint cut
  157. translate([(conducter_distance-conducter_dia)/2-0.5,-ladderline_width/2,feedpoint])
  158. cube([ladderline_width,ladderline_width,cut_len], center=false);
  159. // left feedpoint cut
  160. translate([-ladderline_width-((conducter_distance-conducter_dia)/2-0.5),-ladderline_width/2,feedpoint])
  161. cube([ladderline_width,ladderline_width,cut_len], center=false);
  162. // cut for quarter wave matching section (λ/4)*vf
  163. translate([(conducter_distance-conducter_dia)/2-0.5,-ladderline_width/2,len025_2m])
  164. cube([ladderline_width,ladderline_width,cut_len], center=false);
  165. }
  166. }
  167. ///////////////////////////////////////////////////////////////////////////////////
  168. //
  169. ///////////////////////////////////////////////////////////////////////////////////
  170. module makeBridge()
  171. {
  172. // connect the two conducters at the bottom of the antenna
  173. translate([0,0,conducter_dia/2])
  174. rotate([0,90,0])
  175. color(color_copper)
  176. cylinder(h=(conducter_distance+conducter_dia), d=conducter_dia, center=true);
  177. }
  178. ///////////////////////////////////////////////////////////////////////////////////
  179. //
  180. ///////////////////////////////////////////////////////////////////////////////////