1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-17 12:58:16 +01:00
Mendel90/scad/y-belt-anchor.scad
Chris Palmer 1fab28d832 Pulleys and belts now T2.5 on kit version.
JHead now attached by three screws and washers.
New extruder breakout PCB.
Lots of instruction manual improvements from user feedback.
2012-12-24 13:15:00 +00:00

157 lines
6.3 KiB
OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// Anchors the belt to the bottom of the y carriage
//
include <conf/config.scad>
include <positions.scad>
wall = 2;
clearance = 2;
thickness = M3_nut_trap_depth + bearing_clamp_tab_height;
rad = 3;
clamp_thickness = 2.8;
width = belt_width(Y_belt) + 3 + washer_diameter(M3_washer) + clearance;
inner_width = (M3_nut_radius + wall) * 2;
depth = washer_diameter(M3_washer) + clearance;
length = depth + 2 * (2 * M3_nut_radius * cos(30) + wall);
tooth_height = belt_thickness(Y_belt) / 2;
tooth_pitch = belt_pitch(Y_belt);
tooth_width = tooth_pitch / 2;
function y_belt_anchor_width() = width;
function y_belt_anchor_depth() = depth;
module y_belt_anchor_holes() {
for(side = [-1, 1])
translate([0, side * (depth / 2 + M3_nut_radius * cos(30) + eta) + depth / 2, 0])
child();
}
module y_belt_anchor(height, toothed) {
h = height + belt_thickness(Y_belt) - belt_clearance;
recess = length - depth;
stl(str("y_belt_anchor", toothed ? "_toothed" : ""));
color(y_belt_anchor_color) union() {
difference() {
union() {
translate([0, depth / 2, h / 2]) // tall bit
rounded_rectangle([width, depth, h], r = rad);
translate([0, depth / 2, thickness / 2])
rounded_rectangle([inner_width, length, thickness], r = rad); // wide bit
for(side = [-1, 1]) // webs
for(end = [-1, 1])
translate([side * (M3_nut_radius + wall / 2 + eta), eta + (end + 1) * (depth / 2 - 2 * eta), thickness - eta])
rotate([90,0,90 * end])
right_triangle(width = (length - depth) / 2 - rad, height = h - thickness, h = wall);
}
translate([0, depth / 2, height + (h - height) / 2 + 2 * eta]) // slot for belt
cube([belt_width(Y_belt) + belt_clearance, depth + 1, h - height], center = true);
for(side = [-1, 1]) { // clamp screw nut traps
translate([side * (belt_width(Y_belt) / 2 + M3_clearance_radius), depth / 2, 0 ])
rotate([0,0,90/7 * (side + 1)])
nut_trap(M3_clearance_radius, M3_nut_radius, height - clamp_thickness);
translate([0, side * (depth / 2 + M3_nut_radius * cos(30) + eta) + depth / 2, thickness]) // mounting screw nut traps
nut_trap(M3_clearance_radius, M3_nut_radius, M3_nut_trap_depth);
}
translate([0, depth / 2, height + (h - height) / 2 + 2 * eta]) // slot to join screw holes
cube([belt_width(Y_belt) + M3_clearance_radius * 2, corrected_diameter(M3_clearance_radius * 2), h - height], center = true);
}
for(side = [-1, 1]) // blind the nut traps
translate([side * (belt_width(Y_belt) / 2 + M3_clearance_radius), depth / 2, height - clamp_thickness])
cylinder(r = M3_clearance_radius + 0.5, h = layer_height + eta);
if(toothed)
for(i = [-1:1])
if(abs(i) * tooth_pitch + tooth_width / 2 < depth / 2)
translate([0, depth / 2 + i * tooth_pitch, height - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
}
}
module y_belt_clip(toothed) {
stl(str("y_belt_clip", toothed ? "_toothed" : ""));
color(y_belt_clip_color) union() {
translate([0, 0, clamp_thickness / 2]) difference() {
rounded_rectangle([width, depth, clamp_thickness], r = rad);
for(side = [-1, 1]) // screw holes
translate([side * (belt_width(Y_belt) / 2 + M3_clearance_radius), 0, 0 ])
poly_cylinder(r = M3_clearance_radius, h = clamp_thickness + 1, center = true);
}
if(toothed)
for(i = [-1:1])
if(abs(i) * tooth_pitch + tooth_width / 2 < depth / 2)
translate([0, i * tooth_pitch, clamp_thickness - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
}
}
module y_belt_anchor_assembly(height, toothed) {
//assembly("y_belt_anchor_assembly");
color(y_belt_anchor_color) render() y_belt_anchor(height, toothed);
translate([0, depth / 2, height + belt_thickness(Y_belt) + clamp_thickness]) {
rotate([180, 0, 0])
color(y_belt_clip_color) render() y_belt_clip(!toothed);
//
// Clamp screws
//
for(side = [-1, 1])
translate([side * (belt_width(Y_belt) / 2 + M3_clearance_radius), 0, 0]) {
screw_and_washer(M3_cap_screw, 16);
translate([0, 0, -2 * clamp_thickness - belt_thickness(Y_belt)])
rotate([180, 0, 90/7 * (side + 1)])
nut(M3_nut, true);
}
}
for(side = [-1, 1])
translate([0, side * (depth / 2 + M3_nut_radius * cos(30) + eta) + depth / 2, 0]) {
translate([0, 0, thickness - M3_nut_trap_depth])
nut(M3_nut, true);
translate([0, 0, - sheet_thickness(Y_carriage)])
rotate([180, 0, 0])
screw_and_washer(M3_cap_screw, 16);
}
//end("y_belt_anchor_assembly");
}
module y_belt_anchor_stl() y_belt_anchor(Y_belt_clamp_height, false);
module y_belt_anchor_toothed_stl() y_belt_anchor(Y_belt_clamp_height, true);
module y_belt_clip_stl() y_belt_clip(false);
module y_belt_clip_toothed_stl() y_belt_clip(true);
module y_belt_anchors_stl() {
translate([0, 0, 0]) y_belt_anchor_toothed_stl();
translate([0, 25, 0]) y_belt_anchor_stl();
translate([15, 5, 0]) rotate([0,0,90])y_belt_clip_toothed_stl();
translate([15,30, 0]) rotate([0,0,90]) y_belt_clip_stl();
}
if(1)
y_belt_anchor_assembly(Y_belt_clamp_height, true);
else
y_belt_anchors_stl();