Added pulleys on Y sliders

This commit is contained in:
2022-03-03 09:53:56 +01:00
parent 11116136f2
commit a7119fd012
3 changed files with 107 additions and 16 deletions

View File

@@ -13,14 +13,18 @@ corner_size=30;
corner_offset = frame_size / 2 + wall_thickness;
rail_diam = 8;
// distance between centerline of rail and centerline of frame Y tube.
yrail_offset = (frame_size + corner_size / 2) / 2;
yrail_offset = (frame_size + corner_size) / 2;
ysled_extralen = frame_size; // on each end
// Both of these are distance from frame centerline
belt_height1 = frame_size / 2 + wall_thickness + belt_width / 2 + 2;
belt_height2 = belt_height1 + belt_width + 2;
// calculated
ysled_rail_spacing = (sled_ysize);
motor_shaft_xoffset = (corner_size - wall_thickness) / 2;
@@ -83,11 +87,12 @@ module rail_holder(in_x) {
}
}
// centered on
// centered on the rail.
module ysled_slider(spread, associated_parts = $preview) {
bom_item(label = str("ysled_slider(", spread, ")"));
sled_len = spread + frame_size;
sled_height = frame_size;
idler_spacing = spread / 3;
colorize("green")
render()
@@ -95,8 +100,11 @@ module ysled_slider(spread, associated_parts = $preview) {
rotate([-90, 0, 0]) {
difference() {
union() {
translate([-frame_size/2, -frame_size/2, 0])
cube([frame_size + 5, frame_size, sled_len]);
translate([-frame_size/2, -frame_size/2, 0])
cube([frame_size + 5, frame_size, sled_len]);
translate([pulley_sbend_offset - yrail_offset + motor_shaft_xoffset - pulley_clearance_rad - 4,
-frame_size / 2, 0])
cube([frame_size + 5, frame_size, sled_len]);
}
cylinder(d = bushing_id * 1.1, h = sled_len);
@@ -116,6 +124,23 @@ module ysled_slider(spread, associated_parts = $preview) {
}
// TODO: add posts for the idlers
//color("#f00")
translate([pulley_sbend_offset - yrail_offset + motor_shaft_xoffset, 0, 0]) {
translate([0, idler_spacing / 2, 0]) {
idler_post(belt_height = belt_height1);
}
translate([0, -idler_spacing / 2, 0]) {
*cylinder(d=3, h=30, $fs=1);
*idler(belt_height2);
rotate([0, 0, -90]) {
idler_post(belt_height = belt_height2);
}
}
}
translate([0, -sled_len/2, 0])
rotate([-90, 0, 0])
if (associated_parts) {
@@ -153,6 +178,43 @@ module nema17_housing() {
}
}
// belt height is the center of the belt.
// Roration is in Z axis, from +x/+y
module idler_post(belt_height, toothed=true) {
gap=0.5;
post_radius = pulley_clearance_rad + 4;
top_shelf_thickness = 4;
total_height = idler_zmargin.y + belt_height + top_shelf_thickness + gap;
slot_radius = pulley_clearance_rad;
slot_height = idler_zmargin.x + idler_zmargin.y + gap * 2;
difference() {
union() {
// outer shell
cylinder(h = total_height, r = post_radius);
translate([0, -post_radius, 0])
cube([post_radius, post_radius, total_height]);
translate([-post_radius,0, 0])
cube([post_radius, post_radius, total_height]);
}
translate([0,0,belt_height - idler_zmargin.x - gap]) {
cylinder(r = slot_radius, slot_height);
translate([-slot_radius, 0, 0])
cube([post_radius*2, post_radius * 2, slot_height]);
translate([0, -slot_radius, 0])
cube([post_radius * 2, post_radius * 2, slot_height]);
}
cylinder(d = 3, h=total_height + 1, $fn=60);
translate([0, 0, total_height - 2])
cylinder(r = 3, h = 3);
}
idler(height = belt_height);
}
module flcorner() {
bom_item();
rotate([0, 0, 0]) {
@@ -167,8 +229,8 @@ module flcorner() {
-nema17_face/2 - frame_size/2 - wall_thickness,
frame_size/2]) {
nema17();
translate([0, 0, 2]) {
pulley(16,6,1,7);
translate([0, 0, -frame_size/2 + belt_height2]) {
active_pulley();
}
}
@@ -188,8 +250,9 @@ module frcorner() {
-nema17_face/2 - frame_size/2 - wall_thickness,
frame_size/2]) {
nema17();
translate([0,0,2]) {
pulley(16, 1, 6, 7);
translate([0,0,belt_height1 - frame_size / 2]) {
rotate([180,0,0])
active_pulley();
}
}
}
@@ -393,6 +456,9 @@ module xsled2() {
}
}
// render()
// xsled2();