// todo:
-// - restore y and z offsets. shift y with bearing_z, z with
-// idler_bearing diameter to maintain a straight belt line
+// 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();
x_end_holes();
// tensioner mount
- translate([-20, -15 - z_delta / 2, 30]) {
- rotate([0, 90, 0]) cylinder(r=m4_diameter / 2, h=33, center=true, $fn=small_hole_segments);
+ 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);
}
- // create a notch for the X tensioner, to improve the length of
- // travel available
- // todo: doesn't scale with size of idler bearing correctly
- translate (v=[x_base_back() + x_box_width/2,(-sqrt(2)*22)/2 + x_base_inside() + idler_bearing[0],x_box_height/2]) difference() {
- rotate(a=[45,0,0]) cube(size=[x_box_width*2,22,22],center=true);
- translate(v=[0,14,0]) cube(size=[x_box_width*2,4,8],center=true);
- }
}
// Final part
x_end_idler_holes();
}
- %translate([-14 - xy_delta / 2, 25, 30.5 - (max(idler_width, 16) / 2)]) x_tensioner();
+ %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)) {