1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-17 04:48:15 +01:00
Mendel90/scad/y-idler-bracket.scad
Chris Palmer 2f70825078 This version used for kits 7-
Nut traps moved further from the edge of most parts.
Fixed ribbon clamp slots too deep.
Modified for JHeadMK5.
Changed bed thermsitor type.
Extruder block is now thinner so it can protrude below the carriage.
The idler bolts no go the other way round so the nuts are captive instead of the heads.
60 mm carriage fan.
Spool holders now have tabs for nut traps instead of P clip.
Belt lengths corrected and rounded to tooth pitch.
Metal pulleys modelled.
exploded variable now 0/1 instead of boolean.
Dibond version now has mouse holes for wires and the Y wires run underneath the base.
Added jigs for inserting Jhead and drilling tubes.

Hobbed bolt not shows hob position on the BOM.
Everything in the kit is now in the model and so appears on the BOM.
   Added ribbon cable, wire, heat shrink sleeving, foam spunge, PLA sample.

Completed the kit build manual.
Sub assemblies restructured to reflect the build order.
View files added to make the assembly diagrams.

Fixed sheets.py not working first time run.
2012-11-17 10:33:00 +00:00

135 lines
5.1 KiB
OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// Holds the idler pulley
//
include <conf/config.scad>
use <y-motor-bracket.scad>
slot_length = 10;
slot = base_nut_traps ? 0 : slot_length;
axel_height = y_motor_height() + pulley_inner_radius - ball_bearing_diameter(Y_idler_bearing) / 2;
base_thickness = part_base_thickness + (base_nut_traps ? nut_trap_depth(base_nut) : 0);
wall = default_wall;
clearance = 1;
dia = washer_diameter(M5_penny_washer) + 2 * clearance;
tab_length = washer_diameter(base_washer) + 2 * clearance + slot;
length = dia + wall + tab_length;
function y_idler_travel() = slot_length;
function y_idler_clearance() = dia / 2 + slot_length / 2;
function y_idler_offset() = dia / 2 + wall + tab_length;
width = (wall + washer_thickness(M5_penny_washer) + washer_thickness(M4_washer) + ball_bearing_width(Y_idler_bearing)) * 2;
back_width = washer_diameter(base_washer) + 2 * clearance + 2 * wall;
height = axel_height + dia / 2;
module y_idler_bracket_stl() {
stl("y_idler_bracket");
color(y_idler_bracket_color) intersection() {
difference() {
rotate([90, 0, 90])
linear_extrude(height = width, center = true) //side profile
hull() {
translate([0, axel_height])
circle(dia / 2);
translate([-dia / 2 , 0])
square([length, base_thickness]); // base
square([dia / 2 + wall, height]); // upright
}
translate([0, - dia / 2, height + part_base_thickness]) // cavity for bearing
rotate([0, 90, 0])
rounded_rectangle(size = [height * 2, dia * 2, width - 2 * wall], r = dia / 2);
translate([0, dia / 2 + wall + tab_length / 2 + eta, height / 2 + base_thickness + eta]) // cavity for screw slot
cube([back_width - 2 * wall, tab_length, height], center = true);
if(base_nut_traps)
y_idler_screw_hole_position()
translate([0, 0, base_thickness])
nut_trap(screw_clearance_radius(base_screw), nut_radius(base_nut), base_thickness - part_base_thickness);
else
translate([0, dia / 2 + wall + slot / 2 + washer_diameter(base_washer) / 2 + clearance , 0]) // screw slot
rotate([0,0,90])
slot(r = screw_clearance_radius(base_screw), l = slot, h = 2 * base_thickness + 1, center = true);
translate([0, 0, axel_height]) // hole for axel
rotate([90, 0, 90])
teardrop_plus(r = M4_clearance_radius, h = width + 1, center = true);
}
union() { // plan profile
translate([0, (length - tab_length) / 2 - dia / 2, -1])
rounded_rectangle([width - eta, length - tab_length - eta, height + 2], r = 2, center = false);
translate([0, length - (tab_length + 5) / 2 - dia / 2 - eta, -1])
rounded_rectangle([back_width, tab_length + 5, height + 2], r = 2, center = false);
}
}
}
nut_offset = base_nut_traps ? -tab_length / 2 + nut_radius(base_nut) + 0.5 : 0;
module y_idler_screw_hole_position()
translate([0, dia / 2 + wall + tab_length / 2 + nut_offset,0])
child();
module y_idler_screw_hole()
y_idler_screw_hole_position()
if(base_nut_traps)
//translate([0, -slot_length / 2, 0])
rotate([0, 0, 90])
slot(h = 100, l = slot_length, r = screw_clearance_radius(base_screw), center = true);
else
base_screw_hole();
module y_idler_assembly() {
assembly("y_idler_assembly");
color(y_idler_bracket_color) render() y_idler_bracket_stl();
translate([0, 0, axel_height]) rotate([0, -90, 0]) {
explode([20, -20, 0])
for(side = [-1, 1]) {
translate([0, 0, (ball_bearing_width(Y_idler_bearing) / 2 + exploded) * side])
ball_bearing(BB624);
translate([0, 0, (ball_bearing_width(Y_idler_bearing) + exploded * 4) * side])
rotate([0, side * 90 - 90, 0])
washer(M4_washer);
translate([0, 0, (ball_bearing_width(Y_idler_bearing) + washer_thickness(M4_washer) + exploded * 6) * side])
rotate([0, side * 90 - 90, 0])
washer(M5_penny_washer);
}
translate([0, 0, width / 2])
screw_and_washer(M4_cap_screw, 30);
translate([0, 0, -width / 2])
rotate([180, 0, 0])
nut_and_washer(M4_nut, true);
}
y_idler_screw_hole_position()
translate([0, 0, part_base_thickness])
base_screw(part_base_thickness);
end("y_idler_assembly");
}
if(1)
y_idler_assembly();
else
y_idler_bracket_stl();