$fn = 10; //The more, the smoother smoothness= 30; //The lesser, the smoother //Helix antenna params: NTurns= 20; //20 LengthOfMatchingCoax_l1 = 31.25; //[lambda/4] DiameterOfMatchingCoax_d1 = 6.06; //mm PadderDiameter_d4 = 2.5; //mm (Can be varied) PadderExtraSpace = 1; //mm PadderSpaceOffsetFromReflector = 4; //mm HelixLength_l2 = 625; //mm (62.5 cm) HelixSpacing = HelixLength_l2/NTurns; HelixDiameter = 39.79; //mm ReflectorDiameter_d3 = 137.5; //mm ReflectorWidth = 4; //mm HelixWireSize = 2; //mm ThreeDPartCutout = HelixWireSize*1.2; ThreeDPartWidth = 7; //mm (distance from PCV pipe to wire) PVCPipeInnerDiameter = 16; //mm PVCPipeOuterDiameter = 20; //mm //This should be applied: Helix diameter //= PVC pipe diameter //+ 2 * (distance from pipe surface to wire center) HelixRadius = HelixDiameter/2; PVCPipeOuterRadius = PVCPipeOuterDiameter/2; PVCPipeInnerRadius = PVCPipeInnerDiameter/2; ReflectorRadius = ReflectorDiameter_d3/2; module line3D(p1, p2, thickness) { hull() { translate(p1) sphere(thickness / 2); translate(p2) sphere(thickness / 2); } } module polyline3D(points, thickness) { module polyline3D_inner(points, index) { if(index < len(points)) { line3D(points[index - 1], points[index], thickness, fn); polyline3D_inner(points, index + 1); } } polyline3D_inner(points, 1); } points = [ for(a = [0:smoothness:360 * NTurns]) [HelixRadius * cos(a), HelixRadius * sin(a), HelixSpacing / (360 / smoothness) * (a / smoothness)] ]; //Helper 3d printing needed fixer color("blue"){ for(a = [0:2:(NTurns-1)]) { translate([PVCPipeOuterRadius,-ThreeDPartWidth/2,HelixSpacing-ThreeDPartWidth/2+a*HelixSpacing]){ difference(){ cube([HelixRadius-PVCPipeOuterRadius+ThreeDPartWidth,ThreeDPartWidth,ThreeDPartWidth]); translate([ThreeDPartWidth*1.4,ThreeDPartWidth*1.5,ThreeDPartWidth/2]){ rotate([90.0,0.0,0.0]){ cylinder(ThreeDPartWidth*2,ThreeDPartCutout,ThreeDPartCutout); } } } } rotate([0.0,0.0,180.0]){ translate([PVCPipeOuterRadius,-ThreeDPartWidth/2,HelixSpacing*0.55-ThreeDPartWidth/2+a*HelixSpacing]){ difference(){ cube([HelixRadius-PVCPipeOuterRadius+ThreeDPartWidth,ThreeDPartWidth,ThreeDPartWidth]); translate([ThreeDPartWidth*1.4,ThreeDPartWidth*1.5,ThreeDPartWidth/2]){ rotate([90.0,0.0,0.0]){ cylinder(ThreeDPartWidth*2,ThreeDPartCutout,ThreeDPartCutout); } } } } } } } //PVC pipe color("gray"){ translate([0,0,ReflectorWidth/2]){ difference(){ cylinder(HelixLength_l2,PVCPipeOuterRadius,PVCPipeOuterRadius); cylinder(HelixLength_l2*1.5,PVCPipeInnerRadius,PVCPipeInnerRadius); } } } //Reflector color("#eee"){ cylinder(ReflectorWidth,ReflectorRadius,ReflectorRadius); } //Helix wire color("#B87333"){ polyline3D(points, HelixWireSize); //cylinder(ReflectorWidth,ReflectorDiameter_d3); } //Insulator //Prevent the coax center conductor from touching the reflector (ground) translate([HelixRadius,HelixRadius,-LengthOfMatchingCoax_l1+2]){ color("black"){ cylinder(LengthOfMatchingCoax_l1+PadderSpaceOffsetFromReflector,PadderDiameter_d4/2+HelixWireSize+PadderExtraSpace,PadderDiameter_d4/2+HelixWireSize+PadderExtraSpace); } } //Former