303 lines
7.5 KiB
OpenSCAD
303 lines
7.5 KiB
OpenSCAD
include <../modules/bidirectional_idt.scad>
|
|
include <../modules/parameter_text.scad>
|
|
include <../modules/wafer.scad>
|
|
include <../common_paramas.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";
|
|
FONT="SquareFont: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 = 17.0e8;
|
|
|
|
// 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 = false;
|
|
// ================= 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.003;
|
|
|
|
// 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.002;
|
|
|
|
// the shape of the bond pad (not implemented)
|
|
bond_pad_shape = "square";
|
|
|
|
// ================= bond pad =================
|
|
|
|
// ================= text =================
|
|
|
|
render_text = true;
|
|
|
|
// 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 = 1;
|
|
|
|
// ================= 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 =================
|
|
|
|
|
|
// ================= 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;
|
|
|
|
info_block_offset_x=25;
|
|
info_block_offset_y=-7;
|
|
|
|
// ================= IDT Pos =================
|
|
|
|
module params() {
|
|
parameter_text(
|
|
str("IDT ", substrate, "#", test_number),
|
|
[
|
|
str("C: ", c),
|
|
str("FREQ: ", 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: ", (c/freq)*1e3 / 4),
|
|
str("VERSION: ", SCRIPT_VERSION)
|
|
],
|
|
font=FONT
|
|
);
|
|
}
|
|
|
|
if (render_text) {
|
|
translate([info_block_offset_x, -info_block_offset_y, 0])
|
|
scale([info_block_scale, info_block_scale, info_block_scale])
|
|
params();
|
|
}
|
|
|
|
wafer(wafer_size_inch*25.4);
|
|
|
|
translate([0, 0, 0])
|
|
bi_directional_idt(
|
|
c,
|
|
freq,
|
|
n_fingers,
|
|
distance,
|
|
finger_length,
|
|
gap,
|
|
thickness,
|
|
post_scale=scale_unit,
|
|
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,
|
|
center = true,
|
|
echo_stats = true
|
|
);
|
|
|
|
|
|
|
|
// // ================= 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 = 25;
|
|
|
|
// // min size
|
|
// $fs = 0.1;
|
|
// // ================= openscad prams =================
|
|
|
|
// // ================= meta =================
|
|
// // version number of the current script
|
|
// SCRIPT_VERSION="0.0.1";
|
|
|
|
// // font for layout
|
|
// // FONT="Ubuntu Sans Mono:style=Regular";
|
|
// FONT="SquareFont: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 acoustic wave speed in the substrate
|
|
// c = 3992.0;
|
|
// // si
|
|
// // c = 3159.0;
|
|
|
|
// // the target frequency of the IDT
|
|
// freq = 10.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 = 50;
|
|
|
|
// // 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 = false;
|
|
// // ================= 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.003;
|
|
|
|
// // 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.002;
|
|
|
|
// // the shape of the bond pad (not implemented)
|
|
// bond_pad_shape = "square";
|
|
|
|
// // ================= bond pad =================
|
|
|
|
// // ================= text =================
|
|
|
|
// info_block_offset_x=25;
|
|
// info_block_offset_y=10;
|
|
// // 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 = 1;
|
|
|
|
// // ================= 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 ================= |