You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
2.7 KiB

dim=[12.43,16.8,1.7]; // base dimensions
above=0.1; // base above the PCB clearance
color_base=[0.2,0.1,0.1];
// 2 small pins (small) GND
dim_pin_small=[1.1,0.4,0.1];
pos_pin_small=[
[-dim[0]/2-dim_pin_small[0]/2,dim[1]/2-2.75,0.05],
[ dim[0]/2+dim_pin_small[0]/2,dim[1]/2-14.45,0.05]
];
// mounting 4 side pins (big)
dim_pin_big=[1.1,1.4,0.1];
pos_pin_big=[
[-dim[0]/2-dim_pin_big[0]/2,dim[1]/2-4.45,0.05],
[ dim[0]/2+dim_pin_big[0]/2,dim[1]/2-4.45,0.05],
[-dim[0]/2-dim_pin_big[0]/2,dim[1]/2-12.75,0.05],
[ dim[0]/2+dim_pin_big[0]/2,dim[1]/2-12.75,0.05]
];
// Pins for signal solder contacts
pin_th = 0.1; // Thickness
pin_W = 0.4; // Pin width
pin_L = 7.3; // Total Length
pin_H = 0.3+pin_th/2; // Pin height (from bottom to top)
pin_l = 0.9; // Length of the bottom part
pin_a = 115; // Bending angle
pin_pitch = 1.1;
pin_count = 8;
color_pin="white";
// Bent pin
// _L - whole pin length
// _l - length of bottom part
// _H - whole pin height
// _th - pin thickness
// _a - bending angle
// _W - pin width
module pin(_L,_l,_H,_th,_a,_W)
{
// Internal variables
_d1 = _th*sin(_a) / (1-cos(_a));
_d2 = (_th-_H)*cos(_a) / sin(_a);
rotate([90,0,90])
// Extrude the following polygon
linear_extrude(height = _W, center = true, convexity = 10, twist = 0)
polygon([[0,0],
[_l,0],
[_l+_d2,_H-_th],
[_L,_H-_th],
[_L,_H],
[_l+_d2-_d1,_H],
[_l-_d1,_th],
[0,_th]]);
}
// Array of pins
// _cnt - number of pins
// _distance - distance between pin centres
module pins_array(_cnt, _distance)
{
if (_cnt>0)
color(color_pin)
{
for (_i = [0:_cnt-1])
{
translate([_distance*_i,0,0])
pin(pin_L,pin_l,pin_H,pin_th,pin_a,pin_W);
}
}
}
module SCHD3A100()
{
translate([0,0,dim[2]/2+above])
difference()
{
color(color_base)
cube(dim, center=true);
// cut SD card area
translate([0,0,dim[2]/2-1/2+0.01])
color(color_base)
cube([11,15,1],center=true);
// cut pin soldering area
translate([-1.3/2,dim[1]/2-10.15,0])
color(color_base)
cube([8.9,2,4],center=true);
// cut pin spring area
translate([-1.3/2,dim[1]/2-5,0])
color(color_base)
cube([8.9,6,4],center=true);
}
for(i=[0:len(pos_pin_big)-1])
translate(pos_pin_big[i])
color(color_pin)
cube(dim_pin_big,center=true);
for(i=[0:len(pos_pin_small)-1])
translate(pos_pin_small[i])
color(color_pin)
cube(dim_pin_small,center=true);
translate([3.2-(pin_count-1)*pin_pitch,-2.2,0])
pins_array(pin_count, pin_pitch);
}
SCHD3A100();