184 lines
8.5 KiB
OpenSCAD
184 lines
8.5 KiB
OpenSCAD
pcb_w = 80.1;
|
|
pcb_h = 105.0;
|
|
pcb_t = 1.85;
|
|
e = 0.001;
|
|
clear = 10;
|
|
wall_t = 1.5;
|
|
box_t = 26;
|
|
hole_diameter = 2.5;
|
|
hole_in=72.9;
|
|
hole_ctoc = hole_in + hole_diameter;
|
|
hole_out = 77.9;
|
|
hole_x_edge = 0.7;
|
|
hole_y_edge = 1.2;
|
|
midpair_y_dist = 73.15;
|
|
botpair_y_dist = 21.8;
|
|
bat_h = 26.5;
|
|
batr_h = 24.5;
|
|
bat_w = 51.8;
|
|
bat_t = 17.1;
|
|
batc_h = 36;
|
|
batc_w = 68;
|
|
standoff= 12;
|
|
pin_t = 4.5;
|
|
pin_dia = 2.0;
|
|
pin_t2 = 6;
|
|
pin_dia2 = 4.5;
|
|
screen_t = 5.1;
|
|
|
|
|
|
function allclear() = clear + wall_t;
|
|
function toppair_y() = (pcb_h/2)-hole_y_edge-(hole_diameter/2);
|
|
function toppair_x() = (pcb_w/2)-hole_x_edge-(hole_diameter/2);
|
|
function wall_x() = (pcb_w/2)+allclear()/2-wall_t/2;
|
|
function wall_y() = (pcb_h/2)+allclear()/2-wall_t/2;
|
|
function midpair_x() = toppair_x();
|
|
function midpair_y() = toppair_y() - midpair_y_dist - hole_diameter;
|
|
function botpair_x() = toppair_x();
|
|
function botpair_y() = midpair_y() - botpair_y_dist - hole_diameter;
|
|
function pin_z() = pin_t2/2 + pin_t/2;
|
|
function pin_zs() = pin_t2/2;
|
|
function pin_zh(x) = pin_t2 + pin_t + x;
|
|
function batc_pyramid() = batc_h/sin(45)/2;
|
|
function batc_top() = pcb_h/2-bat_h/2-allclear()/2+batc_h/2;
|
|
function batc_bot() = pcb_h/2-bat_h/2-allclear()/2-batc_h/2;
|
|
function batc_cent() = pcb_h/2-bat_h/2-allclear()/2;
|
|
|
|
module boxbottom() {
|
|
difference() {
|
|
union() {
|
|
translate([0,0,-wall_t+e]) linear_extrude(wall_t) square([pcb_w+allclear(), pcb_h+allclear()], center=true);
|
|
|
|
|
|
// hole pins
|
|
translate([toppair_x(), toppair_y(), pin_z()+pcb_t]) cylinder(h = pin_zh(pcb_t), r = pin_dia/2, center=true, $fn=40);
|
|
translate([-toppair_x(), toppair_y(), pin_z()+pcb_t]) cylinder(h = pin_zh(pcb_t), r = pin_dia/2, center=true, $fn=40);
|
|
translate([midpair_x(), midpair_y(), pin_z()]) cylinder(h = pin_zh(0), r = pin_dia/2, center=true, $fn=40);
|
|
translate([-midpair_x(), midpair_y(), pin_z()]) cylinder(h = pin_zh(0), r = pin_dia/2, center=true, $fn=40);
|
|
translate([botpair_x(), botpair_y(), pin_z()]) cylinder(h = pin_zh(0), r = pin_dia/2, center=true, $fn=40);
|
|
translate([-botpair_x(), botpair_y(), pin_z()]) cylinder(h = pin_zh(0), r = pin_dia/2, center=true, $fn=40);
|
|
|
|
// standoff pins
|
|
translate([toppair_x(), toppair_y(), pin_zs()+pcb_t/2]) cylinder(h = pin_zs()*2+pcb_t, r = pin_dia2/2, center=true, $fn=40);
|
|
translate([-toppair_x(), toppair_y(), pin_zs()+pcb_t/2]) cylinder(h = pin_zs()*2+pcb_t, r = pin_dia2/2, center=true, $fn=40);
|
|
translate([midpair_x(), midpair_y(), pin_zs()]) cylinder(h = pin_zs()*2, r = pin_dia2/2, center=true, $fn=40);
|
|
translate([-midpair_x(), midpair_y(), pin_zs()]) cylinder(h = pin_zs()*2, r = pin_dia2/2, center=true, $fn=40);
|
|
translate([botpair_x(), botpair_y(), pin_zs()]) cylinder(h = pin_zs()*2, r = pin_dia2/2, center=true, $fn=40);
|
|
translate([-botpair_x(), botpair_y(), pin_zs()]) cylinder(h = pin_zs()*2, r = pin_dia2/2, center=true, $fn=40);
|
|
|
|
|
|
|
|
// corners
|
|
//translate([wall_x(), wall_y(), box_t/2]) cube([wall_t,wall_t,box_t], center=true);
|
|
//translate([-wall_x(), wall_y(), box_t/2]) cube([wall_t,wall_t,box_t], center=true);
|
|
//translate([wall_x(), -wall_y(), box_t/2]) cube([wall_t,wall_t,box_t], center=true);
|
|
//translate([-wall_x(), -wall_y(), box_t/2]) cube([wall_t,wall_t,box_t], center=true);
|
|
|
|
|
|
// walls
|
|
translate([wall_x(), 0, box_t/2]) cube([wall_t, pcb_h+allclear(), box_t], center=true);
|
|
translate([-wall_x(), 0, box_t/2]) cube([wall_t, pcb_h+allclear(), box_t], center=true);
|
|
translate([0, wall_y(), box_t/2]) cube([pcb_w+allclear(), wall_t,box_t], center=true);
|
|
translate([0, -wall_y(), box_t/2]) cube([pcb_w+allclear(), wall_t, box_t], center=true);
|
|
|
|
// battery compartment
|
|
translate([0,pcb_h/2-bat_h/2-allclear()/2,-1]) linear_extrude(3) square([batc_w+clear-e, batc_h+clear*1.2-e], center=true);
|
|
|
|
}
|
|
union() {
|
|
|
|
translate([0,pcb_h/2-bat_h/2-allclear()/2,-wall_t]) linear_extrude(wall_t+e) square([batc_w, batc_h], center=true);
|
|
//translate([0,pcb_h/2-bat_h/2-allclear()/2,0]) linear_extrude(wall_t*3+e) square([batc_w/2, batc_h+2], center=true);
|
|
|
|
// latch cuts
|
|
translate([-15,batc_top()-batc_h/4+4,0]) linear_extrude(wall_t*3+e) square([15, batc_h/2], center=true);
|
|
translate([15,batc_top()-batc_h/4+4,0]) linear_extrude(wall_t*3+e) square([15, batc_h/2], center=true);
|
|
translate([0,batc_bot()+batc_h/4-4,0]) linear_extrude(wall_t*3+e) square([25, batc_h/2], center=true);
|
|
|
|
// pyramid cuts
|
|
translate([-batc_w/2+batc_h/2,pcb_h/2-bat_h/2-allclear()/2,0]) rotate([0,0,45]) cylinder(h=wall_t*2,r1=batc_pyramid(),r2=batc_pyramid()-wall_t*4,$fn=4);
|
|
translate([0,pcb_h/2-bat_h/2-allclear()/2,0]) rotate([0,0,45]) cylinder(h=wall_t*2,r1=batc_pyramid(),r2=batc_pyramid()-wall_t*4,$fn=4);
|
|
translate([-batc_h/2+batc_w/2,pcb_h/2-bat_h/2-allclear()/2,0]) rotate([0,0,45]) cylinder(h=wall_t*2,r1=batc_pyramid(),r2=batc_pyramid()-wall_t*4,$fn=4);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
*color([1,1,0,0.4]) boxbottom();
|
|
|
|
module backstay() {
|
|
difference() {
|
|
cube([2, 1.5, bat_t*2/3], center=true);
|
|
translate([1.5,0,0]) rotate([0,-8,0]) cube([2.1, 1.6, bat_t*4/3], center=true);
|
|
}
|
|
}
|
|
|
|
module batc_latch()
|
|
{
|
|
union() {
|
|
translate([0,0,bat_t/2]) cube([4, 1, bat_t], center=true);
|
|
translate([0,-0.4,bat_t+0.05]) rotate([45,0,0]) cube([4, 1.2, 1.35], center=true);
|
|
translate([0,1-e,bat_t/3]) rotate([0,0,90]) backstay();
|
|
}
|
|
}
|
|
|
|
module batc_door() {
|
|
union() {
|
|
difference() {
|
|
union() {
|
|
translate([0, batc_cent(), (-wall_t+e)/2]) cube([batc_w-0.5, batc_h-0.5, wall_t], center=true);
|
|
// rear latches
|
|
latch_w = 4.2;
|
|
translate([15,batc_top()-batc_h/4+(10.2-latch_w/2),wall_t*0.375-e*10])
|
|
cube([14.6, latch_w, wall_t], center=true);
|
|
translate([-15,batc_top()-batc_h/4+(10.2-latch_w/2),wall_t*0.5-e*10])
|
|
cube([14.6, latch_w, wall_t], center=true);
|
|
|
|
// battery guides/latches
|
|
translate([-15,batc_cent()+(bat_h/2)+2,-e*10]) batc_latch();
|
|
translate([-15,batc_cent()-(batr_h/2)+2,-e*10]) rotate([0,0,180]) batc_latch();
|
|
|
|
translate([26,batc_cent(),0]) rotate([0,0,-90]) batc_latch();
|
|
translate([-26,batc_cent(),0]) rotate([0,0,90]) batc_latch();
|
|
|
|
}
|
|
//translate([-15,batc_top()-batc_h/4,wall_t*0.5-e*10])
|
|
//cube([14.6, latch_w, wall_t], center=true);
|
|
translate([0,pcb_h/2-bat_h-allclear()/2,(-wall_t+e)/2]) cube([24.5, 12, 10], center=true);
|
|
}
|
|
|
|
difference() {
|
|
union() {
|
|
translate([0,pcb_h/2-bat_h-allclear()/2,(-wall_t+e)/2]) cube([22, 15, wall_t], center=true);
|
|
translate([0,pcb_h/2-bat_h-allclear()/2,wall_t*-0.1]) rotate([-2.5,0,0]) cube([22, 15, wall_t/2], center=true);
|
|
}
|
|
// spring
|
|
cutw = 1.6;
|
|
cutd = 5.0;
|
|
translate([-cutd,pcb_h/2-bat_h-allclear()/2+1.5,(-wall_t+e)/2]) cube([21, cutw, 10], center=true);
|
|
translate([cutd,pcb_h/2-bat_h-allclear()/2+5,(-wall_t+e)/2]) cube([21, cutw, 10], center=true);
|
|
translate([cutd,pcb_h/2-bat_h-allclear()/2-2,(-wall_t+e)/2]) cube([21, cutw, 10], center=true);
|
|
//translate([-2,pcb_h/2-bat_h-allclear()/2+3,(-wall_t+e)/2]) cube([21, 1, 10], center=true);
|
|
//translate([-2,pcb_h/2-bat_h-allclear()/2-1,(-wall_t+e)/2]) cube([21, 1, 10], center=true);
|
|
//translate([-2,pcb_h/2-bat_h-allclear()/2-5,(-wall_t+e)/2]) cube([21, 1, 10], center=true);
|
|
|
|
// spring latch
|
|
translate([0,pcb_h/2-bat_h-allclear()/2-9.5,(-wall_t+e)/2]) rotate([-45,0,0]) cube([23, 4, 11], center=true);
|
|
translate([0,pcb_h/2-bat_h-allclear()/2-10.25,(-wall_t+e)/4-0.35]) rotate([75,0,0]) cube([23, 3, 9.8], center=true);
|
|
translate([0,pcb_h/2-bat_h-allclear()/2-10.65,(-wall_t+e)/0.75]) rotate([90,0,0]) cube([23, 3, 11.2], center=true);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
batc_door();
|
|
|
|
//color([1,0,0,0.2]) translate([0,0,pin_zs()*2]) linear_extrude(pcb_t) square([pcb_w, pcb_h], center=true);
|
|
//color([0,0,1,1.0]) translate([0,pcb_h/2-bat_h/2-allclear()/2,bat_t/2]) cube([bat_w, bat_h, bat_t], center=true);
|
|
//color([0,1,0.5,0.2]) translate([toppair_x()-2, toppair_y(), pin_t2+pcb_t+standoff/2]) cylinder(h = standoff, r = pin_dia/2, center=true, $fn=40);
|
|
//color([1,0.3,1,0.6]) translate([toppair_x()-2, toppair_y(), pin_t2+pcb_t+standoff+pcb_t/2]) cylinder(h = pcb_t, r = pin_dia/2, center=true, $fn=40);
|
|
//color([0,0.6,1,0.6]) translate([toppair_x()-2, toppair_y(), pin_t2+pcb_t+standoff+pcb_t+screen_t/2]) cylinder(h = screen_t, r = pin_dia/2, center=true, $fn=40);
|
|
//color([0,0.6,1,0.6]) translate([0,pcb_h/2-bat_h/2-allclear()/2,pin_t2+pcb_t+standoff+pcb_t]) linear_extrude(5) square([pcb_w-allclear(), bat_h], center=true);
|
|
|
|
|
|
|