diff options
Diffstat (limited to 'body/stand.scad')
| -rw-r--r-- | body/stand.scad | 318 |
1 files changed, 290 insertions, 28 deletions
diff --git a/body/stand.scad b/body/stand.scad index 8b801e4..73f7073 100644 --- a/body/stand.scad +++ b/body/stand.scad @@ -1,3 +1,4 @@ +include <body.scad> include <helpers.scad> include <holes.scad> @@ -21,9 +22,12 @@ bshs = back_screw_holder_s; base_wall_thickness = 10; bwt = base_wall_thickness; -side_wall_s = [bwt, 50, 55]; +side_wall_s = [bwt, 65, 55]; sws = side_wall_s; +limit_switch_pcb_s = [40, 17, 1.6]; +ls_pcb_s = limit_switch_pcb_s; + module profile_20x20x50() { scale([1, 1, 2]) @@ -31,39 +35,297 @@ module profile_20x20x50() import("Modular profile 20x20 - 973094/files/Profilo_20x20_L50.stl"); } -// back plate/motor holder -color("black", 0.5) -translate([0, -bps[1] / 2, bps[2] / 2 - 20]) -cube(bps, center = true); +// hot inserts for m4 are not needed +module m4_screw_hole(hole_side) +{ + screw_hole( + m = m4 + 0.2, + id = m4 + 0.5, + il = 15, + hd = m4_head_diameter + 1, + hh = m4_head_height, + hs = hole_side); +} + +module base_side_screw_holes() +{ + // right x offset + rxo = bshs[0] / 2 + bwt - m4_head_height; + lxo = -rxo; + // back y offset + byo = sws[1] * 1 / 8; + fyo = sws[1] * 7 / 8; + zo = -20 / 2; + + translate([lxo, byo, zo]) + m4_screw_hole(hole_side_left); -// back screw holder -color("black", 0.5) -translate([0, bshs[1] / 2 + bp_bsh_dist, bshs[2] / 2]) -cube(bshs, center = true); + translate([lxo, fyo, zo]) + m4_screw_hole(hole_side_left); -// profiles base -color("grey") + translate([rxo, byo, zo]) + m4_screw_hole(hole_side_right); + + translate([rxo, fyo, zo]) + m4_screw_hole(hole_side_right); +} + +limit_switch_pcb_screw_hole_d = 3.5; +lspshd = limit_switch_pcb_screw_hole_d; +// dist betw holes 19 14 +// dist betw hole side and short qpcb side = 1-1.1, +// and 1.3 for long pcb side +ls_pcb_h_delta_long = 1.3; +ls_pcb_h_delta_short = 1.1; +ls_pcb_h_delta_btw_holes = 19; + +// limit switch designed by makerbot.com +// instructions: www.bigtree-tech.com +// license: GPLv3 +module limit_switch() { - translate([-(bshs[0] - 20) / 2, 0, -20 / 2]) - rotate([-90, 0, 0]) - profile_20x20x50(); + translate([0, -ls_pcb_s[1] / 2, 0]) + union() + { + limit_switch_size = [13, 6.5, 6.5]; + lss = limit_switch_size; + // pcb + color("red", 0.7) + translate([0, 0, -ls_pcb_s[2] / 2]) + cube(ls_pcb_s, center = true); + + // switch itself + + // 6.5 + lss_xo = lss[0] / 2 - ls_pcb_s[0] / 2 + 6.5; + lss_yo = -lss[1] / 2 + ls_pcb_s[1] / 2; + lss_zo = -lss[2] / 2 - ls_pcb_s[2] / 2; + color("black", 0.7) + translate([lss_xo, lss_yo, lss_zo]) + cube(lss, center = true); + } + + d = lspshd; + x_delta = ls_pcb_h_delta_short; + y_delta = ls_pcb_h_delta_long; + xd = d / 2 - ls_pcb_s[0] / 2 + x_delta; + yd = -d / 2 - y_delta; + + // screw holes + color("green", 0.4) + union() + { + translate([xd, yd, 0]) + cylinder($fn = dToFn(d), d = d, h = 4, center = true); + + translate([xd + ls_pcb_h_delta_btw_holes, yd, 0]) + cylinder($fn = dToFn(d), d = d, h = 4, center = true); + } + + // holes to cut + color("blue", 0.4) + { + m3_id = m3_hole_insert_diameter; + m3_h = m3_hole_insert_height; + translate([xd, yd, m3_h / 2]) + cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h, center = true); + + translate([xd + ls_pcb_h_delta_btw_holes, yd, m3_h / 2]) + cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h, center = true); + } +} - translate([(bshs[0] - 20) / 2, 0, -20 / 2]) - rotate([-90, 0, 0]) - profile_20x20x50(); +module base() +{ + + // base + color("orange", 0.4) + { + // left wall + translate([-sws[0] / 2 - bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20]) + cube(sws, center = true); + + // right wall + translate([sws[0] / 2 + bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20]) + cube(sws, center = true); + + // top wall + top_s = [bshs[0] + bwt * 2, sws[1], bwt]; + translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2]]) + cube(top_s, center = true); + } +} + +module stand() +{ + // back plate/motor holder + color("black", 0.5) + translate([0, -bps[1] / 2, bps[2] / 2 - 20]) + cube(bps, center = true); + + // back screw holder + color("black", 0.5) + translate([0, bshs[1] / 2 + bp_bsh_dist, bshs[2] / 2]) + cube(bshs, center = true); + + // profiles base + color("grey") + { + translate([-(bshs[0] - 20) / 2, 0, -20 / 2]) + rotate([-90, 0, 0]) + profile_20x20x50(); + + translate([(bshs[0] - 20) / 2, 0, -20 / 2]) + rotate([-90, 0, 0]) + profile_20x20x50(); + } } -// base -color("orange", 0.4) -union() +module stand_top_m3_holes() { - translate([-sws[0] / 2 - bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20]) - cube(sws, center = true); + m3_id = m3_hole_insert_diameter; + m3_h = m3_hole_insert_height; - translate([sws[0] / 2 + bshs[0] / 2, sws[1] / 2, sws[2] / 2 - 20]) - cube(sws, center = true); + rxo = bshs[0] / 2 + bwt / 2; + lxo = -rxo; - top_s = [bshs[0] + bwt * 2, sws[1], bwt]; - translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2]]) - cube(top_s, center = true); -}
\ No newline at end of file + for (xo = [rxo, lxo], yo = [sws[1] * 1 / 6, sws[1] * 3 / 6, sws[1] * 5 / 6]) + { + translate([xo, yo, -20 + sws[2] + bwt + $tiny_padding]) + cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h * 2, center = true); + } +} + +module stand_top_m3_screw_holes() +{ + m3_id = m3_hole_insert_diameter; + m3_h = m3_hole_insert_height; + + rxo = bshs[0] / 2 + bwt / 2; + lxo = -rxo; + + + for (xo = [rxo, lxo], yo = [sws[1] * 1 / 6, sws[1] * 3 / 6, sws[1] * 5 / 6]) + { + translate([xo, yo, -20 + sws[2] + bwt + $tiny_padding]) + //cylinder($fn = dToFn(m3_id), d = m3_id, h = m3_h * 2, center = true); + scale([1, 1, 2]) + screw_hole( + m = m3, + id = m3_hole_insert_diameter, + il = m3_hole_insert_height * 2, + hd = m3_head_diameter, + hh = m3_head_height, + hs = hole_side_top); + } +} + +module base_to_print() +{ + difference() + { + base(); + translate([0, sws[1], -20 + sws[2]]) + limit_switch(); + base_side_screw_holes(); + stand_top_m3_holes(); + } +} + +module scanner_side_hole_cutters() +{ + id = 4; + + side_offsets = [ + back_bottom_side_hole_offset + [0, 0, 0], + back_top_side_hole_offset + [0, 0, 0], + top_side_hole_offset + [0, -id, -id], + front_bottom_side_hole_offset + [0, -id * 2, 0], + front_top_side_hole_offset + [0, -id * 2, 0] + ]; + + // left x offset + lxo = -main_frame_width_x / 2; + rxo = -lxo; + + color("red") + //translate([0, 0, 0]) + translate([0, wt, 0]) + + for (so = side_offsets) + { + translate(so + [lxo, 0, 0]) + screw_hole( + m = m2, + id = 4, + il = m2_hole_insert_height * 2, + hd = m2_head_diameter, + hh = m2_head_height, + hs = hole_side_left); + + translate(so + [rxo, 0, 0]) + screw_hole( + m = m2, + id = 4, + il = m2_hole_insert_height * 2, + hd = m2_head_diameter, + hh = m2_head_height, + hs = hole_side_right); + } +} + +module scanner_holder() +{ + top_s = [bshs[0] + bwt * 2, sws[1], wt * 2]; + cut_s = [main_frame_width_x, sws[1] * 2, wt + $tiny_padding * 2]; + + difference() + { + color("green", 0.3) + translate([0, top_s[1] / 2, top_s[2] / 2 + bshs[2] + bwt]) + cube(top_s, center = true); + + + color("red", 0.3) + translate([0, top_s[1] / 2, cut_s[2] / 2 + bshs[2] + bwt + wt]) + cube(cut_s, center = true); + } +} + +*stand(); + +*union() +{ + base(); + translate([0, sws[1], -20 + sws[2]]) + limit_switch(); + base_side_screw_holes(); + stand_top_m3_holes(); +} + +module scanner_holder_to_print() +{ + difference() + { + scanner_holder(); + stand_top_m3_screw_holes(); + } +} + +*translate([0, -back_wall_offset + wt, -20 + sws[2] + bwt + wt]) +translate([0, 0, laser_holder_size()[2] / 2 + wt]) +{ + scanner_side_hole_cutters(); + + color("yellow", 0.2) + body_to_print(); +} + +//stand_top_m3_holes(); +//stand_top_m3_screw_holes(); + +color("grey", 0.6) +base_to_print(); + +//scanner_holder(); +scanner_holder_to_print();
\ No newline at end of file |
