Clamp looking alright
This commit is contained in:
parent
cba83e780a
commit
2d583dc7d0
3 changed files with 189 additions and 0 deletions
110
hardware/enclosure/olsndot_base.scad
Normal file
110
hardware/enclosure/olsndot_base.scad
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
|
||||
/* A small, arbitrary unit to guard against rounding errors */
|
||||
eps = 0.1;
|
||||
alot = 1000;
|
||||
|
||||
/* Base PCB size */
|
||||
pcb_width = 90;
|
||||
pcb_height = 50;
|
||||
|
||||
bottom_thickness = 1.5;
|
||||
|
||||
screw_base_dia = 8;
|
||||
screw_base_h = 5;
|
||||
screw_nut_dia = 5.4;
|
||||
screw_nut_h = 6;
|
||||
screw_hole_dia = 3.5;
|
||||
screw_hole_h = 6;
|
||||
|
||||
module rounded_rect(w, h, r) {
|
||||
hull(){
|
||||
translate([w/2-r, h/2-r]) circle(r);
|
||||
translate([-(w/2-r), h/2-r]) circle(r);
|
||||
translate([w/2-r, -(h/2-r)]) circle(r);
|
||||
translate([-(w/2-r), -(h/2-r)]) circle(r);
|
||||
}
|
||||
}
|
||||
|
||||
module single_screw_base() {
|
||||
translate([0, 0, bottom_thickness-eps]) linear_extrude(height=screw_base_h+eps) {
|
||||
circle(d=screw_base_dia);
|
||||
translate([-screw_base_dia/2, 0]) square([alot, alot]);
|
||||
translate([0, -screw_base_dia/2]) square([alot, alot]);
|
||||
}
|
||||
}
|
||||
|
||||
w = pcb_width+10;
|
||||
h = pcb_height;
|
||||
l = 10;
|
||||
r = 10;
|
||||
t = 5;
|
||||
b = 5;
|
||||
s1_pos = [ w/2-l, h/2-b];
|
||||
s2_pos = [-w/2+r, -h/2+t];
|
||||
s3_pos = [ w/2-l, -h/2+t];
|
||||
s4_pos = [-w/2+r, h/2-b];
|
||||
module screw_bases() {
|
||||
intersection() {
|
||||
union() {
|
||||
translate(s1_pos) single_screw_base();
|
||||
translate(s2_pos) mirror([1,1,0]) single_screw_base();
|
||||
translate(s3_pos) mirror([0,1,0]) single_screw_base();
|
||||
translate(s4_pos) mirror([1,0,0]) single_screw_base();
|
||||
}
|
||||
cube([w+eps, h+eps, alot], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module single_screw_hole() {
|
||||
translate([0, 0, bottom_thickness+screw_base_h+eps])
|
||||
mirror([0,0,1])
|
||||
union() {
|
||||
cylinder(h=screw_nut_h+eps, d=screw_nut_dia);
|
||||
cylinder(h=screw_hole_h+eps, d=screw_hole_dia);
|
||||
}
|
||||
}
|
||||
|
||||
module screw_holes() {
|
||||
translate(s1_pos) single_screw_hole();
|
||||
translate(s2_pos) mirror([1,1,0]) single_screw_hole();
|
||||
translate(s3_pos) mirror([0,1,0]) single_screw_hole();
|
||||
translate(s4_pos) mirror([1,0,0]) single_screw_hole();
|
||||
}
|
||||
|
||||
tab_w = 20;
|
||||
tab_h = 30;
|
||||
tab_thickness = 3;
|
||||
tab_hole_d = 9;
|
||||
module screw_tab() {
|
||||
difference() {
|
||||
translate([-tab_h/2, -eps, 0]) cube([tab_h, tab_w+eps, tab_thickness]);
|
||||
rotate([0, 0, -50]) translate([-alot/2, tab_h*0.6, -eps]) cube([alot, alot, tab_h+2*eps]);
|
||||
rotate([0, 0, 50]) translate([-alot/2, tab_h*0.6, -eps]) cube([alot, alot, tab_thickness+2*eps]);
|
||||
translate([0, tab_w/2, -eps]) cylinder(d=tab_hole_d, h=tab_thickness+eps*2);
|
||||
}
|
||||
}
|
||||
|
||||
wall_height = bottom_thickness + 3;
|
||||
wall_thickness = 1.5;
|
||||
|
||||
cutout_w = 25;
|
||||
cutout_h = 70;
|
||||
|
||||
module carrier() {
|
||||
union() {
|
||||
difference() {
|
||||
translate([0, 0, wall_height/2]) cube([w, h, wall_height], center=true);
|
||||
translate([0, 0, bottom_thickness + alot/2]) cube([w-wall_thickness*2+eps, h-wall_thickness*2+eps, alot], center=true);
|
||||
cube([cutout_h, cutout_w, alot], center=true);
|
||||
}
|
||||
difference() {
|
||||
screw_bases();
|
||||
screw_holes();
|
||||
}
|
||||
translate([0, h/2, 0]) screw_tab();
|
||||
mirror([0,1,0]) translate([0, h/2, 0]) screw_tab();
|
||||
}
|
||||
}
|
||||
|
||||
carrier($fn=25);
|
||||
59
hardware/enclosure/olsndot_clamp_base.scad
Normal file
59
hardware/enclosure/olsndot_clamp_base.scad
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
eps = 0.01;
|
||||
|
||||
module clamp(l=90, w=20, h=10, d1=40, o=10, hdia1=5, hdia2=10, hd=1, nw=7.8, nd=3, notch_sf=0.75, notch_d=5, notch_a=10, notch_o=1, edge_a=10, edge_d=22) {
|
||||
translate([-h-l/2, -w/2, 0]) union() {
|
||||
translate([l+h-notch_d, 0, 0]) intersection() {
|
||||
difference() {
|
||||
cube([d1, w, d1]);
|
||||
//scale([notch_sf, 1, 1]) translate([(d1-h)/2, 0, h+(d1-h)/2]) rotate([0, -135, 0]) translate([0, -eps/2, 0]) cube([d1, w+eps, d1]);
|
||||
translate([notch_d, 0, h+notch_o]) mirror([1, 0, 0]) rotate([0, notch_a, 0]) translate([0, -eps/2, 0]) cube([d1, w+eps, d1]);
|
||||
}
|
||||
translate([d1-edge_a, 0, d1/2]) rotate([0, -90-45, 0]) cube([2*d1, w+eps, 2*d1]);
|
||||
translate([-d1-edge_d, 0]) cube([2*d1, w+eps, 2*d1]);
|
||||
}
|
||||
difference() {
|
||||
union() {
|
||||
cube ([l+h, w, h]);
|
||||
cube ([h, w, d1]);
|
||||
}
|
||||
rotate([0, 45, 0]) translate([-l/2, -eps/2, -d1/8*7]) cube([l, w+eps, d1]);
|
||||
translate([0, 0, d1]) rotate([0, 90+45, 0]) translate([-l/2, -eps/2, -d1/8*7]) cube([l, w+eps, d1]);
|
||||
translate([-eps/2, w/2, d1-o]) rotate([0, 90, 0]) union() {
|
||||
cylinder(d=hdia1, h=l);
|
||||
cylinder(d=hdia2, h=hd);
|
||||
translate([0, 0, h-nd/2]) hexagon(nw, nd+2*eps);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module hexagon(size, height) {
|
||||
boxWidth = size/1.75;
|
||||
for (r = [-60, 0, 60]) rotate([0,0,r]) cube([boxWidth, size, height], true);
|
||||
}
|
||||
|
||||
nut_dia = 5.3;
|
||||
nut_depth=5.5;
|
||||
nut_off_y = 80/2;
|
||||
nut_off_x = 20;
|
||||
|
||||
module base($fn=25, cw=90, sw=15, sh=10, strut_spacing=30, clamp_dist=90) {
|
||||
difference() {
|
||||
translate([0, -clamp_dist/2, 0]) union() {
|
||||
translate([0, clamp_dist, 0]) clamp(l=cw, h=sh);
|
||||
/*
|
||||
translate([0, 0, 0]) clamp(l=cw, h=sh);
|
||||
translate([-strut_spacing/2-sw, 0, 0]) cube([sw, clamp_dist, sh]);
|
||||
translate([ strut_spacing/2, 0, 0]) cube([sw, clamp_dist, sh]);
|
||||
*/
|
||||
}
|
||||
/*
|
||||
translate([nut_off_x, nut_off_y, -eps]) cylinder(d=nut_dia, h=nut_depth+eps);
|
||||
translate([nut_off_x, -nut_off_y, -eps]) cylinder(d=nut_dia, h=nut_depth+eps);
|
||||
translate([-nut_off_x, nut_off_y, -eps]) cylinder(d=nut_dia, h=nut_depth+eps);
|
||||
translate([-nut_off_x, -nut_off_y, -eps]) cylinder(d=nut_dia, h=nut_depth+eps);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
base();
|
||||
20
hardware/enclosure/olsndot_clamp_stoppers.scad
Normal file
20
hardware/enclosure/olsndot_clamp_stoppers.scad
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
w = 20;
|
||||
h = w;
|
||||
d = 5;
|
||||
hole_dia = 5;
|
||||
hole_d = 4;
|
||||
hole_fringe = 1.5;
|
||||
fringe_extra = 1.0;
|
||||
eps = 0.001;
|
||||
|
||||
module stopper() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([-w/2, -h/2, 0]) cube([w, h, d]);
|
||||
translate([0, 0, d-eps]) cylinder(d1=hole_dia+2*hole_fringe+2*fringe_extra, d2=hole_dia+2*fringe_extra, h=hole_fringe);
|
||||
}
|
||||
translate([0, 0, d+hole_fringe-hole_d]) cylinder(d=hole_dia, h=hole_d+eps);
|
||||
}
|
||||
}
|
||||
|
||||
stopper($fn=25);
|
||||
Loading…
Add table
Add a link
Reference in a new issue