Compare commits
76 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c76006f5f | ||
|
|
99d4905880 | ||
|
|
cfae60ee68 | ||
|
|
d0856a7efe | ||
|
|
5cc5110d6b | ||
|
|
540d02be25 | ||
|
|
6540f6ff0f | ||
|
|
522857cf73 | ||
|
|
2d2118e7b3 | ||
|
|
1caddd0757 | ||
|
|
ac92394866 | ||
|
|
7a54792439 | ||
|
|
7703eddfad | ||
|
|
a4faa49955 | ||
|
|
56f96463d8 | ||
|
|
8376dea009 | ||
|
|
2f13da79f6 | ||
|
|
26ed0a40d6 | ||
|
|
bf275d75f3 | ||
|
|
3a972912fd | ||
|
|
aa443a5d52 | ||
|
|
59d1f34d56 | ||
|
|
d4907fd11c | ||
|
|
59fcb1f4d4 | ||
|
|
4d0fab0248 | ||
|
|
51abb45ce2 | ||
|
|
f43e604546 | ||
|
|
fcbd119f57 | ||
|
|
9077146920 | ||
|
|
e57a19a0fb | ||
|
|
7ba4e330ef | ||
|
|
aacb58c567 | ||
|
|
180547dc7a | ||
|
|
82eaace7fa | ||
|
|
53a9b9f87c | ||
|
|
0ee750496f | ||
|
|
453398c7c0 | ||
|
|
22befa272b | ||
|
|
85bc4b3f91 | ||
|
|
ea1f14ce41 | ||
|
|
d103b16e03 | ||
|
|
ded9947d11 | ||
|
|
a25619a07a | ||
|
|
424402c3ae | ||
|
|
32d11e4672 | ||
|
|
87f83fdb95 | ||
|
|
77a54510bd | ||
|
|
7b7704cc30 | ||
|
|
9385c8f013 | ||
|
|
3fbfa4ffb6 | ||
|
|
3d214630f6 | ||
|
|
befc1aae0d | ||
|
|
8e54fb69b4 | ||
|
|
2f1c7daa0a | ||
|
|
62f443c3d6 | ||
|
|
8ba908c58e | ||
|
|
44b2bb5fe2 | ||
|
|
1dbf9abeae | ||
|
|
55993ec1b8 | ||
|
|
a3c4c44e6e | ||
|
|
f450e4fded | ||
|
|
d310493e93 | ||
|
|
8577c6209f | ||
|
|
ed9e1d3e53 | ||
|
|
f212246d62 | ||
|
|
6085a62b10 | ||
|
|
7db1999012 | ||
|
|
e324240250 | ||
|
|
a4adfcfc6e | ||
|
|
80294f98c2 | ||
|
|
70d37e1950 | ||
|
|
7abc27c8b8 | ||
|
|
f9b584e7a8 | ||
|
|
96e8bad4eb | ||
|
|
7d717fb5c5 | ||
|
|
c643d0747a |
1480
Spiral plots.ipynb
Normal file
136
Total Coupling Variation Plot.ipynb
Normal file
|
|
@ -1,21 +1,3 @@
|
|||
Coil_Solver:
|
||||
Equation: CoilSolver
|
||||
Procedure: '"CoilSolver" "CoilSolver"'
|
||||
Linear System Solver: Iterative
|
||||
Linear System Preconditioning: ILU1
|
||||
Linear System Max Iterations: 1000
|
||||
Linear System Convergence Tolerance: 1e-10
|
||||
Linear System Iterative Method: BiCGStab
|
||||
Linear System Residual Output: 10
|
||||
Steady State Convergence Tolerance: 1e-06
|
||||
Normalize Coil Current: True
|
||||
Nonlinear System Consistent Norm: True
|
||||
Coil Closed: True
|
||||
Narrow Interface: True
|
||||
Save Coil Set: True
|
||||
Save Coil Index: True
|
||||
Calculate Elemental Fields: True
|
||||
|
||||
Static_Current_Conduction:
|
||||
Equation: Static Current Conduction
|
||||
Variable: Potential
|
||||
|
|
|
|||
|
|
@ -208,13 +208,13 @@ def inductance(mesh_file, sim_dir, solver_method):
|
|||
fr4 = elmer.load_material('fr4', sim, 'coil_mag_materials.yml')
|
||||
copper = elmer.load_material('copper', sim, 'coil_mag_materials.yml')
|
||||
|
||||
solver_coil = elmer.load_solver('Coil_Solver', sim, 'coil_mag_solvers.yml')
|
||||
solver_current = elmer.load_solver('Static_Current_Conduction', sim, 'coil_mag_solvers.yml')
|
||||
solver_magdyn = elmer.load_solver('Magneto_Dynamics', sim, 'coil_mag_solvers.yml')
|
||||
if solver_method:
|
||||
solver_magdyn.data['Linear System Iterative Method'] = solver_method
|
||||
solver_magdyn_calc = elmer.load_solver('Magneto_Dynamics_Calculations', sim, 'coil_mag_solvers.yml')
|
||||
|
||||
copper_eqn = elmer.Equation(sim, 'copperEqn', [solver_coil, solver_magdyn, solver_magdyn_calc])
|
||||
copper_eqn = elmer.Equation(sim, 'copperEqn', [solver_current, solver_magdyn, solver_magdyn_calc])
|
||||
air_eqn = elmer.Equation(sim, 'airEqn', [solver_magdyn, solver_magdyn_calc])
|
||||
|
||||
bdy_trace = elmer.Body(sim, 'trace', [physical['trace'][1]])
|
||||
|
|
@ -237,20 +237,20 @@ def inductance(mesh_file, sim_dir, solver_method):
|
|||
bdy_if_bottom.material = copper
|
||||
bdy_if_bottom.equation = copper_eqn
|
||||
|
||||
comp_coil = elmer.Component(sim, 'Coil', [bdy_trace])
|
||||
comp_coil.data['Desired Current Density'] = 'Real 1.0'
|
||||
|
||||
current_force = elmer.BodyForce(sim, 'Source', {
|
||||
'Current Density 1': 'Equals "CoilCurrent e 1"',
|
||||
'Current Density 2': 'Equals "CoilCurrent e 2"',
|
||||
'Current Density 3': 'Equals "CoilCurrent e 3"',
|
||||
})
|
||||
bdy_trace.body_force = current_force
|
||||
potential_force = elmer.BodyForce(sim, 'electric_potential', {'Electric Potential': 'Equals "Potential"'})
|
||||
bdy_trace.body_force = potential_force
|
||||
|
||||
# boundaries
|
||||
boundary_airbox = elmer.Boundary(sim, 'FarField', [physical['airbox_surface'][1]])
|
||||
boundary_airbox.data['Electric Infinity BC'] = 'True'
|
||||
|
||||
boundary_vplus = elmer.Boundary(sim, 'Vplus', [physical['interface_top'][1]])
|
||||
boundary_vplus.data['Potential'] = 1.0
|
||||
boundary_vplus.data['Save Scalars'] = True
|
||||
|
||||
boundary_vminus = elmer.Boundary(sim, 'Vminus', [physical['interface_bottom'][1]])
|
||||
boundary_vminus.data['Potential'] = 0.0
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
tmpdir = sim_dir if sim_dir else Path(tmpdir)
|
||||
|
||||
|
|
@ -261,8 +261,6 @@ def inductance(mesh_file, sim_dir, solver_method):
|
|||
stdout_log=(tmpdir / 'ElmerGrid_stdout.log'),
|
||||
stderr_log=(tmpdir / 'ElmerGrid_stderr.log'))
|
||||
solver_stdout, solver_stderr = (tmpdir / 'ElmerSolver_stdout.log'), (tmpdir / 'ElmerSolver_stderr.log')
|
||||
print('Solver stdout:', solver_stdout)
|
||||
print('Solver stderr:', solver_stderr)
|
||||
res = elmer_solver(tmpdir,
|
||||
stdout_log=solver_stdout,
|
||||
stderr_log=solver_stderr)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
|
|
@ -62,9 +63,10 @@
|
|||
35,
|
||||
36,
|
||||
39,
|
||||
40
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
|
|
@ -75,9 +77,71 @@
|
|||
},
|
||||
"meta": {
|
||||
"filename": "coil_test_board.kicad_prl",
|
||||
"version": 3
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": 0
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.049999999999999996,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.049999999999999996,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
|
|
@ -24,13 +24,13 @@
|
|||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.09999999999999999,
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.09999999999999999,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
|
|
@ -41,11 +41,11 @@
|
|||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.09999999999999999,
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.09999999999999999,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
|
|
@ -63,15 +63,20 @@
|
|||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
|
|
@ -98,7 +103,9 @@
|
|||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
|
|
@ -111,27 +118,29 @@
|
|||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_groove_width": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.7999999999999999,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.09999999999999999,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
"td_onvia": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
|
|
@ -206,6 +215,7 @@
|
|||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
|
|
@ -234,6 +244,7 @@
|
|||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
|
|
@ -242,7 +253,7 @@
|
|||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
|
|
@ -257,7 +268,7 @@
|
|||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"svg": "svg_vis",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
|
|
|
|||
BIN
gerber_wide_1.zip
Normal file
BIN
gerber_wide_2.zip
Normal file
BIN
gerber_wide_3.zip
Normal file
BIN
gerber_wide_4.zip
Normal file
BIN
gerber_wide_5.zip
Normal file
100
make_wide_coils.py
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
#!/bin/sh
|
||||
|
||||
import math
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
from gerbonara import utils
|
||||
from gerbonara.cad.kicad import pcb as kicad_pcb
|
||||
from gerbonara.cad.kicad import graphical_primitives as kicad_gr
|
||||
from gerbonara.cad.kicad import footprints as kicad_fp
|
||||
|
||||
outer_dias = [40, 65, 90]
|
||||
|
||||
nks = [[(1, 150),
|
||||
(1, 300),
|
||||
(1, 480)],
|
||||
[(53, 50),
|
||||
(53, 100),
|
||||
(53, 160)],
|
||||
[(53, 100),
|
||||
(53, 200),
|
||||
(53, 320)],
|
||||
[(53, 150),
|
||||
(53, 300),
|
||||
(53, 480)],
|
||||
[(53, 1),
|
||||
(53, 1),
|
||||
(53, 1)]]
|
||||
|
||||
def make_pad(x, y, side, w, h, **kwargs):
|
||||
f = kicad_fp.Footprint(name=f'conn_gen_01x{n}', _version=None, generator=None, at=kicad_fp.AtPos(x, y, 0), **kwargs)
|
||||
|
||||
for i in range(n):
|
||||
f.pads.append(kicad_fp.Pad(
|
||||
layers=['F.Mask', 'F.Cu'] if side == 'top' else ['B.Mask', 'B.Cu'],
|
||||
number=str(i+1),
|
||||
type=kicad_fp.Atom.smd,
|
||||
shape=kicad_fp.Atom.rect,
|
||||
at=kicad_fp.AtPos(0, 0, 0),
|
||||
size=kicad_fp.XYCoord(w, h),
|
||||
footprint=f))
|
||||
|
||||
return f
|
||||
|
||||
for case_num, nk in enumerate(nks, start=1):
|
||||
board_out = kicad_pcb.Board.empty_board()
|
||||
|
||||
for (i, d2), (n, k) in zip(enumerate(outer_dias), nk):
|
||||
d1 = d2 - 15
|
||||
|
||||
with tempfile.NamedTemporaryFile(suffix='.kicad_pcb') as f:
|
||||
args = 'python twisted_coil_gen_twolayer.py --circle-segments 331 --trace-width 0.13 --via-drill 0.3 --via-diameter 0.6 --via-offset 0.3'.split() + [
|
||||
'--pcb', f.name,
|
||||
'--turns', str(n), '--twists', str(k),
|
||||
'--inner-diameter', str(d1), '--outer-diameter', str(d2),
|
||||
]
|
||||
|
||||
if k > 100:
|
||||
args += ['--stagger-inner-vias', '--stagger-outer-vias', '--via-offset', '0.4']
|
||||
|
||||
subprocess.run(args, check=True)
|
||||
|
||||
for obj in kicad_pcb.Board.open(f.name).objects():
|
||||
board_out.add(obj)
|
||||
|
||||
board_out.add(kicad_gr.Text(text=f'case {case_num} n={n} k={k}\\nd={d1:.1f}-{d2:.2f}mm\\nt=0.15mm',
|
||||
at=kicad_gr.AtPos(0, (d1+d2)/2/2), layer=kicad_gr.TextLayer('F.SilkS')))
|
||||
|
||||
# Slots
|
||||
if i < len(outer_dias)-1:
|
||||
na = 8
|
||||
r2 = d2/2
|
||||
r = r2 + 2.5
|
||||
aw = 2*math.asin(3 / 2 / r)
|
||||
for j in range(na):
|
||||
start = utils.rotate_point(r, 0, (j+1)*2*math.pi/na - aw/2)
|
||||
end = utils.rotate_point(r, 0, j*2*math.pi/na + aw/2)
|
||||
arc = kicad_gr.Arc(end=end, center=(0, 0), start=start, stroke=kicad_gr.Stroke(width=1.2), layer='Edge.Cuts')
|
||||
board_out.add(arc)
|
||||
|
||||
# Connecting pads
|
||||
board_out.add(make_pad(d2/2+1, 0, 'top', 2, 0.7))
|
||||
board_out.add(make_pad(d2/2+1, 0, 'bottom', 2, 0.7))
|
||||
board_out.add(kicad_pcb.TrackSegment(start=kicad_pcb.XYCoord(d2/2, 0), end=kicad_pcb.XYCoord(d2/2+1, 0), width=0.15, layer='F.Cu'))
|
||||
board_out.add(kicad_pcb.TrackSegment(start=kicad_pcb.XYCoord(d2/2, 0), end=kicad_pcb.XYCoord(d2/2+1, 0), width=0.15, layer='B.Cu'))
|
||||
|
||||
# Circular board outline
|
||||
board_out.add(kicad_gr.Circle(center=kicad_gr.XYCoord(0, 0), end=kicad_gr.XYCoord(d2/2+5, 0), layer='Edge.Cuts'))
|
||||
|
||||
# Silk crosshairs
|
||||
r = d2/2 * math.sin(math.pi/4)
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(-r, -r), end=kicad_gr.XYCoord(r, r), layer='F.SilkS'))
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(r, -r), end=kicad_gr.XYCoord(-r, r), layer='F.SilkS'))
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(-r, -r), end=kicad_gr.XYCoord(r, r), layer='B.SilkS'))
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(r, -r), end=kicad_gr.XYCoord(-r, r), layer='B.SilkS'))
|
||||
r = d2/2
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(0, r), end=kicad_gr.XYCoord(0, -r), layer='B.SilkS'))
|
||||
board_out.add(kicad_gr.Line(start=kicad_gr.XYCoord(r, 0), end=kicad_gr.XYCoord(-r, 0), layer='B.SilkS'))
|
||||
|
||||
board_out.write(f'wide_coil_{case_num}.kicad_pcb')
|
||||
7
paper/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
*.bbl
|
||||
*.blg
|
||||
*.aux
|
||||
*.log
|
||||
*.bcf
|
||||
*.run.xml
|
||||
*.out
|
||||
|
|
@ -8,7 +8,7 @@ MAKEFLAGS += --no-builtin-rules
|
|||
|
||||
main_tex ?= paper
|
||||
|
||||
VERSION_STRING := $(shell git describe --tags --long --dirty)
|
||||
VERSION_STRING := $(shell git describe --tags --long)
|
||||
|
||||
all: ${main_tex}.pdf
|
||||
|
||||
|
|
@ -17,8 +17,26 @@ all: ${main_tex}.pdf
|
|||
biber $*
|
||||
pdflatex -shell-escape $<
|
||||
|
||||
paper_biber.bib:
|
||||
biber --output-format=bibtex --output-resolve paper.bcf
|
||||
|
||||
submission.zip:
|
||||
rm -f submission.zip
|
||||
zip -r submission.zip paper.tex paper.bib version.tex \
|
||||
figures/klein-spulen-schwingkreise-korbspule.jpg\
|
||||
figures/k_ripple_plot.pdf\
|
||||
figures/nk_combined.pdf\
|
||||
figures/nk_complex_illust.pdf\
|
||||
figures/rms_ripple_double_rotation_n3_r4.pdf\
|
||||
figures/saacke-radiotechnik-3-ledionspule.jpg\
|
||||
figures/svg_vis_paper_plain.png\
|
||||
figures/svg_vis_paper.png\
|
||||
figures/symmetry_3turn_n_twist.pdf\
|
||||
figures/test_schematic.pdf\
|
||||
figures/setup_probe_small.jpg
|
||||
|
||||
version.tex: ${main_tex}.tex paper.bib
|
||||
echo "${VERSION_STRING}" > $@
|
||||
echo -n "${VERSION_STRING}" > $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
|
|
|||
BIN
paper/figures/divide_by_zero.pdf
Normal file
BIN
paper/figures/field_plot_3d_n3_k4.pdf
Normal file
BIN
paper/figures/field_plot_3d_n5_k0.pdf
Normal file
BIN
paper/figures/k_ripple_plot.pdf
Normal file
BIN
paper/figures/klein-spulen-schwingkreise-korbspule.jpg
Normal file
|
After Width: | Height: | Size: 383 KiB |
BIN
paper/figures/nk_chinese_remainder_illust.pdf
Normal file
BIN
paper/figures/nk_combined.pdf
Normal file
BIN
paper/figures/nk_complex_illust.pdf
Normal file
BIN
paper/figures/nk_interleave_illust.pdf
Normal file
BIN
paper/figures/nk_simple_illust.pdf
Normal file
BIN
paper/figures/rms_ripple_double_rotation_n10_r4.pdf
Normal file
BIN
paper/figures/rms_ripple_double_rotation_n25_r4.pdf
Normal file
BIN
paper/figures/rms_ripple_double_rotation_n3_r4.pdf
Normal file
BIN
paper/figures/rms_ripple_double_rotation_n5_r4.pdf
Normal file
BIN
paper/figures/saacke-radiotechnik-3-ledionspule.jpg
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
paper/figures/setup_overview.jpg
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
BIN
paper/figures/setup_probe.jpg
Normal file
|
After Width: | Height: | Size: 4.1 MiB |
BIN
paper/figures/setup_probe_small.jpg
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
paper/figures/svg_vis_paper.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
paper/figures/svg_vis_paper_plain.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
paper/figures/symmetry_10turn_n_twist.pdf
Normal file
BIN
paper/figures/symmetry_3turn_n_twist.pdf
Normal file
BIN
paper/figures/test_schematic.pdf
Normal file
825
paper/figures/test_schematic.svg
Normal file
|
|
@ -0,0 +1,825 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="185.356mm"
|
||||
height="93.594002mm"
|
||||
viewBox="0 0 185.356 93.594002"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="test_schematic.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="1.6641134"
|
||||
inkscape:cx="244.27422"
|
||||
inkscape:cy="142.71864"
|
||||
inkscape:window-width="3183"
|
||||
inkscape:window-height="1783"
|
||||
inkscape:window-x="26"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1">
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect10" />
|
||||
<rect
|
||||
x="385.70886"
|
||||
y="297.09421"
|
||||
width="102.83019"
|
||||
height="111.67734"
|
||||
id="rect3" />
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="ConcaveTriangle"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="Concave triangle arrow"
|
||||
markerWidth="1"
|
||||
markerHeight="1"
|
||||
viewBox="0 0 1 1"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always"
|
||||
preserveAspectRatio="xMidYMid">
|
||||
<path
|
||||
transform="scale(0.7)"
|
||||
d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||
id="path7" />
|
||||
</marker>
|
||||
<rect
|
||||
x="385.70886"
|
||||
y="297.09421"
|
||||
width="102.83019"
|
||||
height="111.67734"
|
||||
id="rect4" />
|
||||
<rect
|
||||
x="385.70886"
|
||||
y="297.09421"
|
||||
width="102.83019"
|
||||
height="111.67734"
|
||||
id="rect5" />
|
||||
<rect
|
||||
x="385.70886"
|
||||
y="297.09421"
|
||||
width="102.83019"
|
||||
height="111.67734"
|
||||
id="rect6" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect10-5" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect39" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect40" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect47" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect48" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect55" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="273.77188"
|
||||
height="112.60981"
|
||||
id="rect56" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect57" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect58" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect60" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect61" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect62" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect63" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect64" />
|
||||
<rect
|
||||
x="437.73779"
|
||||
y="348.87198"
|
||||
width="177.31618"
|
||||
height="129.1815"
|
||||
id="rect65" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-38.334231,-50.81432)">
|
||||
<rect
|
||||
style="fill:#ffeeaa;stroke:none;stroke-width:0.365;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect7"
|
||||
width="57.955029"
|
||||
height="67.441551"
|
||||
x="83.425385"
|
||||
y="68.577538"
|
||||
rx="1.9671597"
|
||||
ry="1.9671596" />
|
||||
<g
|
||||
id="g6"
|
||||
transform="matrix(0.7372429,0,0,0.73667369,66.561458,44.083962)"
|
||||
style="stroke-width:1.35693">
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.678464;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1"
|
||||
d="M 68.349571,99.162305 H 89.106306"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.678464;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1"
|
||||
d="M 75.35578,106.3617 V 85.604966"
|
||||
id="path2"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.678464;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1"
|
||||
d="M 68.916477,102.85268 86.892335,92.474311"
|
||||
id="path3"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-23.790662,1.7156218)"
|
||||
id="text3"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect3);display:inline;stroke-width:1.35693"><tspan
|
||||
x="385.70898"
|
||||
y="321.1139"
|
||||
id="tspan17">z</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-8.2310232,15.859299)"
|
||||
id="text4"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect4);display:inline;stroke-width:1.35693"><tspan
|
||||
x="385.70898"
|
||||
y="321.1139"
|
||||
id="tspan19">x</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-11.147673,6.5390471)"
|
||||
id="text5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect5);display:inline;stroke-width:1.35693"><tspan
|
||||
x="385.70898"
|
||||
y="321.1139"
|
||||
id="tspan20">y</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-19.884406,21.928304)"
|
||||
id="text6"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect6);display:inline;stroke-width:1.35693"><tspan
|
||||
x="385.70898"
|
||||
y="321.1139"
|
||||
id="tspan33">α</tspan></text>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.678464;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1"
|
||||
d="m 71.585314,104.55786 c -1.060219,0.28749 -1.388316,0.86549 -1.381645,1.3205 0.0208,1.419 3.116278,1.75043 4.838231,1.81736 2.514725,0.0977 5.827504,-0.48364 5.827504,-2.03119 0,-0.63687 -0.518568,-1.15241 -1.996357,-1.55072"
|
||||
id="path6"
|
||||
sodipodi:nodetypes="csssc" />
|
||||
</g>
|
||||
<g
|
||||
id="g8"
|
||||
transform="rotate(-90,84.02158,87.2593)">
|
||||
<rect
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect8"
|
||||
width="15.001786"
|
||||
height="5.0005956"
|
||||
x="76.25853"
|
||||
y="147.85533" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="M 69.838171,150.35563 H 97.680675"
|
||||
id="path8"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="M 97.680675,150.35563 V 162.5472"
|
||||
id="path18"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 97.680675,198.09083 v 10.6746"
|
||||
id="path24"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,46.590248,-34.083774)"
|
||||
id="text9"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan35"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan34">Receiver</tspan></tspan></text>
|
||||
<g
|
||||
id="g11"
|
||||
transform="rotate(-90,113.22648,58.0544)">
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="M 69.838171,150.35563 H 97.680675"
|
||||
id="path11"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<rect
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect11"
|
||||
width="15.001786"
|
||||
height="5.0005956"
|
||||
x="76.25853"
|
||||
y="147.85533" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 147.1179,101.44271 h 22.71879"
|
||||
id="path18-1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 169.80619,112.66126 0.0305,-31.223089"
|
||||
id="path8-9"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 185.43453,101.44271 V 81.438168"
|
||||
id="path25"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g33"
|
||||
transform="rotate(-90,108.31112,80.71908)">
|
||||
<g
|
||||
id="g29"
|
||||
transform="translate(-0.25,0.061)">
|
||||
<g
|
||||
id="g28"
|
||||
transform="translate(7.2026149,12.184985)">
|
||||
<g
|
||||
id="g26"
|
||||
transform="matrix(0.53527713,0,0,0.54772615,50.414423,56.309066)"
|
||||
style="stroke-width:1.84684">
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse25"
|
||||
cx="108.48818"
|
||||
cy="169.1588"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
<path
|
||||
id="path26"
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923417;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="m 103.22521,169.1588 v -42.90097 h 10.51513 v 42.90097"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse26"
|
||||
cx="108.47737"
|
||||
cy="126.25288"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,119.47146 v 8.53214"
|
||||
id="path27"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,128.0036 v 27.01149"
|
||||
id="path28"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle29"
|
||||
cx="112.62113"
|
||||
cy="142.24466"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 113.35129,142.24465 h -5.75927"
|
||||
id="path29"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g32"
|
||||
transform="matrix(1,0,0,-1,0.51562288,313.42993)">
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle30"
|
||||
cx="112.10551"
|
||||
cy="155.58745"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 112.83567,155.58744 H 107.0764"
|
||||
id="path31"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 185.43453,101.44271 h 20.09318"
|
||||
id="path18-1-8"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g38"
|
||||
transform="matrix(0,1,1,0,27.561533,5.0692385)">
|
||||
<g
|
||||
id="g36"
|
||||
transform="translate(-0.25,0.061)">
|
||||
<g
|
||||
id="g35"
|
||||
transform="translate(7.2026149,12.184985)">
|
||||
<g
|
||||
id="g34"
|
||||
transform="matrix(0.53527713,0,0,0.54772615,50.414423,56.309066)"
|
||||
style="stroke-width:1.84684">
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse33"
|
||||
cx="108.48818"
|
||||
cy="169.1588"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
<path
|
||||
id="path33"
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923417;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="m 103.22521,169.1588 v -42.90097 h 10.51513 v 42.90097"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse34"
|
||||
cx="108.47737"
|
||||
cy="126.25288"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,119.47146 v 8.53214"
|
||||
id="path34"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,128.0036 v 27.01149"
|
||||
id="path35"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle36"
|
||||
cx="112.62113"
|
||||
cy="142.24466"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 113.35129,142.24465 h -5.75927"
|
||||
id="path36"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g37"
|
||||
transform="matrix(1,0,0,-1,0.51562288,313.42993)">
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle37"
|
||||
cx="112.10551"
|
||||
cy="155.58745"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 112.83567,155.58744 h -8.81671"
|
||||
id="path37"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle29-1"
|
||||
cx="-101.44271"
|
||||
cy="169.82144"
|
||||
r="0.73016149"
|
||||
transform="rotate(-90)" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 159.27898,73.600206 V 120.49922"
|
||||
id="path8-9-4-9"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle29-1-8"
|
||||
cx="73.600204"
|
||||
cy="159.27896"
|
||||
transform="matrix(0,1,1,0,0,0)"
|
||||
r="0.73016149" />
|
||||
<g
|
||||
id="g40"
|
||||
transform="rotate(-90,95.949903,67.216385)">
|
||||
<circle
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"
|
||||
id="path38"
|
||||
cx="42.667065"
|
||||
cy="170.93503"
|
||||
r="4.845932" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,0.26458333,-0.26458333,0,138.95415,52.731509)"
|
||||
id="text9-2"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10-5);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan37"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan36">V</tspan></tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g41"
|
||||
transform="translate(136.59026,-96.367894)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-42.558683,87.081574)"
|
||||
id="text39"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect39);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan39"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan38">R</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.14864912,0,0,0.14864912,13.222331,131.43791)"
|
||||
id="text40"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect40);display:inline;stroke-width:1.77992"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan41"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan40">L</tspan></tspan></text>
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 185.40403,109.60382 h 25.06601"
|
||||
id="path39"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 204.51447,120.49922 h 5.95557"
|
||||
id="path37-6"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 210.47004,120.49922 v -10.8954"
|
||||
id="path37-3"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-39.978173,33.881434)"
|
||||
id="text56"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;text-align:center;white-space:pre;shape-inside:url(#rect56);display:inline"
|
||||
x="50.625053"
|
||||
y="0"><tspan
|
||||
x="474.62395"
|
||||
y="373.61669"
|
||||
id="tspan43"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan42">Motion platform</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,36.505656,-9.437934)"
|
||||
id="text58"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect58);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan45"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan44">L</tspan></tspan></text>
|
||||
<g
|
||||
id="g60"
|
||||
transform="translate(121.10514,-53.606385)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-42.558683,87.081574)"
|
||||
id="text59"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect60);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan47"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan46">V</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.14864912,0,0,0.14864912,12.012663,131.43791)"
|
||||
id="text60"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect61);display:inline;stroke-width:1.77992"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan49"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan48">Out</tspan></tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g9"
|
||||
transform="rotate(-90,73.52791,97.752971)">
|
||||
<rect
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect9"
|
||||
width="15.001786"
|
||||
height="5.0005956"
|
||||
x="76.25853"
|
||||
y="147.85533" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="M 69.838171,150.35563 H 97.680675"
|
||||
id="path9"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 113.939,73.6002 h 12.19157"
|
||||
id="path18-9"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g46"
|
||||
transform="rotate(-90,61.076952,127.95324)">
|
||||
<g
|
||||
id="g44"
|
||||
transform="translate(-0.25,0.061)">
|
||||
<g
|
||||
id="g43"
|
||||
transform="translate(7.2026149,12.184985)">
|
||||
<g
|
||||
id="g42"
|
||||
transform="matrix(0.53527713,0,0,0.54772615,50.414423,56.309066)"
|
||||
style="stroke-width:1.84684">
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse41"
|
||||
cx="108.48818"
|
||||
cy="193.9332"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
<path
|
||||
id="path41"
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923417;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="m 103.22521,193.90511 v -67.64728 h 10.51513 v 67.64728"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<ellipse
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.923418;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse42"
|
||||
cx="108.47737"
|
||||
cy="126.25288"
|
||||
rx="5.2521563"
|
||||
ry="1.7507188" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,119.47146 v 8.53214"
|
||||
id="path42"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 108.47737,128.0036 v 40.56569"
|
||||
id="path43"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle44"
|
||||
cx="112.62113"
|
||||
cy="142.24466"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 113.35129,142.24465 h -5.75927"
|
||||
id="path44"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
id="g45"
|
||||
transform="matrix(1,0,0,-1,0.51562288,313.42993)">
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle45"
|
||||
cx="112.10551"
|
||||
cy="142.03323"
|
||||
r="0.73016149" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 112.83567,142.03324 H 107.0764"
|
||||
id="path45"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g47"
|
||||
transform="rotate(-90,12.020498,118.16803)">
|
||||
<circle
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"
|
||||
id="circle46"
|
||||
cx="42.667065"
|
||||
cy="170.93503"
|
||||
r="4.845932" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,0.26458333,-0.26458333,0,138.95415,52.731509)"
|
||||
id="text46"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect47);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan51"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan50">V</tspan></tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g48"
|
||||
transform="rotate(-90,102.24798,61.168296)">
|
||||
<circle
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none"
|
||||
id="circle47"
|
||||
cx="75.894829"
|
||||
cy="9.9268379"
|
||||
r="4.845932" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.500002;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 75.882664,12.622933 c 0,0 -1.320624,-0.616184 -1.320624,-1.348048 0,-0.718365 0.885426,-1.113278 1.320624,-1.3480463 0.436571,-0.23551 1.344954,-0.571053 1.344954,-1.406328 0,-0.781986 -1.344954,-1.289768 -1.344954,-1.289768"
|
||||
id="path44-8"
|
||||
sodipodi:nodetypes="csssc" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 64.799615,73.6002 -0.0121,8.991146"
|
||||
id="path44-7"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.012582,73.6002 -0.01211,8.991146"
|
||||
id="path48"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 64.799615,92.45156 -0.0121,8.99114"
|
||||
id="path49"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.012582,92.45156 -0.01211,8.99114"
|
||||
id="path50"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 51.012582,73.6002 H 64.841165"
|
||||
id="path42-3"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 51.000472,101.4427 H 64.829055"
|
||||
id="path51"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 64.787505,101.4427 h 10.58086"
|
||||
id="path52"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 75.368365,81.438165 V 101.4427"
|
||||
id="path53"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle44-0"
|
||||
cx="-101.4427"
|
||||
cy="64.793571"
|
||||
r="0.73016149"
|
||||
transform="rotate(-90)" />
|
||||
<circle
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="circle53"
|
||||
cx="-73.600197"
|
||||
cy="64.793571"
|
||||
r="0.73016149"
|
||||
transform="rotate(-90)" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="M 104.52041,81.438162 V 101.4427"
|
||||
id="path54"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
|
||||
d="m 104.52041,101.4427 h 21.61016"
|
||||
id="path55"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-52.418097,-33.843802)"
|
||||
id="text55"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect55);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan53"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan52">Transmitter</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,1.3112422,-9.1879403)"
|
||||
id="text57"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect57);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan55"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan54">L</tspan></tspan></text>
|
||||
<g
|
||||
id="g62"
|
||||
transform="translate(-6.158472,-88.237458)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-42.558683,87.081574)"
|
||||
id="text61"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62);display:inline"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan57"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan56">V</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.14864912,0,0,0.14864912,12.012663,131.43791)"
|
||||
id="text62"
|
||||
style="font-size:26.6667px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect63);display:inline;stroke-width:1.77992"><tspan
|
||||
x="437.73828"
|
||||
y="373.61669"
|
||||
id="tspan59"><tspan
|
||||
style="font-family:Inter;-inkscape-font-specification:Inter"
|
||||
id="tspan58">in</tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 38 KiB |
BIN
paper/figures/twolayer_spiral.pdf
Normal file
804
paper/paper.bib
934
paper/paper.tex
|
|
@ -1,4 +1,4 @@
|
|||
\documentclass[conference,compsoc]{IEEEtran}
|
||||
\documentclass[journal,10pt,a4paper]{IEEEtran}
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[
|
||||
|
|
@ -13,51 +13,959 @@
|
|||
\usepackage{amssymb,amsmath}
|
||||
\usepackage{eurosym}
|
||||
\usepackage{wasysym}
|
||||
|
||||
\usepackage[binary-units]{siunitx}
|
||||
\DeclareSIUnit{\baud}{Bd}
|
||||
\DeclareSIUnit{\year}{a}
|
||||
\usepackage{commath}
|
||||
\usepackage{graphicx,color}
|
||||
\usepackage{colortbl}
|
||||
\usepackage{subcaption}
|
||||
\usepackage{placeins}
|
||||
\usepackage{array}
|
||||
\usepackage{censor}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{makecell}
|
||||
|
||||
\DeclareSIUnit{\baud}{Bd}
|
||||
\DeclareSIUnit{\year}{a}
|
||||
\DeclareSIUnit{\rpm}{rpm}
|
||||
\renewcommand{\floatpagefraction}{.8}
|
||||
\newcommand{\degree}{\ensuremath{^\circ}}
|
||||
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
|
||||
\newcommand{\partnum}[1]{\texttt{#1}}
|
||||
\newcommand{\todo}[1]{\textbf{TODO}\footnote{#1}}
|
||||
\newlength{\figurescale}
|
||||
\setlength{\figurescale}{\linewidth}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\date{}
|
||||
\date{January 27 2025}
|
||||
\author{\IEEEauthorblockN{Jan Sebastian Götte},\thanks{Corresponding author. Jan Sebastian Götte is with the Technical
|
||||
University of Darmstadt, 64283 Darmstadt, Germany (e-mail: jan.goette@tu-darmstadt.de).}
|
||||
\and
|
||||
\IEEEauthorblockN{Björn Scheuermann}\thanks{Björn Scheuermann is with the Technical University of Darmstadt,
|
||||
64283 Darmstadt, Germany (e-mail: scheuermann@kom.tu-darmstadt.de).}
|
||||
\thanks{This work has been funded by the LOEWE initiative (Hesse, Germany) within the emergenCITY center
|
||||
(LOEWE/1/12/519/03/05.001(0016)/72) as well as by Technical University of Darmstadt.}
|
||||
}
|
||||
\title{Wireless Power Transfer with a Twist:
|
||||
Achieving Rotation-Invariant Coupling using Multi-Layer PCB Inductors}
|
||||
Achieving Rotation-Invariant Coupling using Twisted Multi-Layer PCB Inductors}
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}
|
||||
We present \emph{twisted inductors}, a planar inductor layout that interleaves multiple spiral traces across two
|
||||
layers, increasing Self-Resonant Frequency (SRF), providing higher inductance, and improving rotational field
|
||||
symmetry compared to conventional layouts. Twisted inductors generalize both conventional planar spiral inductors as
|
||||
well as planar toroidal inductors. We experimentally show that in Wireless Power Transfer (WPT) through an axially
|
||||
rotating joint in Inertial Hardware Security Modules (IHSMs), the improved symmetry of twisted inductors results in
|
||||
decreased output ripple. We further provide measurements of 39 test coupons showing that twisted inductors improve
|
||||
SRF by up to \qty{58}{\percent} and increase inductance by up to \qty{6.5}{\percent} compared to conventional planar
|
||||
spiral inductors.
|
||||
\end{abstract}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
Inductive Wireless Power Transfer (WPT) is a widely used technology supported by a large corpus of research literature
|
||||
\cite{
|
||||
awuahNovelCoilDesign2023,
|
||||
batraEffectFerriteAddition2015,
|
||||
curranModelingCharacterizationPCB2015,
|
||||
fanSimultaneousWirelessPower2024,
|
||||
leeSimpleWirelessPower2017,
|
||||
liWirelessPowerTransfer2015,
|
||||
maierContributionSystemDesign2019,
|
||||
mooreApplicationsWirelessPower2019,
|
||||
mouEnergyEfficientAdaptiveDesign2017,
|
||||
mouWirelessPowerTransfer2015,
|
||||
zhangWirelessPowerTransfer2019}.
|
||||
While working on an application of inductive WPT in a Inertial Hardware Security Module (IHSM) as previously
|
||||
published by \textcite{gotteCantTouchThis2022}, we found ourselves presented with an unusual set of constraints
|
||||
attempting WPT through a rotating joint using a planar inductor implemented in a Printed Circuit Board (PCB)---a set of
|
||||
constraints that does not seem to be addressed adequately in the existing literature on inductive WPT yet.
|
||||
|
||||
Inertial Hardware Security Modules are a hardware security primitive that discourages tampering with a payload such as a
|
||||
single-board computer by rotating a tamper-sensing enclosure around the payload. The tamper-sensing enclosure
|
||||
continuously monitors itself for tampering using sensors such as tamper-sensing meshes~\cite{TamperResistance2020} and
|
||||
accelerometers. When the tamper-sensing enclosure signals a tamper alarm to the payload, the payload immediately
|
||||
destroys all sensitive data to prevent the attacker from gaining access to it. In principle, an IHSM is similar to an
|
||||
ATM that responds to attempts at opening its vault by dispensing dye over the bank notes within, rendering them
|
||||
unusable.
|
||||
|
||||
In our IHSM implementation, the tamper-sensing enclosure rotates at speeds in the range from
|
||||
\qtyrange{1000}{3000}{\rpm}. The tamper sensing circuit on the rotating enclosure is powered through a pair of WPT
|
||||
inductors located on the IHSM's axis of rotation. The large centrifugal acceleration prohibits the use of batteries or
|
||||
liquid electrolyte capacitors on the rotating part, and makes heavy components such as large Multilayer Ceramic
|
||||
Capacitors (MLCCs) challenging to balance. Planar inductors that are patterned directly into a PCB provide a
|
||||
cost-effective and lightweight solution to this problem, but the coarse pattern resolution of PCBs results in a strict
|
||||
upper limit to the turn count that can be achieved in an inductor with a given area.
|
||||
|
||||
Planar inductors are usually considered approximately axisymmetric. In our application, we found that the field
|
||||
asymmetry in feasible PCB inductors is large enough that axial rotation of two such inductors results in an oscillation
|
||||
of their coupling coefficient that leads to voltage ripple on the secondary side, especially when the coils are
|
||||
misaligned.
|
||||
|
||||
In other inductive WPT systems, this issue is mitigated by several factors: First, for this effect to matter in the
|
||||
first place, the two coils have to be rotating with respect to one another. In ferrite core inductors, the core is the
|
||||
major factor shaping the magnetic field and evens out the small effect of winding asymmetry. In wire-wound inductors,
|
||||
the often higher turn count and the tightly packed, circular wires render this effect negligible. Finally, the output
|
||||
ripple caused by this oscillation can be filtered through a voltage regulator or by using a large decoupling capacitor
|
||||
on the secondary side if the application can accomodate such components on the rotating part.
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\subcaptionbox{\raggedright A classic planar spiral inductor}{
|
||||
\includegraphics[width=0.25\figurescale]{figures/svg_vis_paper_plain.png}}
|
||||
\subcaptionbox{\raggedright Our proposed inductor layout}{
|
||||
\includegraphics[width=0.25\figurescale]{figures/svg_vis_paper.png}}
|
||||
\subcaptionbox{\raggedright A honeycomb coil in \textcite{saackeRadiotechnikIIIEmpfanger1926}}{
|
||||
\includegraphics[width=0.15\figurescale]{figures/saacke-radiotechnik-3-ledionspule.jpg}}
|
||||
\subcaptionbox{\raggedright A basket-woven coil in \textcite{kleinSpulenUndSchwingungskreise1941}}{
|
||||
\includegraphics[width=0.15\figurescale]{figures/klein-spulen-schwingkreise-korbspule.jpg}}
|
||||
\end{center}
|
||||
\caption{Illustration of our proposed inductor layout compared to contemporary conventional planar inductors and
|
||||
honeycomb as well as basket-woven coils from the early days of wireless radio.}
|
||||
\label{fig_illust_honeycomb_basket}
|
||||
\end{figure}
|
||||
|
||||
While there exist a corpus of prior work focusing on efficient power transfer between two coils whose position relative
|
||||
to one another cannot be precisely controlled as is the case in wireless phone charging systems as well as in proposed
|
||||
WPT electric vehicle chargers~\cite{liWirelessPowerTransfer2015,mouEnergyEfficientAdaptiveDesign2017},
|
||||
it is generally assumed that the two coils remain quasi-stationary with respect to one another.
|
||||
|
||||
There exists a body of work on inductive power transfer through rotating joints but here the focus often lies on higher
|
||||
power budgets than our application requires, which in practice requires more space and a ferrite or laminated iron
|
||||
core~\cite{
|
||||
fanSimultaneousWirelessPower2024,
|
||||
songRotationLightweightWirelessPower2019,
|
||||
wangCoaxialNestedCouplersBased2020,
|
||||
}.
|
||||
Often, these rotating joint WPT systems use coaxial structures, but segmented approaches exist, too~\cite{
|
||||
wangNovelRotatingWireless2024,
|
||||
yanFreeRotationWirelessPower2023,
|
||||
xiaRotaryWirelessPower2024,
|
||||
liWirelessPowerTransfer2021,
|
||||
}.
|
||||
In lower-power applications, segmented approaches are more common. A key challenge in segmented approaches is the
|
||||
reduction of secondary-side ripple induced when the segments' alignment changes throughout one revolution~\cite{
|
||||
zhangWirelessSensorPower2024,
|
||||
}, which usually requires additional secondary-side circuitry.
|
||||
|
||||
\subsection{Twisted inductors}
|
||||
|
||||
In this paper, we propose a layout for circular PCB inductors that uses a number of series-connected interleaved spirals
|
||||
to achieve a topological equivalent to a torus knot from mathematical knot theory. Our layout twists the inductor's
|
||||
windings around one another by connecting the interleaved spiral segments with a ring of vias each on the inside and
|
||||
outside of the inductor's windings. Our approach improves rotation ripple in WPT through a rotating joint. Furthermore,
|
||||
it provides better performance beyond our particular use case, and improves upon conventional contemporary planar
|
||||
inductors by applying similar principles to those which inspired the polygonal basket-woven air coils used in early
|
||||
radio sets. We show that we can layout a twisted inductor for any number of layer inversions that is co-prime to the
|
||||
inductor's turn count. Our approach opens up a design space for inductor layouts that interpolate between planar spiral
|
||||
inductors on one end, and planar toroidal inductors on the other end, gerneralizing a super-set to a number of previous
|
||||
approaches to the design of planar inductors.
|
||||
|
||||
We observe that in high-frequency applications, a moderate number of layer inversions increases the spacing between the
|
||||
beginning and end of the inductor's conductor, where the majority of the inductor's AC current flows. This decreases the
|
||||
parasitic capacitance of the inductor and increases its Self-Resonant Frequency (SRF), raising its maximum possible
|
||||
operating frequency and improving its efficiency at lower operating frequencies.
|
||||
|
||||
\subsection{Contributions}
|
||||
Our contributions in this paper include:
|
||||
\begin{itemize}
|
||||
\item We introduce twisted inductors, a planar inductor layout that improves rotational symmetry in WPT through
|
||||
rotating joins, and promises improved high-frequency behavior in other applications.
|
||||
\item We provide detailed instructions for the construction of such layouts, including a mathematical analysis of
|
||||
the available parameter space.
|
||||
\item We provide an analytical model of inductance and DC equivalent series resistance of our scheme.
|
||||
\item We validate our scheme and provide laboratory measurements of the basic parameters of 39 test specimens
|
||||
comparing our scheme to conventional layouts.
|
||||
\item We further present the results of Finite Element Method (FEM) simulations to validate our inductance and ESR
|
||||
approximations.
|
||||
\item Finally, to analyze the degree of rotational symmetry in our proposed scheme, we provide the results of a
|
||||
large number of automated measurements of coupling between pairs of inductors under various rotations, offsets,
|
||||
distances and load conditions.
|
||||
\end{itemize}
|
||||
|
||||
\section{Related Work}
|
||||
\subsection{Twisted Inductors in RFIC Design}
|
||||
\subsection{Basket-Woven Air Coils}
|
||||
|
||||
\subsection{Inductive WPT in Practice}
|
||||
|
||||
Inductive WPT has been proposed in a large number of
|
||||
scenarios~\cite{zhangWirelessPowerTransfer2019,mouWirelessPowerTransfer2015}, each of which comes with a set of unique
|
||||
constraints. When WPT is used to charge an electric toothbrush, the implementation cost of the system is critical, while
|
||||
efficiency and total power output are of little concern. Mechanically, in an electric toothbrush's charging system, the
|
||||
position and spacing of the transmitter and receiver coils can easily be controlled down to millimeter precision.
|
||||
|
||||
In contrast to this, wireless smartphone charging is a much more demanding application. Here, the total cost of the
|
||||
system is only secondary, but the receiver's form factor is critical, and total power output as well as efficiency
|
||||
become major objectives. At the same time, in wireless smartphone charging, position tolerances are very coarse, and the
|
||||
two coils in the charging base and in the phone may be positioned more than a centimeter off-axis, with a gap of several
|
||||
millimeters and potentially not even in parallel planes.
|
||||
|
||||
Power transfer across large distances is even more of a concern in implantable medical
|
||||
devices~\cite{mooreApplicationsWirelessPower2019}. Where a wireless phone charger must be able to bridge distances of a
|
||||
few millimeters, an implantable medical device might be situated underneath several centimeter of tissue and bones. At
|
||||
the same time, cost is of (almost) no concern in this medical application, which enables the use of complex
|
||||
manufacturing techniques, customized electronic components and exotic materials.
|
||||
|
||||
While all of the aforementioned applications transfer somewhere between a few hundred milliwatts and several watts of
|
||||
power, at the other end of the spectrum there is a large body of research suggesting the use of inductive wireless power
|
||||
transfer for the charging of electric vehicles
|
||||
(EVs)~\cite{liWirelessPowerTransfer2015,mouEnergyEfficientAdaptiveDesign2017}. In this application, the wireless power
|
||||
transfer system usually replaces the conventional wired charging connector, which improves the systems' user experience
|
||||
given the strong force required to seat or unseat these rather large connectors, as well as the heft of the required
|
||||
water-cooled cables. In this application, size is of little concern, but at charging rates up to tens of kilowatt,
|
||||
efficiency becomes critical.
|
||||
%When charging an EV at a rate of \qty{10}{\kilo\watt}, an efficiency improvement of just
|
||||
%$0.1\%$ corresponds to a reduction in power dissipation of \qty{10}{\watt}. Besides the monetary cost of the power lost
|
||||
%this way, each small improvement enables a reduction in size of heat sinks and other cooling components, which directly
|
||||
%translates to a decrease in cost.
|
||||
|
||||
\subsection{Core materials in WPT}
|
||||
|
||||
Across application areas, air-core inductors are often used for WPT since in most applications, an air gap of several
|
||||
millimeters or more is expected~\cite{curranModelingCharacterizationPCB2015}. Especially in low-power application such
|
||||
as mobile device charging, the size and weight of ferrites is an obstacle to their use, and at lower power levels losses
|
||||
are less of a concern.
|
||||
|
||||
A common way to use ferrites in WPT applications is by magnetically shielding the inductor's back side with a ferrite
|
||||
plate such that the field does not extend beyond the coil's back side, thereby increasing the intended mutual inductance
|
||||
while simultaneously reducing eddy current losses when the WPT coils are placed near metal
|
||||
objects~\cite{batraEffectFerriteAddition2015,leeSimpleWirelessPower2017,muehlmannMutualCouplingModeling2012}. Similar to
|
||||
how the trace layouts of planar WPT coils are optimized to improve power transfer efficiency, the layout of ferrite
|
||||
components has been proposed for optimization~\cite{batraEffectFerriteAddition2015}.
|
||||
|
||||
\subsection{PCB inductor design for wireless power transfer}
|
||||
|
||||
Today, air-core inductors are the standard solution in inductive WPT links. Since in most WPT applications an air gap of
|
||||
several millimeters between the sending and receiving assemblies is expected, adding a ferrite core does not result in a
|
||||
large improvement in coupling. Instead, the impact of this distance as well as misalignment is reduced by maximizing the
|
||||
area of the air-core inductors used, or by tiling multiple
|
||||
inductors~\cite{curranModelingCharacterizationPCB2015,wangNovelRotatingWireless2024,zhangDynamicWirelessPower2025}.
|
||||
|
||||
WPT inductors tend to be mostly planar coils with only a few layers, so implementing them in a PCB process seems
|
||||
natural. Using a PCB for the inductor has the potential to reduce implementation cost since PCBs are cheap, and they can
|
||||
also serve as structural support. However, implementing inductors in PCBs has several disadvantages. First, due to the
|
||||
limited layer count of common PCB processes and due to structure size limitations, the number of windings that can be
|
||||
fit into a given volume is much lower than in wire-wound inductors. Second, due to a PCB's copper layers being thin
|
||||
compared to its dielectric substrate\footnote{common values are \qtyrange{15}{30}{\micro\meter} copper thickness and
|
||||
\qtyrange{600}{1600}{\micro\meter} substrate thickness} PCB inductors tend to have poor DC resistance, albeit the thin
|
||||
copper layer decreases skin effect losses compared to a solid, round conductors of the same cross-sectional area.
|
||||
However, PCBs can still not approach the performance of litz wire used in high-frequency WPT coils, which commonly use
|
||||
wire diameters in the range of tens of micrometers~\cite{zhaoDesignOptimizationLitzWire2023}.
|
||||
\textcite{lopeFrequencyDependentResistancePlanar2014} and \textcite{nomotoSplittingConductorsCoils2024} propose a
|
||||
mitigation that aims to emulate a litz wire's structure in large, high-current PCB inductors, but their mitigation is
|
||||
heavily limited by the structure size achievable in common PCB manufacturing
|
||||
processes~\cite{nguyenReviewComparisonSolid2020}.
|
||||
|
||||
A further factor that limits the high-frequency performance of PCB inductors is distributed capacitance. Not only does a
|
||||
large air coil exhibit more parasitic capacitance than an equivalent, smaller ferrite-core inductor simply due to its
|
||||
size, when implemented in a PCB process a large fraction of the electrical fields responsible for this capacitance pass
|
||||
through the PCB's substrate, not air. The relative permittivity $\epsilon_r$ of common PCB substrates typically lies in
|
||||
the range of $4$ to $5$~\cite{mumbyDielectricPropertiesFR41989}, which increases the distributed capacitance compared to
|
||||
a pure air-core inductor by approximately that same factor.
|
||||
|
||||
\subsection{Planar Inductors in RFIC Design}
|
||||
|
||||
Beyond WPT, planar inductors are commonly used in radio frequency integrated circuits (RFICs). In RFIC design, the major
|
||||
challenges are area optimization and precisely predicting the inductor's characteristics during the design phase. Common
|
||||
optimizations include applying a variable trace pitch~\cite{lopez-villegasImprovementQualityFactor2000} and variable
|
||||
trace width~\cite{hsuAnalyticalDesignAlgorithm2008}.
|
||||
|
||||
In RFICs, inductors are commonly designed as \emph{balanced} inductors with a grounded central node. Such designs
|
||||
interleave two counter-wound planar spiral inductors on the same layer with the help of some jumper connections on a
|
||||
second layer~\cite{daneshDifferentiallyDrivenSymmetric2002,martinMultiturnTwistedInductor2016}. The use of such designs
|
||||
in RFIC design is mainly focused on their electrical symmetry, so that the two input ports can be fed with a fully
|
||||
differential signal, with the inductor loading both driver outputs equally across the inductor's frequency range.
|
||||
|
||||
% Note: They note that the main point behind the design is electrical symmetry of the two ports to make driving the
|
||||
% thing differentially cleaner. We should adopt this observation for our inductors, which likewise are electrically
|
||||
% symmetric when compared to a single-layer spiral inductor.
|
||||
|
||||
\subsection{A Brief Historical Diversion on Basket-Woven Air Coils}
|
||||
|
||||
Since the early days of radio engineering, the parasitic capacitance of inductors has been a point of
|
||||
concern~\cite{nesperHandbuchDrahtlosenTelegraphie1921,flemingPrinciplesElectricWave1910}. Going back to the early days
|
||||
of wireless telegraphy after the turn of the twentieth century, coils with high inductance were needed for the
|
||||
construction of both transmitters and receivers, but the ferrites that would later permit their compact construction
|
||||
were still being developed. The ferromagnetic core material of choice back then was laminated iron, which was only
|
||||
useful at low frequencies due to eddy current losses. As a result, the inductors in radio circuits of the era were often
|
||||
constructed as air-core coils. While air-core inductors are immune to core saturation, the poor magnetic permeability of
|
||||
air necessitates a large number of wide turns of wire to reach useful inductance values, which for reasons of
|
||||
practicality or leakage inductance often could not be wound as a single layer cylindrical coil. This could be resolved
|
||||
by winding an inductor with many turns on multiple layers, which improves compactness and leakage inductance, but this
|
||||
in turn gives rise to increased distributed capacitance as now turns with a large voltage differential are layered right
|
||||
on top of each other.
|
||||
|
||||
Before the invention of ferrites, a number of ways were devised to decrease distributed capacitance in multilayer
|
||||
inductors. These methods can be divided into two general categories: Optimizing the connecting order of turns and
|
||||
optimizing the winding schema of turns. Both aim at increasing spacing between parts of the coil that have a large
|
||||
voltage differential.
|
||||
|
||||
The connecting order of turns was optimized at the assembly level by stacking coils in a particular
|
||||
way~\cite{flemingPrinciplesElectricWave1910} and at the component level by winding coils in a particular way to minimize
|
||||
the voltage differential between adjacent turns---a technique that is still used to this
|
||||
day~\cite{lopeFirstSelfresonantFrequency2021}. The main winding optimization in the first category concerns winding the
|
||||
turns of a cylindrical multilayer inductor not layer by layer, but instead layering them diagonally, effectively
|
||||
connecting adjacent turns in a diagonal zigzag pattern. Then as now, wound inductors applying this technique were not
|
||||
feasible to manufacture reliably by machine, but the technique can be closely replicated in PCB inductors as shown in
|
||||
\textcite{leePrintedSpiralWinding2011}. The main limiting factors in a PCB implementation are the requirement for a
|
||||
large number of vias inside the inductor's turns limiting the achievable turn count\footnote{In PCBs, as opposed to
|
||||
integrated circuits (ICs), vias limit the achievable turn count when they need to be placed in-line inside the turns as
|
||||
opposed to on the inside or outside because a PCB's minimum trace/space widths are usually much smaller than the
|
||||
smallest feasible via, consisting of a minimum-size drill surrounded by a minimum-size annular ring.} and increasing
|
||||
equivalent series resistance (ESR) through the thin trace sections that are necessary to accomodate the via structure,
|
||||
as well as the layer pairing limitations when blind vias are used in multilayer PCBs.
|
||||
|
||||
This lack of a way to wind high frequency inductors with a machine led to the creation of a number of related winding
|
||||
schemes that include honeycomb and basket woven coils
|
||||
\cite{eppenAnforderungenEinzelteileRundfunkempfanger1927,
|
||||
filbigLehrbuchHochfrequenztechnik1942,
|
||||
kleinSpulenUndSchwingungskreise1941,
|
||||
meinkeTaschenbuchHochfrequenztechnik1956,
|
||||
nottebrockSpulen1950,
|
||||
struttVerstarkerUndEmpfanger1951,
|
||||
wiggeRundfunktechnischesHandbuch1930,
|
||||
zicknerSpulen1927}. The simplest such winding technique is the universal winding as described in depth by
|
||||
\textcite{querfurthCoilWindingDescription1954}. In a simple, cylindrical wire-wound inductor, the windings are laid down
|
||||
one right next to the other, until the end of the winding area is met, where the winding direction is reversed. One
|
||||
layer of such windings forms a helix whose pitch is equal to the wire diameter. A universal winding uses the same
|
||||
helical scheme reversing at the coil ends, but uses a helical pitch larger than the wire diameter to form a structure
|
||||
similar to a spool of sewing thread.
|
||||
|
||||
Other winding techniques include honeycomb and basket woven coils, some historic examples of which are shown in Fig.\
|
||||
\ref{fig_illust_honeycomb_basket}. In a honeycomb coil, like in an universal winding, subsequent winding layers are
|
||||
wound at a criss-cross pattern. The characteristic feature of honeycomb coils is that the winding machine is adjusted to
|
||||
produce large air gaps between adjacent windings, resulting in a three-dimensional rhomboid pattern that is vaguely
|
||||
reminiscent of a honeycomb's structure.
|
||||
|
||||
In basket-woven coils, a mandrel consisting of an odd number of sticks pointing either radially or axially is used, and
|
||||
the wire is woven between adjacent sticks in an alternating direction. While visually similar to honeycomb coils, this
|
||||
winding technique is more suited to homebrew construction and less amenable to mass production by machine. In axially
|
||||
basket-woven coils, the mandrel can be pulled out after the coil is finished. Like honeycomb coils, the resulting
|
||||
structure can be made mechanically stable with some lacquer, with the turns carrying the layers where they cross.
|
||||
|
||||
Both construction techniques apply similar principles to those leading to the improved high-frequency behavior of
|
||||
twisted inductors that we describe in this paper.\footnote{Interestingly, the winding schemes of both honeycomb and
|
||||
basket-woven coils are also governed by the same coprimality condition between the number of turns and the number of
|
||||
inversions within each turn that we describe for our twisted inductors below, although we could not find an example in
|
||||
historic literature where this condition was explicitly stated~\cite{eppenAnforderungenEinzelteileRundfunkempfanger1927,
|
||||
kleinSpulenUndSchwingungskreise1941, wiggeRundfunktechnischesHandbuch1930, querfurthCoilWindingDescription1954}.}
|
||||
|
||||
\section{Twisted Inductor Design}
|
||||
|
||||
In this section, we present a detailed derivation of the layout of twisted inductors. We approach this layout by
|
||||
construction. Let us first consider a simple, planar, circular spiral coil with a fixed pitch. We will ignore trace
|
||||
width for now, and consider the trace a thin wire. We will assume the inductor's ports are both located on the positive
|
||||
$x$-Axis on top of one another on different layers, which also helps to minimize the loop area of the inductor's
|
||||
connections.
|
||||
|
||||
The trace trajectory of a standard planar spiral inductor can be parametrized in polar coordinates $r, \varphi$ based
|
||||
on an Archimedean spiral:
|
||||
|
||||
\begin{equation}
|
||||
r = a\cdot\varphi
|
||||
\label{eqn_arch_spi_basic}
|
||||
\end{equation}
|
||||
|
||||
An Archimedean spiral defined this way always starts at the origin, and it continues to infinity. Let us re-parametrize
|
||||
this spiral to a curve parameter $t$ with range $\left[0,1\right]$, such that $t=0$ corresponds to the start of the
|
||||
inductor and $t=1$ corresponds to its end. As is customary in PCB inductors, we place the inductor's start on its outer
|
||||
circumference.
|
||||
|
||||
To improve layer utilization, a common technique in PCB inductor design is to use both layers of the PCB for the
|
||||
inductor's spiral trace, instead of only using the bottom layer for a straight jumper trace. Using both layers this way
|
||||
allows for wider traces, which lowers resistive losses. We can accomodate this optimization in our definition by
|
||||
re-defining our normalized radius to allow both positive and negative values, defining negative values to designate
|
||||
traces on the PCB's bottom layer as follows. Fig.\ \ref{fig_nk_combined} shows both a simple and a two-layer
|
||||
spiral inductor in the first two columns.
|
||||
|
||||
Let $n$ be the turn count of our inductor. The resulting parametrization is:
|
||||
|
||||
\begin{align}
|
||||
\varphi &= 2\pi n t\\\nonumber
|
||||
r &= r_1 + \left|1 - 2 t\right| \left(r_2 - r_1\right)
|
||||
\label{eqn_twolayer_spiral}
|
||||
\end{align}
|
||||
|
||||
The resulting spiral trace starts at radius $r_2$ on the positive $x$ axis, and spirals inward until it meets $r_1$,
|
||||
where the sign indicates a layer change, and the trace reverses to continue back to $r_2$ on another layer. In its PCB
|
||||
realization, at $r_1$, a via would be placed to connect the end of the spiral trace to a jumper trace on the other layer
|
||||
of the PCB leading back to the start.
|
||||
|
||||
\subsection{From Spiral to Twisted Inductor}
|
||||
|
||||
Extending the above parametrization of a spiral inductor's layout, we propose planar \emph{twisted inductors} based on
|
||||
two core observations:
|
||||
|
||||
\begin{description}[\IEEEsetlabelwidth{foo}]
|
||||
\item[Observation 1.]\hfill\\When using an archimedean spiral, multiple such spirals using the same pitch can be
|
||||
interleaved by spreading out their start and end points at regular angular intervals.
|
||||
\item[Observation 2.]\hfill\\In a two-layer spiral inductor (Fig.\ \ref{fig_nk_combined}), we can adjust the turn
|
||||
count of the pair of traces to move the end point of the bottom layer trace anywhere on the inductor's outer
|
||||
radius.
|
||||
\end{description}
|
||||
|
||||
Setting the inversion count to $k=1$ in our proposed scheme yields the conventional two-layer counterwound
|
||||
scheme~\cite{lopeFirstSelfresonantFrequency2021,sproHighVoltageInsulationDesign2021,leePrintedSpiralWinding2011}.
|
||||
|
||||
Combining these two observations, we find that by choosing a number $k$ of inversions, i.e. layer jumps, that is coprime
|
||||
to the number of total turns of the inductor $n$, we achieve a layout where all $k$ pairs of top and bottom-layer traces
|
||||
naturally connect in series, with the resulting spirals on the top and bottom layers interleaving cleanly. Fig.\
|
||||
\ref{fig_nk_combined} shows a layout with $n=3$ turns with both a single inversion ($k=1$), which results in a
|
||||
conventional two-layer inductor, and with $k=2$ inversions, creating two interleaved spirals on both the top and the
|
||||
bottom layer of the PCB. Fig.\ \ref{fig_nk_complex_illust} in the Appendix of this paper shows
|
||||
additional layout examples for other values of $n$ and $k$. For $k=\frac{1}{2}$, we get a standard single-layer planar
|
||||
spiral inductor for any turn count $n$, and for $k=1$ we get a standard two-layer planar spiral inductor for any turn
|
||||
count $n$. In this paper, we will call all layouts with $k\ge 2$ \emph{Twisted Inductors}. The coordinate description of
|
||||
Equation\ \ref{eqn_twolayer_spiral} thus becomes:
|
||||
|
||||
\begin{align}
|
||||
\varphi &= 2\pi n t\\\nonumber
|
||||
r &= r_1 + \left|1 - \left( 2 k t \mod 2 \right) \right| \left(r_2 - r_1\right)
|
||||
\label{eqn_twisted_spiral}
|
||||
\end{align}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=\figurescale]{figures/nk_interleave_illust.pdf}
|
||||
% \end{center}
|
||||
% \caption{single-layer spiral inductor's layout (left), a conventional two-layer planar inductor's layout (middle),
|
||||
% and a twisted inductor with two inversions (right). All three inductors have $n=3$ turns. Traces on the PCB top
|
||||
% side are shown in red, traces on the bottom side in blue. In the twisted inductor, each layer contains two
|
||||
% archimedean spirals that interleave at a regular spacing. The four spirals of the inductor are connected in series
|
||||
% such that they form three total turns.}
|
||||
% \label{fig_nk_interleave_illust}
|
||||
%\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=\figurescale]{figures/nk_combined.pdf}
|
||||
\end{center}
|
||||
\caption{Inductor layouts for several sets of turn count $n$ and inversion count $k$. The top row shows the actual
|
||||
trace layout in cartesian coordinates, the bottom row visualizes the winding schema.
|
||||
}
|
||||
\label{fig_nk_combined}
|
||||
\end{figure}
|
||||
|
||||
Topologically, the shape of our inductors can be described as a $(k, n)$-torus knot. From knot theory, we know that such
|
||||
a torus knot exists if and only if both $n$ and $k$ are co-prime. Fig.\ \ref{fig_nk_combined} illustrates a derivation
|
||||
of the coprimality requirement. If we plot the spiral in polar coordinates on a cartesian plot we observe that for a
|
||||
$n$-turn coil with $k$ inversions, the trace crosses the $\varphi$ axis once for each inversion, wrapping around $r$.
|
||||
Likewise, it crosses the $r$ axis once for each turn of the inductor, wrapping around $\varphi$. Based on this, we can
|
||||
re-label the angular axis in steps from $0$ to $k$, and re-label the radial axis in steps from $0$ to $n$. Labelling the
|
||||
new angular axis $i$ and the new radial axis $j$, in the resulting integer lattice, the trace has slope $1$. We can
|
||||
state the trace's trajectory as a function of a curve parameter $t \in [0, nk]$ as $f(t) = (i, j) = (t \mod n, t \mod
|
||||
k)$. To produce a valid inductor, the trace must not intersect anywhere. Thus, the system of congruences
|
||||
|
||||
\begin{align}
|
||||
t &\equiv i \mod n\\
|
||||
t &\equiv j \mod k
|
||||
\end{align}
|
||||
|
||||
must have a unique solution $t \in [0, nk]$ for all $(i, j)$. This statement corresponds exactly to the Chinese
|
||||
Remainder Theorem, which states that this solution is unique if and only if $k$ and $n$ are coprime.
|
||||
|
||||
In the following paragraphs, we will derive analytical expressions for Ohmic resistance and inductance of inductors
|
||||
derived under this schema.
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=0.8\figurescale]{figures/nk_chinese_remainder_illust.pdf}
|
||||
% \end{center}
|
||||
% \caption{Illustration of the winding pattern of two twisted inductors. The upper plots show the inductor's actual
|
||||
% layout with the traces on each side of the substrate colored in red (top) and blue (bottom), respectively. The lower
|
||||
% plots show the same traces, but \emph{unwrap} the annulus by plotting the traces' polar coordinates on cartesian
|
||||
% axes. The left axis labels show the normalized radius, with $0$ being at the inductor's inner diameter, $1$ being at
|
||||
% its outer diameter on the top layer, and $-1$ being at its outer diameter on the bottom layer. The top and right
|
||||
% axes labels show the axis scaled to match indices $i\in\left[0, n\right]$ and $j\in\left[0, k\right]$,
|
||||
% respectively.}
|
||||
% \label{fig_nk_chinese_remainder_illust}
|
||||
%\end{figure}
|
||||
|
||||
\subsubsection{Ohmic Resistance}
|
||||
|
||||
The arc length $l$ of a spiral can be calculated from its turn count $n$ and the average of its inner and outer diameter
|
||||
$\frac{2 r_1 + 2 r_2}{2}=r_1+r_2$ as $l = n\pi\left(r_1 + r_2\right)$. Since going from a standard inductor to a twisted
|
||||
inductor does not change its turn count nor its dimensions, the combined arc length of all traces of the twisted
|
||||
inductor does not change. Twisted inductors require two additional vias per inversion, which will increase DC resistance
|
||||
slightly, but the contribution of these vias will remain small in practical applications since the overall number of
|
||||
vias is still no more than a couple per turn, and since each via only bridges the short distance between the inductor's
|
||||
layers.
|
||||
|
||||
As a general expression, for a standard or twisted inductor with turn count $n$ and twist count~$k$, given via
|
||||
resistance $R_\text{via}$ and trace cross-sectional area $A_\text{tr}$, we derive a first order approximation of the
|
||||
inductor's DC resistance as follows.
|
||||
|
||||
\begin{equation}
|
||||
R_L = n\pi\left(r_1 + r_2\right)\frac{\rho_\text{Cu}}{A_\text{tr}} + \left(2k-1\right)R_\text{via}
|
||||
\end{equation}
|
||||
|
||||
\subsubsection{Inductance}
|
||||
|
||||
Even for geometrically simple inductors, analytically calculating their inductance is a surprisingly hard problem whose
|
||||
complexity quickly escalates when geometrically complex inductors are analyzed, when realistic wire shapes as opposed to
|
||||
thin wire or current sheet approximations are used, and when taking into account differing magnetic permeabilities of
|
||||
air or dielectrics and core materials. Instead of precise analytical models, a number of approximations are commonly
|
||||
used. A commonly referenced approximation for the inductance of planar spiral inductors is given by
|
||||
\textcite{mohanSimpleAccurateExpressions1999}, whose current-sheet approximation for circular planar spiral inductors we
|
||||
will use here to estimate our inductor's inductance. The current-sheet approximation from
|
||||
\textcite{mohanSimpleAccurateExpressions1999} reads:
|
||||
|
||||
\begin{equation}
|
||||
\label{eqn_mohan_approx}
|
||||
L = \frac{\mu n^2 d_\text{avg} c_1}{2}\left(\ln\left(c_2/\rho\right)+c_3\rho+c_4\rho^2\right)
|
||||
\end{equation}
|
||||
|
||||
In this equation, $c_{1-4}$ denote four empirically determined coeficcients that are specific to the coil's shape. The
|
||||
values for circular coils are $c_{1-4}=(1.00, 2.46, 0.00, 0.20)$. $\mu$ is the magnetic permeability of air (for an
|
||||
air-core inductor), $n$ is the number of turns, $d_\text{avg}$ is the \emph{average} turn radius, i.e. $d_\text{avg} =
|
||||
2\frac{r_1 + r_2}{2} = r_1 + r_2$. $\rho = \frac{r_2-r_1}{r_2+r_1}$ is the planar spiral inductor's \emph{fill ratio}.
|
||||
The fill ratio encodes the fact that the inductor's turns have less flux linkage the closer to the inductor's center we
|
||||
get. While turns close to the outside have good flux linkage due to their inner area overlapping well with that of other
|
||||
turns, turns close to the center not only have a loop area that is only a fraction of that of turns further outwards,
|
||||
the closer we get to the center, the larger is also the fraction of the field lines returning as leakage flux on the
|
||||
outside of the inner turn that pass through the inner part of turns further outwards, flipping the sign and contributing
|
||||
\emph{negative} mutual inductance.
|
||||
|
||||
As Equation\ \ref{eqn_mohan_approx} approximates the inductor's whole set of windings as a single, uniform current
|
||||
sheet, the turn count only appears as a single factor of $n^2$ in the equation, with $\rho$ and $c_{1-4}$ correcting for
|
||||
the inductor's geometry. To account for twisted inductors, we can separate the inductor into a set of $2k$ simple planar
|
||||
spiral inductor \emph{branches} that are connected in series by the twisted inductor's vias. Compared to a simple spiral
|
||||
inductor, for each branch, the inductance according to Equation\ \ref{eqn_mohan_approx} stays the same except that the
|
||||
factor $n^2$ drops to $\left(\frac{n}{2k}\right)^2$ because the $n$ windings are evenly distributed across the $2k$
|
||||
branches. Let us now make two assumptions. First, we will assume that the flux linkage between both sides of the
|
||||
inductor is approximately one. This assumption is grounded in the fact that for practical designs, the substrate
|
||||
thickness will be small compared to the inductor's diameter. Second, we will for now ignore the spiral inductor's field
|
||||
asymmetry and assume that the flux linkage between two intertwined branches on the same side of the substrate is
|
||||
approximately one. In our measurements below we show that for simple spiral inductors this asymmetry, while problematic
|
||||
in our application, is small in absolute terms, and grows smaller with increasing turn count.
|
||||
|
||||
Based on these two assumptions, we can model the twisted inductor as a set of $2k$ series-connected spiral inductors
|
||||
that are perfectly coupled, with full flux linkage. This results in the total series inductance gaining back the factor
|
||||
$\frac{1}{2k^2}$ that each branch lost, resulting in identical inductances for a simple planar spiral inductor and a
|
||||
twisted inductor with the same size and turn count according to Equation\ \ref{eqn_mohan_approx}. This approximation
|
||||
introduces an error due to the imperfect flux linkage between the two sides of the substrate, and between two spiral
|
||||
branches located at an angular offset from each other. In our experiments, we found that for our test inductors,
|
||||
compared to inductances measured with an LCR meter, this error is below \qty{10}{\percent} for $n=5$ turns or more, and
|
||||
for our test samples matches the performance of Equation\ \ref{eqn_mohan_approx} for the simple planar spiral inductor
|
||||
case.
|
||||
|
||||
\subsection{CAD Integration}
|
||||
|
||||
To allow for easy design with twisted inductors and to speed up the laboratory prototyping we performed for this paper,
|
||||
we created a tool that generates arbitrary twisted inductor layouts, and that is able to output these layouts as PCB
|
||||
footprint files for the open source KiCad EDA CAD tool~\cite{KiCadEDA}. We integrated the ESR and inductance
|
||||
approximations as derived above with our tool, so that it provides immediate design feedback when generating inductors.
|
||||
In order to minimize ESR and maximize PCB area utilization, we made the tool automatically calculate the largest
|
||||
possible trace width when given a minimum clearance specification.
|
||||
|
||||
To handle outputting PCB geometry in a format that can be read from KiCad, we utilized the open source EDA file format
|
||||
library \emph{gerbonara}. To support the FEM simulations that are described in the next section below, our tool contains
|
||||
functionality to map gerbonara's geometry representation into that of gmsh~\cite{geuzaineGmsh3DFinite2009}, the FEM
|
||||
mesher that we chose to interface with Elmer FEM~\cite{ruokolainenElmerCSCElmerfemElmer2023}.
|
||||
|
||||
Our inductor design tool is available in this paper's supplementary material as well as at the git repository linked at
|
||||
the end of this paper.
|
||||
|
||||
\section{FEM Simulation}
|
||||
|
||||
To validate our analytical approximations, we performed a series of FEM simulations in Elmer FEM. For a number of
|
||||
inductor layouts, we performed simulations to determine ohmic resistance and inductance. Due to limitations in our
|
||||
gmsh/Elmer toolchain, we were unable to run simulations for parasitic capacitance and self-resonance, or for coupling
|
||||
behavior of coil pairs. We found that for these cases which require larger, more complex meshes, gmsh would frequently
|
||||
crash during meshing, and where we were able to produce meshes, Elmer would only converge for some of them. While these
|
||||
are problems that can be solved through either a more skillful description of the problem in gmsh and Elmer, or by using
|
||||
more robust software such as Simulia CST, we decided to instead experimentally measure these quantities instead (cf.\
|
||||
Section\ \ref{sec_experiments}). While our measurements only cover a small number of inductor samples, their results are
|
||||
more reliable than results from FEM and can serve as a baseline for future work on such simulations.
|
||||
|
||||
We conducted our FEM simulations as follows:
|
||||
|
||||
\paragraph{Ohmic Resistance}
|
||||
In Elmer FEM, we can use the built-in joint static current and joule heating solver to determine the ohmic resistance at
|
||||
a given current.
|
||||
|
||||
\paragraph{Inductance}
|
||||
We let Elmer determine inductance by first using its coil solver to determine the volumetric current density in our mesh
|
||||
given a test current, then applying its magnetodynamics solver to solve the electromagnetic field. Elmer provides
|
||||
routines to derive the total magnetic field energy $U_\text{mag}$ from an EM field solution. Since we have only our
|
||||
inductor under test inside the simulation volume, with test current $I_\text{test}$, we can then derive the inductor's
|
||||
inductance according to the well-known relation~\cite{meeekerFiniteElementMethod2015}:
|
||||
|
||||
\begin{equation}
|
||||
L = \frac{2\cdot U_\text{mag}}{I_\text{test}^2}
|
||||
\end{equation}
|
||||
|
||||
\section{Experimental Validation}
|
||||
\label{sec_experiments}
|
||||
|
||||
To experimentally validate our design with real-world inductors, we produced 24 test coupons with a number of variations
|
||||
of twisted inductors with winding count $n$ between $1$ and $25$, and twist count ranging from $k=\frac{1}{2}$ (simple
|
||||
single-sided spiral inductor) to $k=37$. All test inductors had an inner diameter of \qty{15}{\milli\meter} and an outer
|
||||
diameter of \qty{35}{\milli\meter} corresponding to the space available in our IHSM implementation.
|
||||
|
||||
\subsection{Inductance and DC resistance}
|
||||
|
||||
We measured the inductance and DC resistance of each test coupon using a Keysight U1733C LCR meter at
|
||||
\qty{100}{\kilo\hertz} for inductance and a Keysight 34465A multimeter in four-wire configuration for DC resistance. We
|
||||
further determined the self-resonant frequency of each inductor using a LiteVNA64 handheld vector network analyzer. The
|
||||
results of our measurements are shown in Table\ \ref{tab_coupons}.
|
||||
|
||||
We found our inductance approximation to be accurate within \qty{10}{\percent} and our ESR approximation to be accurate
|
||||
within \qty{20}{\percent} for inductors with three turns or more. For lower turn-count inductors, inductance
|
||||
measurements are difficult because the small absolute inductances involved are easily disturbed by stray inductances,
|
||||
and ESR measurements are affected by contact and trace resistance even when measurements are taken in four-wire mode.
|
||||
|
||||
In accordance with our design intuition, we found that for high turn count inductors, the doubled trace width that is
|
||||
afforded by splitting a simple spiral inductor across two PCB layers in any two-layer configuration improves ESR by
|
||||
approximately a factor of two. Going from a simple single-layer spiral inductor to a simple two-layer spiral inductor
|
||||
($k=1$), we observe that the resulting inductance decreases by up to \qty{15}{\percent}. We suspect that the main factor
|
||||
leading to this decrease is radial magnetic flux leakage through the PCB material between the inductor's layers.
|
||||
Comparing simple two-layer inductors with $k=1$ to the twisted inductors with larger $k$ values that we propose in this
|
||||
paper, we observe almost identical performance for $k>1$ with decreases of less than \qty{0.5}{\percent} going from
|
||||
$k=1$ to $k=3$ irrespective of turn count. From these measurements we can conclude that the flux linkage of twisted
|
||||
inductors almost perfectly matches that of simple two-layer inductors.
|
||||
|
||||
Finally, we decided to evaluate the high-frequency performance of twisted inductors. It is well-known that self-resonant
|
||||
frequency decreases when going from a single-layer spiral inductor to a two-layer spiral inductor while keeping
|
||||
inductance and dimensions constant~\cite{zhangImprovedCompensationMethod2025}. Our measurements show this effect, with
|
||||
it being more pronounced with higher turn count. Intuitively, this makes sense if we consider the mechanism of inductor
|
||||
self-resonance. The primary contributor to self resonance, particularly in higher turn count inductors, is capacitive
|
||||
coupling between the inductor's windings. In a single-layer spiral inductor, this effect gets partially mitigated since
|
||||
the strongest coupling exists between adjacent windings, which here have only a small voltage differential as only a
|
||||
fraction of the inductor's total voltage appears across each winding. Compared to this, when the inductor is constructed
|
||||
as a simple two-layer inductor with $k=1$, now the start and end windings of the inductor, which have the highest
|
||||
voltage differential, are located right on top of each other with the substrate in between. Making things worse, common
|
||||
PCB substrates have a relative permittivity much larger than air (usually around $4$).
|
||||
|
||||
We observe that this decrease in high-frequency performance is eventually counteracted by increasing inversion count
|
||||
$k$. While our test samples focused on smaller turn counts, we observe a notable increase from a self-resonant frequency
|
||||
of \qty{8.9}{\mega\hertz} for a standard $n=25,k=1$ inductor to \qty{10.6}{\mega\hertz} for $n=25,k=13$. Prompted by
|
||||
this observation, we produced another set of 15 samples focusing on this aspect. We report our results of this
|
||||
investigation in the following section.
|
||||
|
||||
In conclusion to the above measurement results, we observe that twisted inductors \emph{improve} high-frequency
|
||||
performance compared to simple two-layer inductors while closely matching them in ESR and inductance. While they peform
|
||||
worse than simple single-layer inductors in high-frequency performance, the increased trace width that two-layer
|
||||
inductors allow for lowers resistive losses by approximately a factor of four. In applications where resistive losses
|
||||
lead to the choice of a two-layer inductor, twisted inductors provide improved high-frequency performance at no
|
||||
additional cost and without compromising other performance parameters.
|
||||
|
||||
\setlength{\tabcolsep}{4pt}
|
||||
\begin{table}
|
||||
\caption{Inductor sample design parameters and measured characteristics. All inductors have outer diameter
|
||||
\qty{35}{\milli\meter} and inner diameter \qty{15}{\milli\meter}. The missing values in the simulation results
|
||||
columns result from the solver failing to converge.}
|
||||
\begin{tabular}{cc|cc|cc|ccc}
|
||||
\multicolumn{2}{c|}{}&
|
||||
\multicolumn{2}{c|}{\textbf{Design}}&
|
||||
\multicolumn{2}{c|}{\textbf{Simulation}}&
|
||||
\multicolumn{3}{c}{\textbf{Measured}}\\
|
||||
|
||||
$n$&
|
||||
$k$&
|
||||
$L$&
|
||||
$R$&
|
||||
$L$&
|
||||
$R$&
|
||||
$L$&
|
||||
$f_\text{res}$&
|
||||
$R$\\
|
||||
|
||||
&
|
||||
&
|
||||
$\left[\unit{\micro\henry}\right]$&
|
||||
$\left[\unit{\ohm}\right]$&
|
||||
$\left[\unit{\micro\henry}\right]$&
|
||||
$\left[\unit{\ohm}\right]$&
|
||||
$\left[\unit{\micro\henry}\right]$&
|
||||
$\left[\unit{\mega\hertz}\right]$&
|
||||
$\left[\unit{\ohm}\right]$\\\hline
|
||||
|
||||
\rowcolor[gray]{0.9}
|
||||
$1$& $3$& $0.03$& $0.0095$& $0.039$& $0.008$& $0.056$& ${465}$& ${0.0143}$\\
|
||||
$1$& $4$& $0.03$& $0.0108$& $0.040$& $0.008$& ${0.059}$& $460$& $0.0150$\\
|
||||
$1$& $5$& $0.03$& $0.0123$& $0.041$& $0.009$& $0.055$& $460$& $0.0166$\\
|
||||
\hline\rowcolor[gray]{0.9}
|
||||
$2$& $1$& $0.12$& $0.0253$& $0.127$& $0.024$& $0.149$& ${246}$& ${0.0284}$\\
|
||||
$2$& $3$& $0.12$& $0.0270$& $0.128$& $0.025$& ${0.152}$& $241$& $0.0291$\\
|
||||
$2$& $5$& $0.12$& $0.0299$& $0.130$& $0.027$& $0.147$& $226$& $0.0300$\\
|
||||
\hline\rowcolor[gray]{0.9}
|
||||
$3$& $1$& $0.26$& $0.0454$& $0.262$& $0.044$& ${0.287}$& ${146}$& $0.0461$\\
|
||||
$3$& $4$& $0.26$& $0.0479$& $0.265$& $0.046$& ${0.286}$& ${146}$& ${0.0455}$\\
|
||||
\hline\rowcolor[gray]{0.9}
|
||||
$5$& $1$& $0.73$& $0.0755$& $0.670$& $0.074$& ${0.693}$& $61.3$& $0.0778$\\
|
||||
$5$& $3$& $0.73$& $0.0763$& $0.671$& $0.074$& ${0.694}$& ${70.3}$& $0.0727$\\
|
||||
$5$& $7$& $0.73$& $0.0802$& $0.675$& $0.077$& ${0.694}$& $68.0$& ${0.0672}$\\
|
||||
\hline\rowcolor[gray]{0.9}
|
||||
$10$& $1$& $2.90$& $0.2513$& $2.700$& $0.250$& ${2.718}$& $24.1$& $0.2322$\\
|
||||
$10$& $3$& $2.90$& $0.2520$& $2.700$& $0.250$& $2.714$& ${28.6}$& $0.2255$\\
|
||||
$10$& $7$& $2.90$& $0.2554$& $2.700$& $0.252$& $2.713$& $28.1$& ${0.2122}$\\
|
||||
\hline\rowcolor[gray]{0.9}
|
||||
$25$& $1$& $18.15$& $1.8843$& $16.900$& $1.900$& $16.938$& $8.84$& $1.7024$\\
|
||||
$25$& $3$& $18.15$& $1.8851$& N/A& N/A& $16.919$& $8.60$& $1.6360$\\
|
||||
$25$& $13$& $18.15$& $1.9016$& $16.900$& $1.900$& $16.931$& ${10.56}$& ${1.5429}$\\
|
||||
$25$& $37$& $18.15$& $2.0197$& $17.100$& $2.000$& ${17.066}$& $10.31$& $1.6980$\\
|
||||
|
||||
\end{tabular}
|
||||
\label{tab_coupons}
|
||||
\end{table}
|
||||
|
||||
\subsection{Inductance and Frequency Behavior of Larger Coils}
|
||||
|
||||
To investigate the high-frequency behavior of twisted inductors further, we produced and measured 15 additional sample
|
||||
inductors that were larger (up to \qty{90}{\milli\meter} outer diameter) and that had a higher turn count (up to 53)
|
||||
compared to our initial set of samples. The parameters of these new samples and our measurement results are shown in
|
||||
Table\ \ref{tab_wide_coils}. In these results, we can identify three clear trends. First, the ESR of twisted inductors
|
||||
is generally poorer when compared to two-layer spiral inductors. This increase in ESR is due to the large number of vias
|
||||
used in these sample inductors. It should be noted that while twisted inductors have worse ESR compared to conventional
|
||||
two-layer inductors, in our first set of test coupons we saw that their ESR is still better than that of a single-layer
|
||||
inductor because the traces can be made wider. Our second observation is that in every set of samples from this second
|
||||
run of physically larger inductors, twisted inductors outperform conventional planar inductors in self-resonant
|
||||
frequency by a considerable margin with an increase in SRF of up to \qty{58}{\percent} from our
|
||||
$d_2=\qty{65}{\milli\meter}$ sample going from $k=1$ to $k=100$.
|
||||
|
||||
Our third observation is that unlike in the smaller inductors from Table\ \ref{tab_coupons}, in these larger instances,
|
||||
twisted inductors show increased inductance by approximately \qty{3.7}{\percent} for our smallest samples, and
|
||||
\qty{6.5}{\percent} for our largest samples. This behavior indicates that large twisted inductors indeed behave like a
|
||||
combination between a conventional planar spiral inductor and a conventional planar toroidal inductor. Comparing the
|
||||
magnitude of this increase with the measurements listed in Table\ \ref{tab_wide_coils} for planar toroidal inductors, we
|
||||
see that this effect exceeds what one would reach by a simple series configuration of both styles of inductor,
|
||||
indicating a contribution from flux linkage.
|
||||
|
||||
\begin{table}
|
||||
\caption{Parameters and measurement results of a set of larger sample inductors. Bold values indicate best
|
||||
performance at a given size. Shaded rows indicate conventional planar toroidal ($n=1$) or two-layer planar
|
||||
spiral inductors ($k=1$).}
|
||||
\begin{tabular}{cc|cc|ccc|c}
|
||||
$d_1$&
|
||||
$d_2$&
|
||||
$n$&
|
||||
$k$&
|
||||
$L$&
|
||||
$R_\text{ESR}$&
|
||||
$f_\text{Res}$&
|
||||
$C_\text{p}$\\
|
||||
$\left[\unit{\milli\meter}\right]$&
|
||||
$\left[\unit{\milli\meter}\right]$&
|
||||
&
|
||||
&
|
||||
$\left[\unit{\micro\henry}\right]$&
|
||||
$\left[\unit{\ohm}\right]$&
|
||||
$\left[\unit{\mega\hertz}\right]$&
|
||||
$\left[\unit{\pico\farad}\right]$\\\hline
|
||||
\rowcolor[gray]{0.9}
|
||||
$25$&$40$&$1$ &$150$& $5.00$& $11.0$& N/A& N/A\\
|
||||
\rowcolor[gray]{0.9}
|
||||
$25$&$40$&$53$ &$1$& $120$& $\mathbf{19.6}$& $18.0$& $0.65$\\
|
||||
$25$&$40$&$53$ &$50$& $121$& $22.6$& $\mathbf{27.5}$& $\mathbf{0.28}$\\
|
||||
$25$&$40$&$53$ &$100$& $123$& $26.9$& $26.5$& $0.29$\\
|
||||
$25$&$40$&$53$ &$150$& $\mathbf{125}$& $33.2$& $24.0$& $0.35$\\\hline
|
||||
\rowcolor[gray]{0.9}
|
||||
$50$&$65$&$1$ &$300$& $10.2$& $21.9$& N/A& N/A\\
|
||||
\rowcolor[gray]{0.9}
|
||||
$50$&$65$&$53$ &$1$& $270$& $\mathbf{35.7}$& $10.0$& $0.94$\\
|
||||
$50$&$65$&$53$ &$100$& $272$& $41.9$& $\mathbf{15.8}$& $\mathbf{0.37}$\\
|
||||
$50$&$65$&$53$ &$200$& $277$& $50.1$& $13.3$& $0.52$\\
|
||||
$50$&$65$&$53$ &$300$& $\mathbf{280}$& $65.0$& $13.8$& $0.48$\\\hline
|
||||
\rowcolor[gray]{0.9}
|
||||
$75$&$90$&$1$ &$480$& $17.3$& $35.5$& N/A& N/A\\
|
||||
\rowcolor[gray]{0.9}
|
||||
$75$&$90$&$53$ &$1$& $441$& $\mathbf{50.7}$& $7.00$& $1.17$\\
|
||||
$75$&$90$&$53$ &$160$& $444$& $60.8$& $\mathbf{10.0}$& $\mathbf{0.57}$\\
|
||||
$75$&$90$&$53$ &$320$& $461$& $76.2$& $8.75$& $0.72$\\
|
||||
$75$&$90$&$53$ &$480$& $\mathbf{470}$& $92.9$& $8.00$& $0.84$\\
|
||||
\end{tabular}
|
||||
\label{tab_wide_coils}
|
||||
\end{table}
|
||||
|
||||
|
||||
\subsection{Coupling and its Sensitivity to Radial Offset}
|
||||
|
||||
To evaluate twisted inductors in our WPT application, we measured the variation of the coupling between a pair of
|
||||
inductors using an automated measurement setup consisting of a 3D gantry built from an old 3D printer, with a fourth
|
||||
rotation axis provided by a small servo that allows us to position two inductor test coupons at arbitrary offsets and
|
||||
angles to one another (cf.\ Fig.\ \ref{fig_setup_probe}).
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=.85\figurescale]{figures/test_schematic.pdf}
|
||||
\end{center}
|
||||
\caption{The test schematic used in all measurements. For direct coupling factor measurements, the load resistor was
|
||||
disconnected. We measure voltage at the output of the function generator to account for drop in its internal output
|
||||
resistance.}
|
||||
\label{fig_test_schematic}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=.5\figurescale]{figures/setup_probe_small.jpg}
|
||||
\end{center}
|
||||
\caption{The automated measurement setup we used to measure coupling while sweeping through linear and angular
|
||||
displacements.}
|
||||
\label{fig_setup_probe}
|
||||
\end{figure}
|
||||
|
||||
To approximate our application, we loaded the secondary inductor with a \qty{10}{\ohm} resistor while providing a signal
|
||||
at a \qty{300}{\kilo\hertz} carrier frequency to the primary inductor from a Siglent SDG6022X function generator as
|
||||
shown in Fig.\ \ref{fig_test_schematic}. We measured both the input and output voltages of the coupled inductor pair
|
||||
using Keysight 34465A multimeters in AC Root Mean Square (RMS) mode.
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=\figurescale]{figures/symmetry_3turn_n_twist.pdf}
|
||||
\end{center}
|
||||
\caption{RMS output voltage of the test circuit from Fig.\ \ref{fig_test_schematic} for three pairs of matching
|
||||
inductors with one inductor rotating w.r.t.\ the other. The inductors have $n=3$ turns each and $k=\frac{1}{2}$,
|
||||
$k=1$, and $k=3$, respectively. For each $k$, voltage curves are plotted for a number of different radial offsets
|
||||
between the two inductor's centers.}
|
||||
\label{fig_symmetry_3turn_n_twist}
|
||||
\end{figure}
|
||||
|
||||
Fig.\ \ref{fig_symmetry_3turn_n_twist} shows the ratio between input and output voltage of our test link for a set of
|
||||
three-turn inductors with multiple inversion numbers $k$ when one inductor is rotated. In practical WPT setups, the
|
||||
transmitter and receiver coils are rarely aligned perfectly, so we show measurements across a range of radial offsets.
|
||||
In line with our inductance measurements, coupling is lower at $k>0$ compared to a single-layer spiral inductor. Across
|
||||
one revolution, we find that the single-layer spiral inductor exhibits the most voltage ripple, with simple two-layer
|
||||
inductors with $k=1$ already improving ripple. For $k$ above $1$, ripple amplitude stay sconstant, but energy is shifted
|
||||
into higher frequencies that are easier to passively filter on the WPT link's secondary side in our application.
|
||||
|
||||
Expanding our measurements in the previous section, we performed a series of measurements rotating both inductors. In
|
||||
these measurements, the coils' distance is fixed \qty{1}{\milli\meter} and the radial offset is set to a worst-case
|
||||
value of \qty{4}{\milli\meter}. Fig.\ \ref{fig_rms_ripple_n3} shows the normalized output voltage of a WPT link made
|
||||
from three-turn inductors with rotation of one inductor shown on the horizontal axis, and the rotation of the other
|
||||
shown on the vertical axis.
|
||||
|
||||
We performed similar measurements on 24 of our test coupons at \qty{1}{\milli\meter} and \qty{4}{\milli\meter} radial
|
||||
offsets. Fig.\ \ref{fig_k_ripple_plot} shows the combined results of these measurements, with worst-case voltage
|
||||
variation plotted across inversion count $k$ for multiple turn counts $n$ and radial offsets $r$. In this graph, we see
|
||||
that twisted inductors improve ripple compared to conventional designs, even at a low inversion count such as $k=3$.
|
||||
|
||||
Concluding our measurements, we achieved our primary objective of reducing coupling variation under rotation, with
|
||||
twisted inductors ($k>1$) improving over conventional two-layer spiral inductors, which perform better than simple
|
||||
single-layer spiral inductors. This improvement is greatest for inductors with low turn count and consequentially coarse
|
||||
pitch, as their turns deviate the furthest from a set of ideal, concentric circles.
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=.85\figurescale]{figures/k_ripple_plot.pdf}
|
||||
\end{center}
|
||||
\caption{RMS Voltage ripple as a percentage of total RMS
|
||||
output voltage in a rotating WPT setup with $R_L=\qty{10}{\ohm}$, coil distance $d=\qty{1}{\milli\meter}$ plotted
|
||||
w.r.t. inductor inversion count $k$. Measurements were taken at two radial offsets of $r=\qty{1}{\milli\meter}$ and
|
||||
$\qty{4}{\milli\meter}$. The shaded area indicates conventional coil layouts, with the remainder of the plot showing
|
||||
twisted inductors.}
|
||||
\label{fig_k_ripple_plot}
|
||||
\end{figure}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=.6\figurescale]{figures/field_plot_3d_n5_k0.pdf}
|
||||
% \end{center}
|
||||
% \caption{The coupling between a pair of identical coils (here two simple spiral inductors with $n=5$ and
|
||||
% $k=\frac{1}{2}$)
|
||||
% visualized in three dimensions. The $x$ and $y$ axis show in-plane displacement, and the $z$ axis shows output
|
||||
% amplitude in arbitrary units. Height and rotation are fixed to \qty{1}{\milli\meter} and \qty{0}{\degree},
|
||||
% respectively. The most prominent aspects of this plot are that coupling falls off steeply with distance, and that
|
||||
% the rotation-dependent variation is small in comparison. The circular valley around the central peak is the region
|
||||
% where one inductor is mostly outside the other inductors, and intersects the field lines returning from the other
|
||||
% inductor's back, leading to a negative coupling coefficient.}
|
||||
% \label{fig_field_plot_3d}
|
||||
%\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\begin{center}
|
||||
\includegraphics[width=.75\figurescale]{figures/rms_ripple_double_rotation_n3_r4.pdf}
|
||||
\end{center}
|
||||
\caption{RMS ripple magnitude as a percentage of mean RMS output voltage, plotted against the rotation of each of
|
||||
the two inductors for three variants of three-turn coils. The two coils were kept at a constant
|
||||
\qty{4}{\milli\meter} radial offset, and the output coil was loaded with a \qty{10}{\ohm} load. The plots share the
|
||||
same color scale to allow for visual comparison.
|
||||
% , plots for $n=5$ can be found in Figure\ \ref{fig_rms_ripple_n5} and plots for $n=\{10,25\}$ in Figures
|
||||
% \ref{fig_rms_ripple_n10} and \ref{fig_rms_ripple_n25} in the Appendix.
|
||||
}
|
||||
\label{fig_rms_ripple_n3}
|
||||
\end{figure}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=.75\figurescale]{figures/rms_ripple_double_rotation_n5_r4.pdf}
|
||||
% \end{center}
|
||||
% \caption{RMS ripple magnitude as shown in Figure\ \ref{fig_rms_ripple_n3} for four different 5-turn coils.}
|
||||
% \label{fig_rms_ripple_n5}
|
||||
%\end{figure}
|
||||
|
||||
\section{Future Work}
|
||||
|
||||
Our derivation of twisted inductors opens up a space for future research. On the practical side, as part of our inductor
|
||||
design tool, we extended the EDA file format library gerbonara with code to automatically map gerbonara's geometry
|
||||
description to the gmsh FEM mesher. This code may be of independent interest since it allows for the extraction of FEM
|
||||
meshes from not just individual planar components, but PCBs in any file format supported by gerbonara such as KiCad's
|
||||
native file format, as well as the Gerber file format supported by the majority of EDA tools.
|
||||
|
||||
On the theoretical side, the fact that our twisted inductor model generalizes both one- or two-layer planar spiral
|
||||
inductors as well as planar toroidal inductors would make the deduction of key parameters such as inductance and
|
||||
distributed capacitance by mathematical analysis or by finite element methods interesting. Furthermore, the precise
|
||||
contribution of vias to the twisted inductor's parasitics is interesting, especially for layouts with large values of
|
||||
inversion count $k$. We suspect that via influence will be frequency dependant as vias and traces have distinct DC
|
||||
resistances, and skin effect will affect both to a differring extent.
|
||||
|
||||
\section{Conclusion}
|
||||
|
||||
\section*{Availability}
|
||||
This is version \texttt{\input{version.tex}\unskip} of this paper, generated on \today.
|
||||
In this paper, we introduced a novel layout approach for planar, multi-layer inductors. Our \emph{twisted} inductors
|
||||
generalize several types of conventional planar inductors including conventional single- or two-layer planar spiral
|
||||
inductors as well as planar toroidal inductors. For inversion count parameter $k\ge 2$, twisted inductors produce
|
||||
magnetic field distributions that have better rotational symmetry along the inductor's main axis compared to either
|
||||
conventional single- or two-layer planar spiral inductors, which yields lower output ripple in WPT through rotating
|
||||
joints and enables the use of smaller and lighter secondary-side circuitry, improving efficiency.
|
||||
|
||||
% The git repository with the
|
||||
% LaTeX source for this paper as well as our data analysis and demo code can be found at:
|
||||
Furthermore, besides the advantages twisted inductors show in our particular application, we found that our sample
|
||||
twisted inductors have up to \qty{50}{\percent} improved self-resonant frequency as well as up to \qty{6.5}{\percent}
|
||||
increased inductance compared to conventional two-layer planar spiral inductors.
|
||||
|
||||
% \center{\url{https://git.jaseg.de/nice-coils.git}}
|
||||
We base our evaluation on laboratory measurements on a set of 39 sample inductors in total, including an automated,
|
||||
four-dimensional mapping of the coupling between a pair of identical inductors. We provide both an analytical
|
||||
description of twisted inductor construction as well as a set of Open-Source tools for their design, available at the
|
||||
link at the end of this paper.
|
||||
|
||||
\printbibliography[heading=bibintoc]
|
||||
|
||||
%\section{Supplemental plots}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=\figurescale]{figures/symmetry_10turn_n_twist.pdf}
|
||||
% \end{center}
|
||||
% \caption{Coupled RMS output voltage of three pairs of matching inductors with $n=10$ turns each and
|
||||
% $k=\frac{1}{2}$, $k=1$, and $k=3$, respectively, shown as in Figure\ \ref{fig_symmetry_3turn_n_twist}}
|
||||
% \label{fig_symmetry_10turn_n_twist}
|
||||
%\end{figure}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=.75\figurescale]{figures/rms_ripple_double_rotation_n10_r4.pdf}
|
||||
% \end{center}
|
||||
% \caption{RMS ripple magnitude as shown in Figure\ \ref{fig_rms_ripple_n3} for four different 10-turn coils.}
|
||||
% \label{fig_rms_ripple_n10}
|
||||
%\end{figure}
|
||||
|
||||
%\begin{figure}
|
||||
% \begin{center}
|
||||
% \includegraphics[width=.75\figurescale]{figures/rms_ripple_double_rotation_n25_r4.pdf}
|
||||
% \end{center}
|
||||
% \caption{RMS ripple magnitude as shown in Figure\ \ref{fig_rms_ripple_n3} for four different 25-turn coils.}
|
||||
% \label{fig_rms_ripple_n25}
|
||||
%\end{figure}
|
||||
|
||||
\FloatBarrier
|
||||
%\section{Layout examples}
|
||||
%\label{sec_appendix_layout_examples}
|
||||
|
||||
\begin{figure*}
|
||||
\appendix
|
||||
\begin{center}
|
||||
\includegraphics[width=.75\textwidth]{figures/nk_complex_illust.pdf}
|
||||
\end{center}
|
||||
\caption{Layout examples for a number of combinations of turn count $n$ and inversion count $k$. Note that in this
|
||||
illustration we chose values for $n$ and $k$ such that all pairs are coprime.}
|
||||
\label{fig_nk_complex_illust}
|
||||
\end{figure*}
|
||||
\end{document}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
|
||||
final-tpel-submission-2025-01-27-0-g99d4905
|
||||
BIN
pretty_plots.pdf
Normal file
15331
pretty_plots.svg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
|
|
@ -14,6 +14,7 @@ import time
|
|||
import math
|
||||
import json
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
import tqdm
|
||||
import click
|
||||
|
|
@ -25,7 +26,7 @@ def mesh_args(db, coil_id, mesh_type, mesh_file, outfile, **kwargs):
|
|||
rows = dict(db.execute('SELECT key, value FROM results WHERE coil_id=?', (coil_id,)).fetchall())
|
||||
rows.update(kwargs)
|
||||
args = ['python', '-m', 'twisted_coil_gen_twolayer', mesh_type, mesh_file, '--pcb']
|
||||
for k, v in rows:
|
||||
for k, v in rows.items():
|
||||
prefix, _, k = k.partition('.')
|
||||
if v != 'False' and prefix == 'gen':
|
||||
args.append('--' + k.replace('_', '-'))
|
||||
|
|
@ -104,9 +105,10 @@ def list_runs(ctx):
|
|||
|
||||
@cli.command()
|
||||
@click.option('-r', '--run-id')
|
||||
@click.option('-l', '--log-dir', default='logs', type=click.Path(dir_okay=True, file_okay=False, path_type=pathlib.Path))
|
||||
@click.option('-m', '--mesh-dir', default='meshes')
|
||||
@click.pass_context
|
||||
def list_coils(ctx, run_id, mesh_dir):
|
||||
def list_coils(ctx, run_id, log_dir, mesh_dir):
|
||||
db = ctx.obj['db_connect']()
|
||||
if run_id is None:
|
||||
run_id, = db.execute('SELECT run_id FROM runs ORDER BY timestamp DESC LIMIT 1').fetchone()
|
||||
|
|
@ -122,9 +124,11 @@ def list_coils(ctx, run_id, mesh_dir):
|
|||
'gen.inner_diameter': 'ID[mm]',
|
||||
'gen.outer_diameter': 'OD[mm]',
|
||||
'calculated_fill_factor': 'Fill factor',
|
||||
'calculated_approximate_inductance': 'L [µH]',
|
||||
'calculated_approximate_inductance': 'L [µH] (design)',
|
||||
'calculated_trace_length': 'track len [mm]',
|
||||
'calculated_approximate_resistance': 'R [mΩ]'}
|
||||
'calculated_approximate_resistance': 'R [mΩ] (design)',
|
||||
'sim_inductance': 'L [µH] (sim)',
|
||||
'sim_resistance': 'R [mΩ] (sim)'}
|
||||
out = []
|
||||
for row in db.execute('SELECT *, MAX(meshes.timestamp) FROM coils LEFT JOIN meshes ON coils.coil_id=meshes.coil_id WHERE run_id=? GROUP BY coils.coil_id, mesh_type ORDER BY meshes.timestamp', (run_id,)).fetchall():
|
||||
if row['timestamp']:
|
||||
|
|
@ -151,6 +155,19 @@ def list_coils(ctx, run_id, mesh_dir):
|
|||
if 'calculated_fill_factor' in params:
|
||||
params['calculated_fill_factor'] = f'{float(params["calculated_fill_factor"]):.03f}'
|
||||
|
||||
log_file = log_dir / (pathlib.Path(row['filename']).stem + '_elmer_self_inductance.log')
|
||||
if log_file.is_file():
|
||||
log = log_file.read_text()
|
||||
resistance = re.search(r'Coil resistance calculated by solver: ([0-9.e+-]*) (\w?)Ω', log)
|
||||
inductance = re.search(r'Inductance calucated from field: ([0-9.e+-]*) (\w?)H', log)
|
||||
si_prefix = {'': 1, 'm': 1e-3, 'µ': 1e-6, 'n': 1e-9, 'p': 1e-12}
|
||||
if resistance:
|
||||
resistance = float(resistance.group(1)) * si_prefix[resistance.group(2)]
|
||||
params['sim_resistance'] = format(resistance*1e3, '.3f')
|
||||
if inductance:
|
||||
inductance = float(inductance.group(1)) * si_prefix[inductance.group(2)]
|
||||
params['sim_inductance'] = format(inductance*1e6, '.3f')
|
||||
|
||||
out.append([row['coil_id'], row['mesh_type'], state, row['timestamp']] + [params.get(key, '-') for key in keys])
|
||||
|
||||
print(tabulate(out, headers=['coil', 'mesh', 'state', 'time'] + list(keys.values()), disable_numparse=True, stralign='right'))
|
||||
|
|
@ -180,13 +197,13 @@ def run(ctx, run_id, log_dir, mesh_dir):
|
|||
|
||||
@run.command()
|
||||
@click.option('-j', '--num-jobs', type=int, default=1, help='Number of jobs to run in parallel')
|
||||
@click.option('-t', '--mesh-type', type=click.Choice(['split', 'normal', 'mutual']), default=['split', 'normal', 'mutual'], multiple=True)
|
||||
@click.pass_context
|
||||
def generate_meshes(ctx, num_jobs):
|
||||
def generate_meshes(ctx, num_jobs, mesh_type):
|
||||
db = ctx.obj['db_connect']()
|
||||
rows = [row['coil_id'] for row in db.execute('SELECT coil_id FROM coils WHERE run_id=?', (ctx.obj['run_id'],)).fetchall()]
|
||||
mesh_types = ['split', 'normal', 'mutual']
|
||||
|
||||
params = list(itertools.product(rows, mesh_types))
|
||||
params = list(itertools.product(rows, mesh_type))
|
||||
all_files = {get_mesh_file(db, ctx.obj['mesh_dir'], ctx.obj['run_id'], coil_id, mesh_type): (coil_id, mesh_type) for coil_id, mesh_type in params}
|
||||
todo = [(coil_id, mesh_type) for f, (coil_id, mesh_type) in all_files.items() if not f.is_file()]
|
||||
|
||||
|
|
@ -232,7 +249,7 @@ def self_inductance(ctx, num_jobs):
|
|||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
try:
|
||||
tqdm.tqdm.write(f'Processing {mesh_file}')
|
||||
res = subprocess.run(['python', '-m', 'coil_parasitics', 'inductance', '--sim-dir', tmpdir, mesh_file], check=True, capture_output=True)
|
||||
res = subprocess.run(['python', '-m', 'coil_parasitics', 'inductance', '--sim-dir', tmpdir, mesh_file], check=True, capture_output=True, text=True)
|
||||
logfile.write_text(res.stdout+res.stderr)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f'Error running simulation, rc={e.returncode}')
|
||||
|
|
@ -266,8 +283,8 @@ def self_inductance(ctx, num_jobs):
|
|||
q.join()
|
||||
|
||||
@run.command()
|
||||
@click.option('target_hosts', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path), help='File with one SSH target host name per line')
|
||||
@click.option('job_file', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path), help='JSON job description file')
|
||||
@click.argument('target_hosts', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path))
|
||||
@click.argument('job_file', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path))
|
||||
@click.pass_context
|
||||
def run_mutual_inductance(ctx, target_hosts, job_file):
|
||||
db = ctx.obj['db_connect']()
|
||||
|
|
@ -301,7 +318,7 @@ def run_mutual_inductance(ctx, target_hosts, job_file):
|
|||
'ElmerGrid_stderr.log',
|
||||
'ElmerSolver_stdout.log',
|
||||
'ElmerSolver_stderr.log']:
|
||||
subprocess.run(['scp', f'{host}:{mesh_abs}/{workdir.name}/{fn}', str(host_log(Path(fn).stem))], check=True, capture_output=True, text=True)
|
||||
subprocess.run(['scp', f'{host}:{mesh_abs}/{workdir.name}/{fn}', str(host_log(Path(fn).stem))], check=True, capture_output=True, text=True)
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f'Error copying simulation logs, rc={e.returncode}', file=sys.stderr)
|
||||
|
|
|
|||
46
svg-vis-paper-2.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
369
svg-vis-paper-3.svg
Normal file
|
|
@ -0,0 +1,369 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="45.350204mm"
|
||||
height="42.200001mm"
|
||||
viewBox="0 0 45.350204 42.200001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="svg-vis-paper-3.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.6942248"
|
||||
inkscape:cx="61.458497"
|
||||
inkscape:cy="121.10626"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2091"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1335"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1336"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1337"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1338"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1516"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1517"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1518"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1519"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1520"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1521"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1522"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1523"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1524"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1525"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1526"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1527"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1528"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1529"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none"
|
||||
id="g1530"
|
||||
transform="translate(-178.4,-349.4)">
|
||||
<g
|
||||
id="g76"
|
||||
style="fill:#1a1a1a">
|
||||
<circle
|
||||
cx="180"
|
||||
cy="351"
|
||||
r="1.6"
|
||||
id="circle1334"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="180"
|
||||
cy="390"
|
||||
r="1.6"
|
||||
id="circle1335"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="219"
|
||||
cy="351"
|
||||
r="1.6"
|
||||
id="circle1336"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="219"
|
||||
cy="390"
|
||||
r="1.6"
|
||||
id="circle1337"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="194.82381"
|
||||
cy="376.36371"
|
||||
r="0.60000002"
|
||||
id="circle1515"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="192"
|
||||
cy="370.5"
|
||||
r="0.60000002"
|
||||
id="circle1516"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="210.4111"
|
||||
cy="384.1821"
|
||||
r="0.60000002"
|
||||
id="circle1517"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="194.82381"
|
||||
cy="364.63629"
|
||||
r="0.60000002"
|
||||
id="circle1518"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="195.6059"
|
||||
cy="387.56119"
|
||||
r="0.60000002"
|
||||
id="circle1519"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="201.1689"
|
||||
cy="363.18799"
|
||||
r="0.60000002"
|
||||
id="circle1520"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="183.733"
|
||||
cy="378.09299"
|
||||
r="0.60000002"
|
||||
id="circle1521"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="206.25729"
|
||||
cy="367.24591"
|
||||
r="0.60000002"
|
||||
id="circle1522"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="183.733"
|
||||
cy="362.90701"
|
||||
r="0.60000002"
|
||||
id="circle1523"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="206.25729"
|
||||
cy="373.75409"
|
||||
r="0.60000002"
|
||||
id="circle1524"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="195.6059"
|
||||
cy="353.43881"
|
||||
r="0.60000002"
|
||||
id="circle1525"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="201.1689"
|
||||
cy="377.81201"
|
||||
r="0.60000002"
|
||||
id="circle1526"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="210.4111"
|
||||
cy="356.8179"
|
||||
r="0.60000002"
|
||||
id="circle1527"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="222"
|
||||
cy="369.23001"
|
||||
r="0.55000001"
|
||||
id="circle1528"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="222"
|
||||
cy="371.76999"
|
||||
r="0.55000001"
|
||||
id="circle1529"
|
||||
style="fill:#1a1a1a" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2516"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2517"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2518"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2519"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2520"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2521"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2522"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2523"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2524"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2525"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2526"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2527"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2528"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2529"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2530"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2759"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2760"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2761"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2762"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2940"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2941"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2942"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2943"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2944"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2945"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2946"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2947"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2948"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2949"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2950"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2951"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2952"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2953"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
378
svg-vis-paper-4.svg
Normal file
|
|
@ -0,0 +1,378 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="45.350204mm"
|
||||
height="42.200001mm"
|
||||
viewBox="0 0 45.350204 42.200001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="svg-vis-paper-4.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="6.6386364"
|
||||
inkscape:cx="89.702157"
|
||||
inkscape:cy="89.85279"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2091"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1335"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1336"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1337"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1338"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1516"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1517"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1518"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1519"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1520"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1521"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1522"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1523"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1524"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1525"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1526"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1527"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1528"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1529"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none"
|
||||
id="g1530"
|
||||
transform="translate(-178.4,-349.4)">
|
||||
<g
|
||||
id="g76"
|
||||
style="fill:#1a1a1a">
|
||||
<circle
|
||||
cx="180"
|
||||
cy="351"
|
||||
r="1.6"
|
||||
id="circle1334"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="180"
|
||||
cy="390"
|
||||
r="1.6"
|
||||
id="circle1335"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="219"
|
||||
cy="351"
|
||||
r="1.6"
|
||||
id="circle1336"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="219"
|
||||
cy="390"
|
||||
r="1.6"
|
||||
id="circle1337"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="194.82381"
|
||||
cy="376.36371"
|
||||
r="0.60000002"
|
||||
id="circle1515"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="192"
|
||||
cy="370.5"
|
||||
r="0.60000002"
|
||||
id="circle1516"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="210.4111"
|
||||
cy="384.1821"
|
||||
r="0.60000002"
|
||||
id="circle1517"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="194.82381"
|
||||
cy="364.63629"
|
||||
r="0.60000002"
|
||||
id="circle1518"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="195.6059"
|
||||
cy="387.56119"
|
||||
r="0.60000002"
|
||||
id="circle1519"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="201.1689"
|
||||
cy="363.18799"
|
||||
r="0.60000002"
|
||||
id="circle1520"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="183.733"
|
||||
cy="378.09299"
|
||||
r="0.60000002"
|
||||
id="circle1521"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="206.25729"
|
||||
cy="367.24591"
|
||||
r="0.60000002"
|
||||
id="circle1522"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="183.733"
|
||||
cy="362.90701"
|
||||
r="0.60000002"
|
||||
id="circle1523"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="206.25729"
|
||||
cy="373.75409"
|
||||
r="0.60000002"
|
||||
id="circle1524"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="195.6059"
|
||||
cy="353.43881"
|
||||
r="0.60000002"
|
||||
id="circle1525"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="201.1689"
|
||||
cy="377.81201"
|
||||
r="0.60000002"
|
||||
id="circle1526"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="210.4111"
|
||||
cy="356.8179"
|
||||
r="0.60000002"
|
||||
id="circle1527"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="222"
|
||||
cy="369.23001"
|
||||
r="0.55000001"
|
||||
id="circle1528"
|
||||
style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
|
||||
<circle
|
||||
cx="222"
|
||||
cy="371.76999"
|
||||
r="0.55000001"
|
||||
id="circle1529"
|
||||
style="fill:#1a1a1a" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2516"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2517"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2518"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2519"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2520"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2521"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2522"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2523"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2524"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2525"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2526"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2527"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2528"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2529"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2530"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2759"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2760"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2761"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2762"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2940"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2941"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2942"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2943"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2944"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2945"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2946"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2947"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2948"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2949"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2950"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2951"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2952"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2953"
|
||||
transform="translate(-178.4,-349.4)" />
|
||||
<rect
|
||||
style="fill:#1a1a1a;stroke:none;stroke-width:0.365001;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="rect76"
|
||||
width="45.350204"
|
||||
height="42.200001"
|
||||
x="0"
|
||||
y="0"
|
||||
rx="0"
|
||||
ry="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
51
svg-vis-paper-plain-board-outline.svg
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="45.349998mm"
|
||||
height="42.200001mm"
|
||||
viewBox="0 0 45.349998 42.200001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="svg-vis-paper-plain-board-outline.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="6.6386364"
|
||||
inkscape:cx="60.027388"
|
||||
inkscape:cy="122.84149"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2091"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="fill:#000000;stroke-width:0.365001;stroke-linecap:round;stroke-linejoin:round"
|
||||
id="rect2"
|
||||
width="45.349998"
|
||||
height="42.200001"
|
||||
x="0"
|
||||
y="0"
|
||||
rx="0"
|
||||
ry="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
194
svg-vis-paper-plain-bottom-copper.svg
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="45.349998mm"
|
||||
height="42.200001mm"
|
||||
viewBox="0 0 45.349998 42.200001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="svg-vis-paper-plain-bottom-copper.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="6.6386364"
|
||||
inkscape:cx="40.821636"
|
||||
inkscape:cy="110.94146"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2091"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1379"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1380"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1381"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1382"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1411"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1412"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1413"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<path
|
||||
id="path1652"
|
||||
style="fill:#4d7fc4;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 42.850098 18.830375 A 1 1 0 0 0 41.850159 19.830314 A 1 1 0 0 0 42.850098 20.830253 L 44.349748 20.830253 A 1 1 0 0 0 45.350203 19.830314 A 1 1 0 0 0 44.349748 18.830375 L 42.850098 18.830375 z M 43.599923 19.27996 A 0.55000001 0.55000001 0 0 1 44.14976 19.829797 A 0.55000001 0.55000001 0 0 1 43.599923 20.380151 A 0.55000001 0.55000001 0 0 1 43.050085 19.829797 A 0.55000001 0.55000001 0 0 1 43.599923 19.27996 z M 28.599805 20.699512 A 0.40000001 0.40000001 0 0 0 28.597221 20.700028 A 0.40000001 0.40000001 0 0 0 28.405501 20.751705 A 0.40000001 0.40000001 0 0 0 28.3962 20.756873 A 0.40000001 0.40000001 0 0 0 28.256156 20.896916 A 0.40000001 0.40000001 0 0 0 28.251506 20.905184 A 0.40000001 0.40000001 0 0 0 28.199829 21.100004 A 0.40000001 0.40000001 0 0 0 28.251506 21.294824 A 0.40000001 0.40000001 0 0 0 28.256156 21.303092 A 0.40000001 0.40000001 0 0 0 28.3962 21.443136 A 0.40000001 0.40000001 0 0 0 28.405501 21.448303 A 0.40000001 0.40000001 0 0 0 28.597221 21.49998 A 0.40000001 0.40000001 0 0 0 28.599805 21.500496 L 38.434347 21.500496 L 39.586214 22.652881 A 0.40000001 0.40000001 0 0 0 39.603784 22.666833 A 0.40000001 0.40000001 0 0 0 39.639441 22.695256 A 0.40000001 0.40000001 0 0 0 39.677165 22.719027 A 0.40000001 0.40000001 0 0 0 39.714372 22.736597 A 0.40000001 0.40000001 0 0 0 39.762948 22.75365 A 0.40000001 0.40000001 0 0 0 39.799121 22.761918 A 0.40000001 0.40000001 0 0 0 39.850798 22.767603 A 0.40000001 0.40000001 0 0 0 39.869401 22.76967 L 41.850159 22.76967 L 41.937492 22.76967 A 1 1 0 0 0 41.987101 22.849251 A 1 1 0 0 0 42.055314 22.959322 A 1 1 0 0 0 42.181921 23.096265 A 1 1 0 0 0 42.272355 23.176363 A 1 1 0 0 0 42.456323 23.276099 A 1 1 0 0 0 42.545207 23.317957 A 1 1 0 0 0 42.850098 23.369633 L 44.349748 23.369633 A 1 1 0 0 0 45.350203 22.369694 A 1 1 0 0 0 44.349748 21.369755 L 42.850098 21.369755 A 1 1 0 0 0 42.545207 21.421431 A 1 1 0 0 0 42.454773 21.463806 A 1 1 0 0 0 42.273389 21.561991 A 1 1 0 0 0 42.181405 21.64364 A 1 1 0 0 0 42.054797 21.781099 A 1 1 0 0 0 41.988652 21.887036 A 1 1 0 0 0 41.937492 21.969202 L 41.850159 21.969202 L 40.035282 21.969202 L 38.883415 20.816817 A 0.40000001 0.40000001 0 0 0 38.875663 20.810616 A 0.40000001 0.40000001 0 0 0 38.871529 20.806999 A 0.40000001 0.40000001 0 0 0 38.816235 20.76359 A 0.40000001 0.40000001 0 0 0 38.813652 20.761523 A 0.40000001 0.40000001 0 0 0 38.811584 20.76049 A 0.40000001 0.40000001 0 0 0 38.801766 20.755839 A 0.40000001 0.40000001 0 0 0 38.747506 20.728967 A 0.40000001 0.40000001 0 0 0 38.742855 20.7269 A 0.40000001 0.40000001 0 0 0 38.724768 20.719666 A 0.40000001 0.40000001 0 0 0 38.719084 20.718115 A 0.40000001 0.40000001 0 0 0 38.656038 20.704163 A 0.40000001 0.40000001 0 0 0 38.651904 20.703129 A 0.40000001 0.40000001 0 0 0 38.62865 20.701579 A 0.40000001 0.40000001 0 0 0 38.600228 20.699512 L 28.599805 20.699512 z M 28.599805 20.900016 A 0.2 0.2 0 0 1 28.799792 21.100004 A 0.2 0.2 0 0 1 28.599805 21.299992 A 0.2 0.2 0 0 1 28.399817 21.100004 A 0.2 0.2 0 0 1 28.599805 20.900016 z M 43.599923 21.819857 A 0.55000001 0.55000001 0 0 1 44.14976 22.370211 A 0.55000001 0.55000001 0 0 1 43.599923 22.920048 A 0.55000001 0.55000001 0 0 1 43.050085 22.370211 A 0.55000001 0.55000001 0 0 1 43.599923 21.819857 z " />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2411"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2412"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2413"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2662"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2803"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2804"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2805"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2806"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2835"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2836"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2837"
|
||||
transform="translate(-349.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1359"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1360"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1361"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1362"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1408"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1409"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1410"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g1651"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2408"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#4d7fc4;fill-opacity:1;stroke:none"
|
||||
id="g2409"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2410"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#4d7fc4;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2659"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2783"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2784"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2785"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2786"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2832"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2833"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2834"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
158
svg-vis-paper-plain-top-copper.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
159
svg-vis-paper-plain-vias.svg
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="45.349998mm"
|
||||
height="42.200001mm"
|
||||
viewBox="0 0 45.349998 42.200001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="svg-vis-paper-plain-vias.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="6.6386364"
|
||||
inkscape:cx="60.102704"
|
||||
inkscape:cy="110.94146"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2091"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1379"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1380"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1381"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1382"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1411"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1412"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1413"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#c83434;fill-opacity:1;stroke:none"
|
||||
id="g2597"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#c83434;fill-opacity:1;stroke:none"
|
||||
id="g2598"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:none;stroke:#c83434;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2599"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:none;stroke:#c83434;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2848"
|
||||
transform="translate(-349.4,-134.36458)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1359"
|
||||
transform="translate(-292.4,-121.4)">
|
||||
<path
|
||||
id="circle1358"
|
||||
d="M 293.9999 121.4 A 1.6 1.6 0 0 0 292.4 122.9999 A 1.6 1.6 0 0 0 293.9999 124.5998 A 1.6 1.6 0 0 0 295.5998 122.9999 A 1.6 1.6 0 0 0 293.9999 121.4 z M 333.00011 121.4 A 1.6 1.6 0 0 0 331.4002 122.9999 A 1.6 1.6 0 0 0 333.00011 124.5998 A 1.6 1.6 0 0 0 334.60001 122.9999 A 1.6 1.6 0 0 0 333.00011 121.4 z M 335.99992 140.67996 A 0.55000001 0.55000001 0 0 0 335.45009 141.2298 A 0.55000001 0.55000001 0 0 0 335.99992 141.78015 A 0.55000001 0.55000001 0 0 0 336.54976 141.2298 A 0.55000001 0.55000001 0 0 0 335.99992 140.67996 z M 320.9998 142.30002 A 0.2 0.2 0 0 0 320.79982 142.5 A 0.2 0.2 0 0 0 320.9998 142.69999 A 0.2 0.2 0 0 0 321.19979 142.5 A 0.2 0.2 0 0 0 320.9998 142.30002 z M 335.99992 143.21986 A 0.55000001 0.55000001 0 0 0 335.45009 143.77021 A 0.55000001 0.55000001 0 0 0 335.99992 144.32005 A 0.55000001 0.55000001 0 0 0 336.54976 143.77021 A 0.55000001 0.55000001 0 0 0 335.99992 143.21986 z M 293.9999 160.4002 A 1.6 1.6 0 0 0 292.4 162.00011 A 1.6 1.6 0 0 0 293.9999 163.60001 A 1.6 1.6 0 0 0 295.5998 162.00011 A 1.6 1.6 0 0 0 293.9999 160.4002 z M 333.00011 160.4002 A 1.6 1.6 0 0 0 331.4002 162.00011 A 1.6 1.6 0 0 0 333.00011 163.60001 A 1.6 1.6 0 0 0 334.60001 162.00011 A 1.6 1.6 0 0 0 333.00011 160.4002 z "
|
||||
style="fill:#000000" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1360"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1361"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1362"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1408"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1409"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#d0d2cd;fill-opacity:1;stroke:none"
|
||||
id="g1410"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#c83434;fill-opacity:1;stroke:none"
|
||||
id="g2594"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#c83434;fill-opacity:1;stroke:none"
|
||||
id="g2595"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#c83434;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2596"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:none;stroke:#c83434;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g2845"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2970"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2971"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g2972"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g3018"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g3019"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
<g
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="g3020"
|
||||
transform="translate(-292.4,-121.4)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.3 KiB |
250
svg-vis-paper.svg
Normal file
|
After Width: | Height: | Size: 26 KiB |
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import warnings
|
||||
import subprocess
|
||||
import sys
|
||||
import math
|
||||
|
|
@ -605,6 +606,8 @@ def print_valid_twists(ctx, param, value):
|
|||
@click.option('--outer-diameter', type=float, default=50, help='Outer diameter [mm]')
|
||||
@click.option('--svg-out', type=click.Path(writable=True, dir_okay=False, path_type=Path), help='Filename to output SVG illustration of the coil to')
|
||||
@click.option('--inner-diameter', type=float, default=25, help='Inner diameter [mm]')
|
||||
@click.option('--stagger-inner-vias/--no-stagger-inner-vias', default=False, help='Stagger inner via ring')
|
||||
@click.option('--stagger-outer-vias/--no-stagger-outer-vias', default=False, help='Stagger outer via ring')
|
||||
@click.option('--trace-width', type=float, default=None)
|
||||
@click.option('--via-diameter', type=float, default=0.6)
|
||||
@click.option('--two-layer/--single-layer', default=True)
|
||||
|
|
@ -617,7 +620,6 @@ def print_valid_twists(ctx, param, value):
|
|||
@click.option('--twists', type=int, default=1, help='Number of twists per revolution. Note that this number must be co-prime to the number of turns. Run with --show-twists to list valid values. (default: 1)')
|
||||
@click.option('--circle-segments', type=int, default=64, help='When not using arcs, the number of points to use for arc interpolation per 360 degrees.')
|
||||
@click.option('--show-twists', callback=print_valid_twists, expose_value=False, type=int, is_eager=True, help='Calculate and show valid --twists counts for the given number of turns. Takes the number of turns as a value.')
|
||||
@click.option('--close-loop', is_flag=True, help='Close coil loop for simulation meshes')
|
||||
@click.option('--clearance', type=float, default=None)
|
||||
@click.option('--arc-tolerance', type=float, default=0.02)
|
||||
@click.option('--mesh-split-out', type=click.Path(writable=True, dir_okay=False, path_type=Path))
|
||||
|
|
@ -635,7 +637,7 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
footprint_name, layer_pair, twists, clipboard, counter_clockwise, keepout_zone, keepout_margin,
|
||||
arc_tolerance, pcb, mesh_out, magneticalc_out, circle_segments, mesh_split_out, copper_thickness,
|
||||
board_thickness, mesh_mutual_out, mutual_offset_x, mutual_offset_y, mutual_offset_z, mutual_rotation_z,
|
||||
two_layer, svg_out, close_loop):
|
||||
two_layer, svg_out, stagger_inner_vias, stagger_outer_vias):
|
||||
|
||||
if 'WAYLAND_DISPLAY' in os.environ:
|
||||
copy, paste, cliputil = ['wl-copy'], ['wl-paste'], 'xclip'
|
||||
|
|
@ -643,7 +645,10 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
copy, paste, cliputil = ['xclip', '-i', '-sel', 'clipboard'], ['xclip', '-o', '-sel' 'clipboard'], 'wl-clipboard'
|
||||
|
||||
if gcd(twists, turns) != 1:
|
||||
raise click.ClickException('For the geometry to work out, the --twists parameter must be co-prime to --turns, i.e. the two must have 1 as their greatest common divisor. You can print valid values for --twists by running this command with --show-twists [turns number].')
|
||||
raise click.ClickException(f'For the geometry to work out, the --twists parameter must be co-prime to --turns, i.e. the two must have 1 as their greatest common divisor. You can print valid values for --twists by running this command with --show-twists [turns number]. Right now, both are divisible by {gcd(twists, turns)}.')
|
||||
|
||||
if (stagger_inner_vias or stagger_outer_vias) and twists%2 != 0:
|
||||
raise click.ClickException('For --stagger-inner/outer-vias to work, --twists must be even and --turns must be odd.')
|
||||
|
||||
if (mesh_out or mesh_split_out or mesh_mutual_out) and not pcb:
|
||||
raise click.ClickException('--pcb is required when --mesh-out, --mesh-mutual-out or --mesh-split-out are used.')
|
||||
|
|
@ -708,9 +713,9 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
print(f' {degrees(outer_via_angle):.1f} deg / via', file=sys.stderr)
|
||||
|
||||
# Check if the vias of the inner ring are so large that they would overlap
|
||||
if inner_via_angle*twists > 2*pi:
|
||||
min_dia = 2*((via_diameter + clearance) / (2*sin(pi / twists)) + via_offset)
|
||||
raise click.ClickException(f'Error: Overlapping vias in inner via ring. Calculated minimum inner diameter is {min_dia:.2f} mm.')
|
||||
if inner_via_angle*twists > (4*pi if stagger_inner_vias else 2*pi):
|
||||
min_dia = 2*((via_diameter + clearance) / (2*sin(pi / twists * (2 if stagger_inner_vias else 1))) + via_offset)
|
||||
warnings.warn(f'Overlapping vias in inner via ring. Calculated minimum inner diameter is {min_dia:.2f} mm.')
|
||||
|
||||
pitch = clearance + trace_width
|
||||
t, _, b = layer_pair.partition(',')
|
||||
|
|
@ -862,7 +867,7 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
x = inverse[i]*floor(2*sweeping_angle / (2*pi)) * 2*pi
|
||||
(x0, y0), (xn, yn), clen = do_spiral(0, outer_radius, inner_radius, start_angle, fold_angle, (x + start_angle)/total_angle, (x + fold_angle)/total_angle, circle_segments)
|
||||
if two_layer:
|
||||
do_spiral(1, inner_radius, outer_radius, fold_angle, end_angle, (x + fold_angle)/total_angle, (x + end_angle)/total_angle)
|
||||
do_spiral(1, inner_radius, outer_radius, fold_angle, end_angle, (x + fold_angle)/total_angle, (x + end_angle)/total_angle, circle_segments)
|
||||
else:
|
||||
dr = outer_radius - inner_radius
|
||||
xq = xn + cos(fold_angle) * dr
|
||||
|
|
@ -875,7 +880,11 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
path.move(xn, yn)
|
||||
path.line(xq, yq)
|
||||
|
||||
xv, yv = inner_via_ring_radius*cos(fold_angle), inner_via_ring_radius*sin(fold_angle)
|
||||
r = inner_via_ring_radius
|
||||
if stagger_inner_vias:
|
||||
if i%2 != 0:
|
||||
r -= 2*via_offset
|
||||
xv, yv = r*cos(fold_angle), r*sin(fold_angle)
|
||||
pads.append(make_via(xv, yv, layer_pair))
|
||||
if not isclose(via_offset, 0, abs_tol=1e-6):
|
||||
lines.append(make_line(xn, yn, xv, yv, layer_pair[0]))
|
||||
|
|
@ -883,8 +892,12 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
svg_vias.append(Tag('circle', cx=xv, cy=yv, r=via_diameter/2, stroke='none', fill='white'))
|
||||
svg_vias.append(Tag('circle', cx=xv, cy=yv, r=via_drill/2, stroke='none', fill='black'))
|
||||
|
||||
if i > 0 or close_loop:
|
||||
xv, yv = outer_via_ring_radius*cos(start_angle), outer_via_ring_radius*sin(start_angle)
|
||||
if i > 0:
|
||||
r = outer_via_ring_radius
|
||||
if stagger_outer_vias:
|
||||
if i%2 != 0:
|
||||
r += 2*via_offset
|
||||
xv, yv = r*cos(start_angle), r*sin(start_angle)
|
||||
pads.append(make_via(xv, yv, layer_pair))
|
||||
if not isclose(via_offset, 0, abs_tol=1e-6):
|
||||
lines.append(make_line(x0, y0, xv, yv, layer_pair[0]))
|
||||
|
|
@ -892,7 +905,7 @@ def generate(outfile, turns, outer_diameter, inner_diameter, via_diameter, via_d
|
|||
svg_vias.append(Tag('circle', cx=xv, cy=yv, r=via_diameter/2, stroke='none', fill='white'))
|
||||
svg_vias.append(Tag('circle', cx=xv, cy=yv, r=via_drill/2, stroke='none', fill='black'))
|
||||
|
||||
l_total = clen*twists*2
|
||||
l_total = clen*twists*(2 if two_layer else 1)
|
||||
print(f'Approximate track length: {l_total:.2f} mm', file=sys.stderr)
|
||||
A = copper_thickness/1e3 * trace_width/1e3
|
||||
rho = 1.68e-8
|
||||
|
|
|
|||
64674
wide_coil_1.kicad_pcb
Normal file
136
wide_coil_1.kicad_prl
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_1.kicad_prl",
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
276
wide_coil_1.kicad_pro
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_1.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": -1,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerber_wide_1",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": []
|
||||
},
|
||||
"sheets": [],
|
||||
"text_variables": {}
|
||||
}
|
||||
441290
wide_coil_2.kicad_pcb
Normal file
136
wide_coil_2.kicad_prl
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_2.kicad_prl",
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
276
wide_coil_2.kicad_pro
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_2.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": -1,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerber_wide_2",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": []
|
||||
},
|
||||
"sheets": [],
|
||||
"text_variables": {}
|
||||
}
|
||||
459350
wide_coil_3.kicad_pcb
Normal file
136
wide_coil_3.kicad_prl
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_3.kicad_prl",
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
276
wide_coil_3.kicad_pro
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_3.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": -1,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerber_wide_3",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": []
|
||||
},
|
||||
"sheets": [],
|
||||
"text_variables": {}
|
||||
}
|
||||
481410
wide_coil_4.kicad_pcb
Normal file
136
wide_coil_4.kicad_prl
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_4.kicad_prl",
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
276
wide_coil_4.kicad_pro
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_4.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": -1,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerber_wide_4",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": []
|
||||
},
|
||||
"sheets": [],
|
||||
"text_variables": {}
|
||||
}
|
||||
424596
wide_coil_5.kicad_pcb
Normal file
136
wide_coil_5.kicad_prl
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "All Layers",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40,
|
||||
41
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_5.kicad_prl",
|
||||
"version": 4
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
276
wide_coil_5.kicad_pro
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "wide_coil_5.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": -1,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerber_wide_5",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": []
|
||||
},
|
||||
"sheets": [],
|
||||
"text_variables": {}
|
||||
}
|
||||