// PRUSA iteration3 // X end idler // GNU GPL v3 // Josef Průša and contributors // http://www.reprap.org/wiki/Prusa_Mendel // http://prusamendel.org // Alterations for reprap wilson by M. Rice include use use use // todo: // Bearing is being moved back into mount and separate tensioner // removed, need to ensure the width of the slot is wide enough to fix // the bearing plus 1-2mm clearance. Can calculate along with // x_box_width in settings.scad. Unlikely there's any reason to // complicate x_box_width by checking if bearing exceeds the width // calculated based rod diameter. // radius of screw hole for pulley (todo: ideally would adjust to // closest screw diameter to idler_bearing inner diameter) pulley_mount_radius = m4_diameter/2; // Y position of the pulley mount, adjusted to clear z bearing // fixme: not sure about z_delta/2 anymore pulley_mount_y = x_base_inside() // ensuring entire bearing fits inside idler + idler_bearing[0] // including flange (even if not using bearing guide since // bearings without will have their own flanges and the size of // those is not configurable) + (idler_assy_r_outer(idler_bearing) - idler_assy_r_inner(idler_bearing)) // and recess by 2mm + 2 - z_delta / 2; // Z position of pulley mount, adjusted so bottom of idler aligns with // bottom of motor pulley (note: in the x-carriage currently generated // this is backward since the belt runs above the carriage mounting // points) pulley_mount_z = x_motor_shaft_z () + (motor_pulley[0]/2 - idler_bearing[0]/2); module x_end_idler_base(){ x_end_base(); } module x_end_idler_holes(){ x_end_holes(); // tensioner mount translate([-20, pulley_mount_y, pulley_mount_z]) { #rotate([0, 90, 0]) cylinder(r=pulley_mount_radius, h=33, center=true, $fn=small_hole_segments); translate([15 - 2 * single_wall_width, 0, 0]) rotate([90, 0, 90]) cylinder(r=m4_nut_diameter_horizontal / 2, h=3, $fn=6); } } // Final part module x_end_idler(){ mirror([0,1,0]) difference(){ x_end_idler_base(); x_end_idler_holes(); } %translate([-14 - xy_delta / 2, 25, pulley_mount_z - (max(idler_width, 16) / 2)]) x_tensioner(); } module x_tensioner(len=50, idler_height=max(idler_bearing[0], 16)) { // todo: scal narrow_width with size of belt hole, if that becomes scalable idlermount(len=len, rod=m4_diameter / 2 + 0.5, idler_height=idler_height, narrow_len=30, narrow_width=9); } translate([-40, 0, 4 - bushing_xy[0]]) x_tensioner(); x_end_idler(); if (idler_bearing[3] == 1) { // bearing guides translate([-39, -60 - idler_bearing[0] / 2, 4 - bushing_xy[0]]) rotate([0, 0, 55]) { render() bearing_assy(); } }