Compare commits

...

12 Commits

Author SHA1 Message Date
sirlilpanda
9f4ce14d35 fixed feature size 2026-02-26 11:23:07 +13:00
sirlilpanda
9918d2b064 autogen 2026-02-26 09:48:45 +13:00
sirlilpanda
d499fff5cc changed output file name from waferlayout to something more discriptive 2026-02-26 09:48:26 +13:00
91f84fb78a fixed comment line 2026-02-25 23:02:33 +13:00
129a5b5d3d autogened 2026-02-25 23:02:22 +13:00
67a76eff07 makefile for compling all dxfs 2026-02-25 23:02:11 +13:00
8ae175e08c added the smallest unit value to the ploygon in order to ensure they overlap and union correctly 2026-02-25 21:59:26 +13:00
sirlilpanda
04e1ad0d0a moved to dxfs 2026-02-25 21:13:45 +13:00
sirlilpanda
2516378755 added more comments 2026-02-25 21:13:25 +13:00
sirlilpanda
f94a6d137e new wafer layout and update the comments on some others 2026-02-25 21:13:05 +13:00
sirlilpanda
7526d8d2a1 added more comments to explain each part 2026-02-25 21:12:37 +13:00
sirlilpanda
21ed153977 some preset dxfs to use 2026-02-25 21:12:09 +13:00
28 changed files with 17976604 additions and 89 deletions

View File

@@ -1,70 +1,116 @@
// ================= README =================
// these are the normal parameters used by
// each one of the layout scripts
// however they do dont directly use them
// and instead have thier own copy
//
// this was done in order to have more control
// over each of the scripts themsevels
// allowing each to have even more parameters
// and having them show up in the open scad
// parameters window
// ================= README =================
// ================= openscad prams ================= // ================= openscad prams =================
$fa = 1;
// min angle
$fa = 0.1;
// min size
$fs = 0.01; $fs = 0.01;
// ================= openscad prams ================= // ================= openscad prams =================
// ================= meta ================= // ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1"; SCRIPT_VERSION="0.0.1";
// this really just need to be any mon font
// font for layout
FONT="Ubuntu Sans Mono:style=Regular"; FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1; test_number = 1;
// scale in m
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3; scale_unit = 1e3;
// ================= meta ================= // ================= meta =================
// ================= IDT ================= // ================= IDT =================
// the underlying substrate
substrate = "SI"; substrate = "SI";
// linbo // linbo
// the aoucstice wave speed in the substrate
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
// the target frequency of the IDT
freq = 50.0e6; freq = 50.0e6;
// $fs = (c/freq); // the distance between the input and output IDT
// should be between 100-200
// inout distance
distance = 50; distance = 50;
// number of finger // the number of fingers the IDT has
n_fingers = 50; n_fingers = 50;
// should be 50-70 // the length of the figure or aperture should be 50-70
finger_length = 60; finger_length = 60;
// for tweaking the design // the gap between both sides of the IDT (should be used for tweaking)
gap = 0; gap = 0;
// for tweaking the design // the thickness of the wire the connects all the fingers
thickness = 0; thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = false; has_id_number = false;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.003; leg_length = 0.003;
// the width of the leg
leg_width = 0.00001875; leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10; leg_angle = 10;
// the size of the bond pad
size = 0.002; size = 0.002;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square"; bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=7; info_block_offset_x=7;
info_block_offset_y=30; info_block_offset_y=30;
// total scale of infoblock
info_block_scale=0.3; info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4; title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5; prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 1; id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= array spacings =================
number_of_idts_per_quadrent=4;
idt_x_spacing = 10;
idt_y_spacing = 12.5;
// ================= array spacings =================
// ================= wafers ================= // ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4; wafer_size_inch = 4;
// ================= wafers ================= // ================= wafers =================

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
{
"parameterSets": {
"design default values": {
"$fa": "1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "70",
"finger_length": "50",
"freq": "1e+7",
"gap": "0",
"has_id_number": "true",
"id_text_size": "1",
"idt_1_x_offset": "-15",
"idt_1_y_offset": "0",
"idt_2_x_offset": "15",
"idt_2_y_offset": "0",
"info_block_offset_x": "32",
"info_block_offset_y": "-7",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "SI",
"test_number": "2",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
{
"parameterSets": {
"design default values": {
"$fa": "0.1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "50",
"finger_length": "50",
"freq": "1e+7",
"gap": "0",
"has_id_number": "false",
"id_text_size": "1",
"idt_x_offset": "0",
"idt_y_offset": "0",
"info_block_offset_x": "25",
"info_block_offset_y": "10",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "LINBO",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
{
"parameterSets": {
"design default values": {
"$fa": "1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"distance": "150",
"finger_length": "60",
"freq": "2.5e+7",
"gap": "0",
"has_id_number": "false",
"id_text_size": "1",
"idt_1_x_offset": "0",
"idt_1_y_offset": "0",
"idt_2_x_offset": "0",
"idt_2_y_offset": "0",
"info_block_offset_x": "20",
"info_block_offset_y": "-30",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.003",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"scale_unit": "1000",
"size": "0.002",
"substrate": "LINBO",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
{
"parameterSets": {
"design default values": {
"$fa": "0.1",
"$fs": "0.01",
"FONT": "Ubuntu Sans Mono:style=Regular",
"SCRIPT_VERSION": "0.0.1",
"bond_pad_shape": "square",
"c": "3992",
"cols": "10",
"distance": "50",
"finger_length": "60",
"freq": "3.45e+8",
"gap": "0",
"has_id_number": "true",
"id_text_size": "0.5",
"info_block_offset_x": "28",
"info_block_offset_y": "-5",
"info_block_scale": "0.3",
"leg_angle": "10",
"leg_length": "0.001",
"leg_width": "0.00001875",
"n_fingers": "50",
"prop_text_size": "2.5",
"rows": "10",
"scale_unit": "1000",
"size": "0.00075",
"spacing_x": "4",
"spacing_y": "7",
"substrate": "SI",
"test_number": "1",
"thickness": "0",
"title_text_size": "4",
"wafer_size_inch": "4"
}
},
"fileFormatVersion": "1"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

19
makefile Normal file
View File

@@ -0,0 +1,19 @@
all: single_10MHZ pair_10MHZ quadrand_50MHz array_345MHz cross_25MHz
single_10MHZ:
openscad -o dxfs/10MHz_single_IDT/single_10MHZ.dxf wafer_layouts/single_idt.scad -p dxfs/10MHz_single_IDT/single_idt.json
pair_10MHZ:
openscad -o dxfs/10MHz_pair_IDT/pair_10MHZ.dxf wafer_layouts/pair_idt.scad -p dxfs/10MHz_single_IDT/pair_idt.json
quadrand_50MHz:
openscad -o dxfs/50MHz_quadrant_array_16/quadrand_50MHz.dxf wafer_layouts/quadrant_array.scad -p dxfs/50MHz_quadrant_array_16/quadrant_array_16_50MHz.json
array_345MHz:
openscad -o dxfs/345MHz_grid_10_10_IDT/array_345MHz.dxf wafer_layouts/gird_array_idt.scad -p dxfs/345MHz_grid_10_10_IDT/gird_array_idt.json
cross_25MHz:
openscad -o dxfs/25MHz_cross_idt/cross_25MHz.dxf wafer_layouts/cross_pattern_idt.scad -p dxfs/25MHz_cross_idt/cross_pattern_idt.json

View File

@@ -24,7 +24,9 @@ module bi_directional_idt(
// id number prams // id number prams
id_number = 0, id_number = 0,
has_id = false, has_id = false,
id_flip_dir = [1, 1, 1], id_scale = [1, 1, 1],
id_translate = [0, 0, 0],
id_rot = [0, 0, 0],
// extra // extra
post_scale = 1, post_scale = 1,
echo_stats = false, echo_stats = false,
@@ -46,7 +48,9 @@ module bi_directional_idt(
if (has_id) { if (has_id) {
color([255/255, 0/255, 255/255]) color([255/255, 0/255, 255/255])
translate([finger_length*lambda/2, has_bond_pads ? -(bond_pad_leg_length * post_scale * cos(bond_pad_angle)) : -lambda*finger_length/2, 0]) translate([finger_length*lambda/2, has_bond_pads ? -(bond_pad_leg_length * post_scale * cos(bond_pad_angle)) : -lambda*finger_length/2, 0])
scale(id_flip_dir) translate(id_translate)
rotate(id_rot)
scale(id_scale)
text(str(id_number), size=id_text_size, halign="center"); text(str(id_number), size=id_text_size, halign="center");
} }

View File

@@ -15,7 +15,6 @@ module bond_pad(
bond_pad_shape = "square", bond_pad_shape = "square",
post_scale = false post_scale = false
) { ) {
if (post_scale) {
circle(r=leg_width*post_scale); circle(r=leg_width*post_scale);
rotate([0, 0, leg_angle+180]) { rotate([0, 0, leg_angle+180]) {
@@ -33,16 +32,4 @@ module bond_pad(
// echo(str("x = ", post_scale*leg_length*cos(leg_angle+180))); // echo(str("x = ", post_scale*leg_length*cos(leg_angle+180)));
// echo(str("y = ", post_scale*leg_length*sin(leg_angle+180))); // echo(str("y = ", post_scale*leg_length*sin(leg_angle+180)));
} else {
rotate([0, 0, leg_angle+180]) {
translate([-leg_length/2, -leg_width, 0]) {
// color([0, 255/255, 255/255]) {
square(size=[leg_length, leg_width]);
// }
}
}
square(size=[size, size], center=true);
}
} }

View File

@@ -1,6 +1,14 @@
// creates 1 side of the idt // creates 1 side of the idt
module delay_line(lambda = 1, n_fingers = 1, finger_length = 50, gap = 0, thickness = 0) { module delay_line(
// code lambda = 1,
n_fingers = 1,
finger_length = 50,
gap = 0,
thickness = 0
) {
// just a very small value that allows the polygons to overlap nicely
esp = $fs;
l45 =lambda*5/4; l45 =lambda*5/4;
l2 = lambda/2; l2 = lambda/2;
l4 = lambda/4; l4 = lambda/4;
@@ -24,10 +32,10 @@ module delay_line(lambda = 1, n_fingers = 1, finger_length = 50, gap = 0, thickn
[b+f, l2], [b+f, l2],
[b+f, l2+l4], [b+f, l2+l4],
[b, l2+l4], [b, l2+l4],
[b, l4*5-l4], [b, l4*5-l4 + esp],
[0, l4*5-l4] [0, l4*5-l4 + esp]
]; ];
// union () { union () {
translate([0, l2, 0]){ translate([0, l2, 0]){
for(i = [0:n_fingers]){ for(i = [0:n_fingers]){
@@ -64,6 +72,6 @@ module delay_line(lambda = 1, n_fingers = 1, finger_length = 50, gap = 0, thickn
square(size=[l4+thickness, l4]); square(size=[l4+thickness, l4]);
} }
} }
}
} }
} }

View File

@@ -36,7 +36,7 @@ substrate = "LINBO";
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
freq = 50.0e6; freq = 25.0e6;
// $fs = (c/freq); // $fs = (c/freq);
@@ -101,7 +101,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );

View File

@@ -0,0 +1,188 @@
include <../modules/bidirectional_idt.scad>
include <../modules/parameter_text.scad>
include <../modules/wafer.scad>
// ================= README =================
// these are the normal parameters used by
// each one of the layout scripts
// however they do dont directly use them
// and instead have thier own copy
//
// this was done in order to have more control
// over each of the scripts themsevels
// allowing each to have even more parameters
// and having them show up in the open scad
// parameters window
// ================= README =================
// ================= openscad prams =================
// min angle
$fa = 0.1;
// min size
$fs = 0.01;
// ================= openscad prams =================
// ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1";
// font for layout
FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1;
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3;
// ================= meta =================
// ================= IDT =================
// the underlying substrate
substrate = "SI";
// linbo
// the aoucstice wave speed in the substrate
c = 3992.0;
// si
// c = 3159.0;
// the target frequency of the IDT
freq = 345.0e6;
// the distance between the input and output IDT
// should be between 100-200
distance = 50;
// the number of fingers the IDT has
n_fingers = 50;
// the length of the figure or aperture should be 50-70
finger_length = 60;
// the gap between both sides of the IDT (should be used for tweaking)
gap = 0;
// the thickness of the wire the connects all the fingers
thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = true;
// ================= IDT =================
// ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.001;
// the width of the leg
leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10;
// the size of the bond pad
size = 0.00075;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square";
// ================= bond pad =================
// ================= text =================
info_block_offset_x=28;
info_block_offset_y=-5;
// total scale of infoblock
info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 0.5;
// ================= text =================
// ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4;
// ================= wafers =================
// ================= # IDTS =================
rows = 10;
cols = 10;
spacing_x = 4;
spacing_y = 7;
// ================= # IDTS =================
module params() {
parameter_text(
str("IDT ", substrate, "#", test_number),
[
str("c (ms): ", c),
str("freq (Hz): ", freq),
str("distance : ", distance),
str("n_fingers : ", n_fingers),
str("finger_length : ", finger_length),
str("gap : ", gap),
str("thickness : ", thickness),
str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle),
str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION)
]
);
}
translate([info_block_offset_x, -info_block_offset_y, 0])
scale([info_block_scale, info_block_scale, info_block_scale])
params();
wafer(4*0.0254*scale_unit);
translate([-spacing_x*rows/2, -spacing_y*cols/2, 0])
for (x=[0:rows]) {
for (y=[0:cols]) {
translate([spacing_x*x, spacing_y*y, 0])
bi_directional_idt(
c,
freq,
n_fingers,
distance,
finger_length,
gap,
thickness,
post_scale=scale_unit,
center = true,
has_bond_pads = true,
bond_pad_angle = leg_angle,
bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length,
bond_pad_size = size,
has_id = has_id_number,
id_translate = [1.7, -0.5, 0],
id_rot = [0, 0, 90],
id_number = x*rows + y
);
}
}

View File

@@ -105,7 +105,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );

View File

@@ -25,7 +25,11 @@ SCRIPT_VERSION="0.0.1";
// this really just need to be any mon font // this really just need to be any mon font
FONT="Ubuntu Sans Mono:style=Regular"; FONT="Ubuntu Sans Mono:style=Regular";
test_number = 1; test_number = 1;
// scale in m // scale in m
// 1e3 : mm
// 1e6 : um
// 1e9 : nm
scale_unit = 1e3; scale_unit = 1e3;
// ================= meta ================= // ================= meta =================
@@ -36,18 +40,18 @@ substrate = "LINBO";
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
freq = 50.0e6; freq = 10.0e6;
// $fs = (c/freq); // $fs = (c/freq);
// inout distance // inout distance
distance = 50; distance = 70;
// number of finger // number of finger
n_fingers = 50; n_fingers = 50;
// should be 50-70 // should be 50-70
finger_length = 60; finger_length = 50;
// for tweaking the design // for tweaking the design
gap = 0; gap = 0;
@@ -55,7 +59,7 @@ gap = 0;
// for tweaking the design // for tweaking the design
thickness = 0; thickness = 0;
has_id_number = false; has_id_number = true;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
@@ -67,8 +71,8 @@ bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=20; info_block_offset_x=32;
info_block_offset_y=-15; info_block_offset_y=-7;
info_block_scale=0.3; info_block_scale=0.3;
title_text_size = 4; title_text_size = 4;
prop_text_size = 2.5; prop_text_size = 2.5;
@@ -76,9 +80,9 @@ id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= IDT Pos ================= // ================= IDT Pos =================
idt_1_x_offset = -5; idt_1_x_offset = -15;
idt_1_y_offset = 0; idt_1_y_offset = 0;
idt_2_x_offset = 5; idt_2_x_offset = 15;
idt_2_y_offset = 0; idt_2_y_offset = 0;
// ================= IDT Pos ================= // ================= IDT Pos =================
@@ -101,7 +105,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );
@@ -128,6 +132,7 @@ bi_directional_idt(
bond_pad_leg_width = leg_width, bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length, bond_pad_leg_length = leg_length,
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number,
center = true center = true
); );
@@ -146,5 +151,7 @@ bi_directional_idt(
bond_pad_leg_width = leg_width, bond_pad_leg_width = leg_width,
bond_pad_leg_length = leg_length, bond_pad_leg_length = leg_length,
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number,
id_number = 1,
center = true center = true
); );

View File

@@ -89,7 +89,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );
@@ -156,7 +156,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent, id_number = i + number_of_idts_per_quadrent,
id_flip_dir = [1, -1, -1] id_scale = [1, -1, -1]
); );
} }
} }
@@ -182,7 +182,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent*2, id_number = i + number_of_idts_per_quadrent*2,
id_flip_dir = [-1, 1, 1] id_scale = [-1, 1, 1]
); );
} }
translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) { translate([i * idt_x_spacing, -idt_y_spacing/2, 0]) {
@@ -203,7 +203,7 @@ for (i=[0:number_of_idts_per_quadrent-1]) {
bond_pad_size = size, bond_pad_size = size,
has_id = has_id_number, has_id = has_id_number,
id_number = i + number_of_idts_per_quadrent*3, id_number = i + number_of_idts_per_quadrent*3,
id_flip_dir = [-1, -1, 1] id_scale = [-1, -1, 1]
); );
} }
} }

View File

@@ -15,75 +15,121 @@ include <../modules/wafer.scad>
// parameters window // parameters window
// ================= README ================= // ================= README =================
// ================= openscad prams ================= // ================= openscad prams =================
$fa = 1;
// min angle
$fa = 0.1;
// min size
$fs = 0.01; $fs = 0.01;
// ================= openscad prams ================= // ================= openscad prams =================
// ================= meta ================= // ================= meta =================
// version number of the current script
SCRIPT_VERSION="0.0.1"; SCRIPT_VERSION="0.0.1";
// this really just need to be any mon font
// font for layout
FONT="Ubuntu Sans Mono:style=Regular"; FONT="Ubuntu Sans Mono:style=Regular";
// the test number ref number for this set of IDTs
test_number = 1; test_number = 1;
// scale in m
// this is needed due to the min size value
// a pre scaler for the given values
scale_unit = 1e3; scale_unit = 1e3;
// ================= meta ================= // ================= meta =================
// ================= IDT ================= // ================= IDT =================
substrate = "LINBO";
// the underlying substrate
substrate = "SI";
// linbo // linbo
// the acoustic wave speed in the substrate
c = 3992.0; c = 3992.0;
// si // si
// c = 3159.0; // c = 3159.0;
freq = 50.0e6;
// $fs = (c/freq); // the target frequency of the IDT
freq = 10.0e6;
// inout distance // the distance between the input and output IDT
// should be between 100-200
distance = 50; distance = 50;
// number of finger // the number of fingers the IDT has
n_fingers = 50; n_fingers = 50;
// should be 50-70 // the length of the figure or aperture should be 50-70
finger_length = 60; finger_length = 50;
// for tweaking the design // the gap between both sides of the IDT (should be used for tweaking)
gap = 0; gap = 0;
// for tweaking the design // the thickness of the wire the connects all the fingers
thickness = 0; thickness = 0;
// adds an ID number to an IDT, useful if you have multiple on a wafer
has_id_number = false; has_id_number = false;
// ================= IDT ================= // ================= IDT =================
// ================= bond pad ================= // ================= bond pad =================
// the length of the bond pad leg from the edge of the IDT to the center of the bond pad
leg_length = 0.003; leg_length = 0.003;
// the width of the leg
leg_width = 0.00001875; leg_width = 0.00001875;
// the angle the leg comes off from the IDT,
// positive angle means the leg is angled away
// negitive angle means the leg is angled inwards
leg_angle = 10; leg_angle = 10;
// the size of the bond pad
size = 0.002; size = 0.002;
// the shape of the bond pad (not implemented)
bond_pad_shape = "square"; bond_pad_shape = "square";
// ================= bond pad ================= // ================= bond pad =================
// ================= text ================= // ================= text =================
info_block_offset_x=20;
info_block_offset_y=-15; info_block_offset_x=25;
info_block_offset_y=10;
// total scale of infoblock
info_block_scale=0.3; info_block_scale=0.3;
// the text size of the heading in the info block
title_text_size = 4; title_text_size = 4;
// the size of all the sub items in the info block
prop_text_size = 2.5; prop_text_size = 2.5;
// the size of the ID numbers in on the IDTS
id_text_size = 1; id_text_size = 1;
// ================= text ================= // ================= text =================
// ================= IDT Pos =================
idt_x_offset = 0;
idt_y_offset = 0;
// ================= IDT Pos =================
// ================= wafers ================= // ================= wafers =================
// the size of the wafer in inchs (why inch and not metric like everything else because its standard)
wafer_size_inch = 4; wafer_size_inch = 4;
// ================= wafers ================= // ================= wafers =================
// ================= IDT Pos =================
// the x offset of the IDT from the center
idt_x_offset = 0;
// the y offset of the IDT from the center
idt_y_offset = 0;
// ================= IDT Pos =================
module params() { module params() {
parameter_text( parameter_text(
str("IDT ", substrate, "#", test_number), str("IDT ", substrate, "#", test_number),
@@ -98,7 +144,7 @@ module params() {
str("leg_length : ", leg_length), str("leg_length : ", leg_length),
str("leg_angle : ", leg_angle), str("leg_angle : ", leg_angle),
str("size : ", size), str("size : ", size),
str("feat. size (mm): ", (c/freq)*1e3), str("feat. size (mm): ", (c/freq)*1e3 / 4),
str("version : ", SCRIPT_VERSION) str("version : ", SCRIPT_VERSION)
] ]
); );