Extended rear corners to make space for idler screws
This commit is contained in:
4
TODO.md
4
TODO.md
@@ -1,8 +1,8 @@
|
|||||||
## Mechanical
|
## Mechanical
|
||||||
|
|
||||||
* Lengthen rear corner frame holders
|
|
||||||
* Add screw holes for feet in each corner
|
* Add screw holes for feet in each corner
|
||||||
* Add place to mount electronics (likely just an extra part)
|
* Add place to mount electronics (likely just an extra part)
|
||||||
|
* add slot for motor electronic connection
|
||||||
|
* Add screw holes for idler mounts in rear corner
|
||||||
## Electronics
|
## Electronics
|
||||||
|
|
||||||
|
|||||||
49
parts.scad
49
parts.scad
@@ -5,15 +5,13 @@ include <units.inc>
|
|||||||
|
|
||||||
frame_size = 20;
|
frame_size = 20;
|
||||||
wall_thickness = 2;
|
wall_thickness = 2;
|
||||||
corner_size = 30;
|
corner_size = 40; // length of mating surface between corner and frame
|
||||||
// The length along each edge that the corner bracket takes. I.e., if
|
// The length along each edge that the corner bracket takes. I.e., if
|
||||||
// you construct a frame of four corner brackets and 4 tubes of length
|
// you construct a frame of four corner brackets and 4 tubes of length
|
||||||
// $L-$corner_size, the distance between opposite tubes' centerlines
|
// $L-$corner_size, the distance between opposite tubes' centerlines
|
||||||
// will be $L.
|
// will be $L.
|
||||||
corner_offset = frame_size / 2 + wall_thickness;
|
corner_offset = frame_size / 2 + wall_thickness;
|
||||||
rail_diam = 8;
|
rail_diam = 8;
|
||||||
// distance between centerline of rail and centerline of frame Y tube.
|
|
||||||
yrail_offset = (frame_size + corner_size) / 2;
|
|
||||||
|
|
||||||
ysled_extralen = frame_size; // on each end
|
ysled_extralen = frame_size; // on each end
|
||||||
|
|
||||||
@@ -24,10 +22,13 @@ belt_height2 = belt_height1 + belt_width + 2;
|
|||||||
// calculated
|
// calculated
|
||||||
|
|
||||||
ysled_rail_spacing = (sled_ysize);
|
ysled_rail_spacing = (sled_ysize);
|
||||||
motor_shaft_xoffset = (corner_size - wall_thickness) / 2 + 1;
|
motor_shaft_xoffset = 15;
|
||||||
motor_mount_length_adjustment = 4;
|
motor_mount_length_adjustment = 4;
|
||||||
motor_mount_length = nema17_face + wall_thickness + motor_mount_length_adjustment;
|
motor_mount_length = nema17_face + wall_thickness + motor_mount_length_adjustment;
|
||||||
|
|
||||||
|
// distance between centerline of rail and centerline of frame Y tube.
|
||||||
|
yrail_offset = motor_shaft_xoffset + pulley_sbend_offset;
|
||||||
|
|
||||||
// Generates bar of length $l, centered on origin extending in +Z
|
// Generates bar of length $l, centered on origin extending in +Z
|
||||||
module tslot(l) {
|
module tslot(l) {
|
||||||
bom_item(printable = false, label = str("tslot(", l, "mm)"));
|
bom_item(printable = false, label = str("tslot(", l, "mm)"));
|
||||||
@@ -38,10 +39,10 @@ module tslot(l) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// A corner, with tubes extending in +x and +y.
|
// A corner, with tubes extending in +x and +y.
|
||||||
module corner_base() {
|
module corner_base(extension = wall_thickness) {
|
||||||
odim = frame_size / 2 + wall_thickness;
|
odim = frame_size / 2 + wall_thickness;
|
||||||
ldim = frame_size / 2 + corner_size;
|
ldim = frame_size / 2 + corner_size + (extension - wall_thickness);
|
||||||
|
actual_corner_offset = frame_size / 2 + extension;
|
||||||
cap_points = [
|
cap_points = [
|
||||||
[ -odim, -odim ], [ -odim, ldim ], [ odim, ldim ],
|
[ -odim, -odim ], [ -odim, ldim ], [ odim, ldim ],
|
||||||
[odim, odim], [ ldim, odim ],
|
[odim, odim], [ ldim, odim ],
|
||||||
@@ -52,31 +53,41 @@ module corner_base() {
|
|||||||
polygon(points = cap_points);
|
polygon(points = cap_points);
|
||||||
|
|
||||||
// two bars...
|
// two bars...
|
||||||
translate([ -frame_size / 2, corner_offset, -frame_size / 2 ])
|
translate([ -frame_size / 2, actual_corner_offset, -frame_size / 2 ])
|
||||||
cube([ frame_size, ldim, frame_size ]);
|
cube([ frame_size, ldim, frame_size ]);
|
||||||
translate([ corner_offset, -frame_size / 2, -frame_size / 2 ])
|
translate([ actual_corner_offset, -frame_size / 2, -frame_size / 2 ])
|
||||||
cube([ ldim, frame_size, frame_size ]);
|
cube([ ldim, frame_size, frame_size ]);
|
||||||
translate([ corner_offset, corner_offset, -frame_size / 2 ])
|
|
||||||
cube([ ldim, ldim, frame_size ]);
|
for (pos = [10, 30],
|
||||||
// translate([-odim - 1, -odim - 1, 0])
|
mirror_normal = [[0,1,0], [1,-1,0]]) {
|
||||||
// cube(ldim*2);
|
mirror(mirror_normal)
|
||||||
|
translate([pos + actual_corner_offset, 0, -odim])
|
||||||
|
union() {
|
||||||
|
cylinder(d = 8, h=2, center=true);
|
||||||
|
cylinder(d = 5, h = odim);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rail_holder_width = (yrail_offset - frame_size / 2 - wall_thickness) * 2;
|
||||||
|
|
||||||
module rail_holder(in_x) {
|
module rail_holder(in_x) {
|
||||||
odim = frame_size / 2 + wall_thickness;
|
odim = frame_size / 2 + wall_thickness;
|
||||||
ldim = frame_size / 2 + corner_size;
|
box_size = (yrail_offset - odim) * 2;
|
||||||
|
assert(box_size == rail_holder_width);
|
||||||
|
ldim = frame_size / 2 + box_size;
|
||||||
tube_offset = (corner_size) / 2 + wall_thickness;
|
tube_offset = (corner_size) / 2 + wall_thickness;
|
||||||
tube_rotation = in_x ? 90 : 0;
|
tube_rotation = in_x ? 90 : 0;
|
||||||
|
|
||||||
translated_rail_offset = yrail_offset - frame_size / 2 - wall_thickness;
|
translated_rail_offset = yrail_offset - frame_size / 2 - wall_thickness;
|
||||||
|
|
||||||
|
|
||||||
translate([ frame_size / 2 + wall_thickness, frame_size / 2 + wall_thickness, -frame_size / 2 - wall_thickness ]) {
|
translate([ odim, odim, -odim ]) {
|
||||||
difference() {
|
difference() {
|
||||||
cube([
|
cube([
|
||||||
!in_x ? corner_size - wall_thickness : 10,
|
!in_x ? box_size - wall_thickness : 10,
|
||||||
!in_x ? 10 : corner_size - wall_thickness,
|
!in_x ? 10 : box_size - wall_thickness,
|
||||||
wall_thickness * 2 + frame_size
|
wall_thickness * 2 + frame_size
|
||||||
]);
|
]);
|
||||||
translate(
|
translate(
|
||||||
@@ -291,7 +302,7 @@ module blcorner() {
|
|||||||
bom_item();
|
bom_item();
|
||||||
render()
|
render()
|
||||||
rotate([ 0, 0, 270 ]) {
|
rotate([ 0, 0, 270 ]) {
|
||||||
corner_base();
|
corner_base(extension = rail_holder_width);
|
||||||
rail_holder(true);
|
rail_holder(true);
|
||||||
}
|
}
|
||||||
translate([motor_shaft_xoffset + pulley_sbend_offset, 0, 0])
|
translate([motor_shaft_xoffset + pulley_sbend_offset, 0, 0])
|
||||||
@@ -307,7 +318,7 @@ module brcorner() {
|
|||||||
bom_item();
|
bom_item();
|
||||||
render()
|
render()
|
||||||
rotate([ 0, 0, 180 ]) {
|
rotate([ 0, 0, 180 ]) {
|
||||||
corner_base();
|
corner_base(extension = rail_holder_width);
|
||||||
rail_holder(false);
|
rail_holder(false);
|
||||||
}
|
}
|
||||||
translate([-(motor_shaft_xoffset + pulley_sbend_offset), 0, 0])
|
translate([-(motor_shaft_xoffset + pulley_sbend_offset), 0, 0])
|
||||||
|
|||||||
Reference in New Issue
Block a user