R reuter /

QFP58

CC BY-SA 4.0 Native

Vibe engineered circular polarized PCB antenna, inspired by the Triple Feed Patch.

Rendered
128 files · 3.7 MB at 05eecdc Download ZIP
.dockerignore 72 B
.gitignore 170 B
CLAUDE.md 11.0 KB
Dockerfile 3.2 KB
fp-lib-table 152 B
QFP58-feed-RHCP-drc.rpt 553 B
README.md 15.5 KB
run.sh 4.2 KB
uv.lock 189 KB
docs/
preview_LHCP.png 195 KB
preview_RHCP.png 195 KB
docs/svg/
QFP58-feed-LHCP-B_Cu.svg 134 KB
QFP58-feed-LHCP-Edge_Cuts.svg 11.5 KB
QFP58-feed-LHCP-F_Cu.svg 61.9 KB
QFP58-feed-RHCP-B_Cu.svg 131 KB
QFP58-feed-RHCP-Edge_Cuts.svg 11.6 KB
QFP58-feed-RHCP-F_Cu.svg 61.9 KB
QFP58-patch-B_Cu.svg 37.2 KB
QFP58-patch-Edge_Cuts.svg 11.9 KB
QFP58-patch-F_Cu.svg 16.3 KB
gerbers/
QFP58-feed-LHCP-fab.zip 31.5 KB
QFP58-feed-RHCP-fab.zip 31.6 KB
QFP58-patch-d23.06-fab.zip 12.0 KB
QFP58-patch-d23.36-fab.zip 12.0 KB
QFP58-patch-fab.zip 11.7 KB
gerbers/QFP58-feed-LHCP/
QFP58-feed-LHCP-B_Cu.gbl 4.2 KB
QFP58-feed-LHCP-B_Mask.gbs 1.6 KB
QFP58-feed-LHCP-B_Silkscreen.gbo 41.5 KB
QFP58-feed-LHCP-Edge_Cuts.gm1 17.0 KB
QFP58-feed-LHCP-F_Cu.gtl 47.5 KB
QFP58-feed-LHCP-F_Mask.gts 1.2 KB
QFP58-feed-LHCP-F_Silkscreen.gto 1.2 KB
QFP58-feed-LHCP-job.gbrjob 2.4 KB
gerbers/QFP58-feed-RHCP/
QFP58-feed-RHCP-B_Cu.gbl 4.2 KB
QFP58-feed-RHCP-B_Mask.gbs 1.6 KB
QFP58-feed-RHCP-B_Silkscreen.gbo 40.6 KB
QFP58-feed-RHCP-Edge_Cuts.gm1 17.0 KB
QFP58-feed-RHCP-F_Cu.gtl 47.5 KB
QFP58-feed-RHCP-F_Mask.gts 1.2 KB
QFP58-feed-RHCP-F_Silkscreen.gto 1.2 KB
QFP58-feed-RHCP-job.gbrjob 2.4 KB
gerbers/QFP58-patch/
QFP58-patch-B_Cu.gbl 21.0 KB
QFP58-patch-B_Mask.gbs 653 B
QFP58-patch-B_Silkscreen.gbo 663 B
QFP58-patch-Edge_Cuts.gm1 640 B
QFP58-patch-F_Cu.gtl 937 B
QFP58-patch-F_Mask.gts 810 B
QFP58-patch-F_Silkscreen.gto 9.4 KB
QFP58-patch-job.gbrjob 2.4 KB
gerbers/QFP58-patch-d23.06/
QFP58-patch-d23.06-B_Cu.gbl 21.0 KB
QFP58-patch-d23.06-B_Mask.gbs 660 B
QFP58-patch-d23.06-B_Silkscreen.gbo 670 B
QFP58-patch-d23.06-Edge_Cuts.gm1 647 B
QFP58-patch-d23.06-F_Cu.gtl 944 B
QFP58-patch-d23.06-F_Mask.gts 817 B
QFP58-patch-d23.06-F_Silkscreen.gto 10.5 KB
QFP58-patch-d23.06-job.gbrjob 2.4 KB
gerbers/QFP58-patch-d23.36/
QFP58-patch-d23.36-B_Cu.gbl 21.1 KB
QFP58-patch-d23.36-B_Mask.gbs 660 B
QFP58-patch-d23.36-B_Silkscreen.gbo 670 B
QFP58-patch-d23.36-Edge_Cuts.gm1 647 B
QFP58-patch-d23.36-F_Cu.gtl 944 B
QFP58-patch-d23.36-F_Mask.gts 817 B
QFP58-patch-d23.36-F_Silkscreen.gto 10.1 KB
QFP58-patch-d23.36-job.gbrjob 2.4 KB
kicad/QFP58-feed-LHCP/
fp-lib-table 149 B
QFP58-feed-LHCP-drc.rpt 553 B
kicad/QFP58-patch/
fp-lib-table 149 B
QFP58-patch-drc.rpt 576 B
kicad/QFP58-patch-d23.06/
fp-lib-table 149 B
QFP58-patch-d23.06-drc.rpt 528 B
kicad/QFP58-patch-d23.36/
fp-lib-table 149 B
QFP58-patch-d23.36-drc.rpt 528 B
kicad/QFP58.pretty/
CouplingDisk_3.6mm.kicad_mod 1.2 KB
FeedPin_1.1mm.kicad_mod 1.0 KB
MountingHole_2.2mm_M2.kicad_mod 1.0 KB
R_0603_Wilkinson.kicad_mod 1.2 KB
SMA_EdgeLaunch_1.0mm_generic.kicad_mod 1.7 KB
sim/full/
full_cuts_5.65GHz.png 86.6 KB
full_cuts_5.80GHz.png 87.0 KB
full_cuts_5.95GHz.png 88.6 KB
full_farfield_5.65GHz.npz 147 KB
full_farfield_5.80GHz.npz 147 KB
full_farfield_5.95GHz.npz 147 KB
full_pattern_5.65GHz.png 79.2 KB
full_pattern_5.80GHz.png 80.5 KB
full_pattern_5.95GHz.png 83.6 KB
full_pattern3d_5.65GHz.png 154 KB
full_pattern3d_5.80GHz.png 156 KB
full_pattern3d_5.95GHz.png 155 KB
full_sparams.png 30.3 KB
summary.json 1.5 KB
sim/network/
network_sparams.png 45.0 KB
sim/patch/
patch_ideal_feed_pattern_5.65GHz.png 69.2 KB
patch_ideal_feed_pattern_5.80GHz.png 69.5 KB
patch_ideal_feed_pattern_5.95GHz.png 70.5 KB
patch_sparams.png 48.0 KB
summary.json 1.4 KB
src/
generate.py 1.9 KB
qfp_geom.py 11.6 KB
qfp_sim.py 27.4 KB
docs/design_report.json
{
 "parameters": {
  "f0": 5800000000.0,
  "sub_er": 4.4,
  "sub_tand": 0.02,
  "sub_h": 1.0,
  "cu_t": 0.035,
  "board_d": 60.0,
  "flat_r": 29.0,
  "edge_pullback": 0.25,
  "gap_air": 4.0,
  "patch_d": 22.76,
  "patch_margin": 0.6,
  "patch_variants": [
   23.06,
   23.36
  ],
  "rp": 4.0,
  "pin_drill": 1.1,
  "pin_pad": 1.8,
  "gnd_antipad": 2.6,
  "patch_pin_ring": 1.4,
  "patch_antipad": 2.2,
  "disk_d": 3.6,
  "z_in": 50.0,
  "z_br": 60.0,
  "z_out": 50.0,
  "z_match": 100.0,
  "match_len": 2.0,
  "r1": 9.0,
  "res": "0603",
  "res_pitch": 1.65,
  "res_pad": [
   0.8,
   0.95
  ],
  "lead_off": 0.15,
  "lead_len": 1.0,
  "lead_len2": 1.6,
  "lead_off2": 0.35,
  "min_res_gap": 0.4,
  "branch_clear": 2.0,
  "junction_comp": true,
  "phase_corr2": 1.074,
  "phase_corr1": 0.972,
  "sma_sig_len": 2.8,
  "sma_gnd_off": 2.9,
  "sma_gnd_w": 1.6,
  "sma_gnd_len": 3.2,
  "via_drill": 0.4,
  "via_pad": 0.8,
  "mh_r": 26.0,
  "mh_drill": 2.2,
  "mh_clear": 3.2
 },
 "RHCP": {
  "Z": {
   "z_in": 50.0,
   "z_br": 60.0,
   "z_out": 50.0,
   "z_match": 100.0,
   "z_w1": 77.45966692414834,
   "z_w2": 77.45966692414834
  },
  "microstrip": {
   "z_in": {
    "z": 50.0,
    "w": 1.883,
    "eeff": 3.3799,
    "lam": 28.1152,
    "loss": 0.02
   },
   "z_br": {
    "z": 60.0,
    "w": 1.3567,
    "eeff": 3.2718,
    "lam": 28.5759,
    "loss": 0.0197
   },
   "z_out": {
    "z": 50.0,
    "w": 1.883,
    "eeff": 3.3799,
    "lam": 28.1152,
    "loss": 0.02
   },
   "z_match": {
    "z": 100.0,
    "w": 0.4027,
    "eeff": 2.9818,
    "lam": 29.9333,
    "loss": 0.0201
   },
   "z_w1": {
    "z": 77.4597,
    "w": 0.7942,
    "eeff": 3.1226,
    "lam": 29.2507,
    "loss": 0.0196
   },
   "z_w2": {
    "z": 77.4597,
    "w": 0.7942,
    "eeff": 3.1226,
    "lam": 29.2507,
    "loss": 0.0196
   }
  },
  "Rw1": 2.8831522581166777,
  "Rw2": 2.7989845831676265,
  "r1": 9.0,
  "rb2": 8.199675066677267,
  "r2": 14.597969166335254,
  "rb1": 17.673394738215357,
  "rg1": 18.30027017920751,
  "thA_deg": 18.62570751129272,
  "thB_deg": 198.62570751129272,
  "th1_deg": -48.86256289896428,
  "lengths": {
   "input": 3.283425304559139,
   "w1_arm": 8.254161333618423,
   "w2_arm": 7.990987730230549,
   "branchA_arc": 19.13270274162839,
   "branchB_arc": 33.020590703381245,
   "spur": 3.4725259169240363,
   "out_short_arc": 0.327630389272383,
   "out_long_arc": 7.8765504095167325,
   "pin_stub": 2.1996750666772673,
   "lead1": 1.0,
   "lead2": 1.6
  },
  "resistors": {
   "R2": "100 ohm",
   "R3": "100 ohm",
   "R1": "120 ohm"
  },
  "paths": {
   "P0": {
    "length_mm": 49.26110848291019,
    "loss_dB": 0.9712886440629881,
    "phase_deg": -616.2592207361744,
    "rel_phase_deg": 0.0
   },
   "P1": {
    "length_mm": 56.81002850315454,
    "loss_dB": 1.1220846591194786,
    "phase_deg": -712.9192207361743,
    "rel_phase_deg": -96.65999999999997
   },
   "P2": {
    "length_mm": 63.14899644466304,
    "loss_dB": 1.2449391568211408,
    "phase_deg": -791.2192207361743,
    "rel_phase_deg": -174.95999999999992
   },
   "P3": {
    "length_mm": 70.6979164649074,
    "loss_dB": 1.3957351718776314,
    "phase_deg": -887.8792207361743,
    "rel_phase_deg": 88.38000000000011
   }
  }
 },
 "LHCP": {
  "Z": {
   "z_in": 50.0,
   "z_br": 60.0,
   "z_out": 50.0,
   "z_match": 100.0,
   "z_w1": 77.45966692414834,
   "z_w2": 77.45966692414834
  },
  "microstrip": {
   "z_in": {
    "z": 50.0,
    "w": 1.883,
    "eeff": 3.3799,
    "lam": 28.1152,
    "loss": 0.02
   },
   "z_br": {
    "z": 60.0,
    "w": 1.3567,
    "eeff": 3.2718,
    "lam": 28.5759,
    "loss": 0.0197
   },
   "z_out": {
    "z": 50.0,
    "w": 1.883,
    "eeff": 3.3799,
    "lam": 28.1152,
    "loss": 0.02
   },
   "z_match": {
    "z": 100.0,
    "w": 0.4027,
    "eeff": 2.9818,
    "lam": 29.9333,
    "loss": 0.0201
   },
   "z_w1": {
    "z": 77.4597,
    "w": 0.7942,
    "eeff": 3.1226,
    "lam": 29.2507,
    "loss": 0.0196
   },
   "z_w2": {
    "z": 77.4597,
    "w": 0.7942,
    "eeff": 3.1226,
    "lam": 29.2507,
    "loss": 0.0196
   }
  },
  "Rw1": 2.8831522581166777,
  "Rw2": 2.7989845831676265,
  "r1": 9.0,
  "rb2": 8.199675066677267,
  "r2": 14.597969166335254,
  "rb1": 17.673394738215357,
  "rg1": 18.30027017920751,
  "thA_deg": 18.62570751129272,
  "thB_deg": 198.62570751129272,
  "th1_deg": -48.86256289896428,
  "lengths": {
   "input": 3.283425304559139,
   "w1_arm": 8.254161333618423,
   "w2_arm": 7.990987730230549,
   "branchA_arc": 19.13270274162839,
   "branchB_arc": 33.020590703381245,
   "spur": 3.4725259169240363,
   "out_short_arc": 0.327630389272383,
   "out_long_arc": 7.8765504095167325,
   "pin_stub": 2.1996750666772673,
   "lead1": 1.0,
   "lead2": 1.6
  },
  "resistors": {
   "R2": "100 ohm",
   "R3": "100 ohm",
   "R1": "120 ohm"
  },
  "paths": {
   "P0": {
    "length_mm": 49.26110848291019,
    "loss_dB": 0.9712886440629881,
    "phase_deg": -616.2592207361744,
    "rel_phase_deg": 0.0
   },
   "P1": {
    "length_mm": 56.81002850315454,
    "loss_dB": 1.1220846591194786,
    "phase_deg": -712.9192207361743,
    "rel_phase_deg": -96.65999999999997
   },
   "P2": {
    "length_mm": 63.14899644466304,
    "loss_dB": 1.2449391568211408,
    "phase_deg": -791.2192207361743,
    "rel_phase_deg": -174.95999999999992
   },
   "P3": {
    "length_mm": 70.6979164649074,
    "loss_dB": 1.3957351718776314,
    "phase_deg": -887.8792207361743,
    "rel_phase_deg": 88.38000000000011
   }
  }
 }
}