mirror of
https://github.com/nophead/Mendel90.git
synced 2025-08-08 14:26:29 +02:00
Cleaned up spool holder.
Now uses offset instead of Minkowski. Dowels stronger and better fit.
This commit is contained in:
Binary file not shown.
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Binary file not shown.
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,13 @@ include <conf/config.scad>
|
|||||||
include <positions.scad>
|
include <positions.scad>
|
||||||
use <wade.scad>
|
use <wade.scad>
|
||||||
|
|
||||||
bearing = BB608;
|
small_bearing = false;
|
||||||
|
|
||||||
|
bearing = small_bearing ? BB624 : BB608;
|
||||||
|
spool_screw = small_bearing ? M4_cap_screw : M8_cap_screw;
|
||||||
|
spool_penny_washer = small_bearing ? M5_penny_washer : M8_penny_washer;
|
||||||
|
spool_nut = screw_nut(spool_screw);
|
||||||
|
spool_washer = screw_washer(spool_screw);
|
||||||
|
|
||||||
thickness = 6;
|
thickness = 6;
|
||||||
wall = 2;
|
wall = 2;
|
||||||
@@ -21,7 +27,7 @@ hook = 8;
|
|||||||
hook_overlap = 3;
|
hook_overlap = 3;
|
||||||
tube_r = 4;
|
tube_r = 4;
|
||||||
socket_r = tube_r - min_wall;
|
socket_r = tube_r - min_wall;
|
||||||
dowel_r = socket_r - 0.1;
|
dowel_r = socket_r;
|
||||||
hook_r = 3;
|
hook_r = 3;
|
||||||
|
|
||||||
left = left_stay_x + sheet_thickness(frame) / 2;
|
left = left_stay_x + sheet_thickness(frame) / 2;
|
||||||
@@ -32,21 +38,21 @@ spool_y = gantry_Y + sheet_thickness(frame) + 10 + spool_height(spool) / 2;
|
|||||||
bearing_r = (spool_diameter(spool) + ball_bearing_diameter(bearing)) / 2;
|
bearing_r = (spool_diameter(spool) + ball_bearing_diameter(bearing)) / 2;
|
||||||
bearing_x = cos(angle) * bearing_r;
|
bearing_x = cos(angle) * bearing_r;
|
||||||
bearing_z = spool_z - sin(angle) * bearing_r;
|
bearing_z = spool_z - sin(angle) * bearing_r;
|
||||||
bearing_y = spool_width(spool) / 2 + ball_bearing_width(bearing) / 2 - washer_thickness(M8_penny_washer);
|
bearing_y = (spool_width(spool) + spool_rim_thickness(spool)) / 2;
|
||||||
|
|
||||||
bracket_width = right - (spool_x + bearing_x);
|
bracket_width = right - (spool_x + bearing_x);
|
||||||
bracket_height = height - bearing_z;
|
bracket_height = height - bearing_z;
|
||||||
top_tube_x = bracket_width - tube_r;
|
top_tube_x = bracket_width - tube_r;
|
||||||
top_tube_y = bracket_height + hook - tube_r;
|
top_tube_y = bracket_height + hook - tube_r;
|
||||||
bottom_tube_y = -bracket_height + tube_r;
|
bottom_tube_y = -bracket_height + tube_r;
|
||||||
middle_tube_x = washer_diameter(M8_washer) / 2 + 1 + tube_r;
|
middle_tube_x = washer_diameter(spool_washer) / 2 + 1 + tube_r;
|
||||||
|
|
||||||
dx = top_tube_x - middle_tube_x;
|
dx = top_tube_x - middle_tube_x;
|
||||||
dy = top_tube_y;
|
dy = top_tube_y;
|
||||||
|
|
||||||
tube_spacing = sqrt(dx * dx + dy * dy);
|
tube_spacing = sqrt(dx * dx + dy * dy);
|
||||||
|
|
||||||
width = spool_width(spool) - 2 * (thickness + washer_thickness(M8_washer) + washer_thickness(M8_penny_washer));
|
width = bearing_y * 2 - 2 * (thickness + washer_thickness(spool_washer) + ball_bearing_width(bearing) / 2);
|
||||||
|
|
||||||
function spool_holder_gap() = spool_y - width / 2 - thickness - (gantry_Y + sheet_thickness(frame));
|
function spool_holder_gap() = spool_y - width / 2 - thickness - (gantry_Y + sheet_thickness(frame));
|
||||||
|
|
||||||
@@ -166,7 +172,8 @@ nut_offset = frame_nut_traps ? -screw_tab / 2 + nut_radius(frame_nut) + 0.5 : 0;
|
|||||||
module tube(height) {
|
module tube(height) {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
cylinder(r = tube_r, h = height);
|
cylinder(r = tube_r + 0.001, h = height);
|
||||||
|
|
||||||
hull() {
|
hull() {
|
||||||
cylinder(r = dowel_r, h = height + thickness - wall - 2 * layer_height); // dowel
|
cylinder(r = dowel_r, h = height + thickness - wall - 2 * layer_height); // dowel
|
||||||
cylinder(r = dowel_r - layer_height, h = height + thickness - wall - layer_height); // chamferred end
|
cylinder(r = dowel_r - layer_height, h = height + thickness - wall - layer_height); // chamferred end
|
||||||
@@ -186,15 +193,15 @@ module tube(height) {
|
|||||||
//
|
//
|
||||||
// The outline of the bracket, triangle with rounded corners
|
// The outline of the bracket, triangle with rounded corners
|
||||||
//
|
//
|
||||||
module shape(width, height, offset = 0) {
|
module shape(width, height) {
|
||||||
hull() {
|
hull() {
|
||||||
circle(washer_diameter(M8_washer) / 2 + 1 + offset);
|
circle(washer_diameter(spool_washer) / 2 + 1);
|
||||||
|
|
||||||
translate([width - tube_r, height + hook - tube_r])
|
translate([top_tube_x, top_tube_y])
|
||||||
circle(tube_r + offset);
|
circle(tube_r);
|
||||||
|
|
||||||
translate([width - tube_r, -height + tube_r])
|
translate([top_tube_x, bottom_tube_y])
|
||||||
circle(tube_r + offset);
|
circle(tube_r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
@@ -206,32 +213,16 @@ module inner_shape(width, height) {
|
|||||||
rad = 4;
|
rad = 4;
|
||||||
inset = frame_bar_width + rad;
|
inset = frame_bar_width + rad;
|
||||||
|
|
||||||
minkowski() {
|
offset(rad)
|
||||||
difference() {
|
offset(-inset)
|
||||||
shape(width, height);
|
shape(width, height);
|
||||||
union() {
|
|
||||||
minkowski() {
|
|
||||||
difference() {
|
|
||||||
shape(width, height, 1);
|
|
||||||
shape(width, height);
|
|
||||||
translate([width -1, -inset])
|
|
||||||
square([3, 2 * inset + 1]);
|
|
||||||
}
|
|
||||||
circle(r = inset);
|
|
||||||
}
|
|
||||||
translate([width - inset - eta, -2 * inset])
|
|
||||||
square([2 * inset + 1 + 2 * eta, 4 * inset]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
circle(rad);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// A bisexual bracket
|
// A bisexual bracket
|
||||||
//
|
//
|
||||||
module spool_bracket(width, height, tube) {
|
module spool_bracket(width, height, tube) {
|
||||||
hole_r = screw_clearance_radius(M8_cap_screw);
|
hole_r = screw_clearance_radius(spool_screw);
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
@@ -240,8 +231,8 @@ module spool_bracket(width, height, tube) {
|
|||||||
union() {
|
union() {
|
||||||
shape(width, height);
|
shape(width, height);
|
||||||
hull() {
|
hull() {
|
||||||
translate([width - tube_r - eta, height - hook_overlap])
|
translate([width - tube_r, height - hook_overlap])
|
||||||
square([tube_r + 1, hook + hook_overlap]);
|
square([1, hook + hook_overlap]);
|
||||||
|
|
||||||
translate([width + sheet_thickness(frame) + hook - hook_r, height - hook_overlap + hook_r])
|
translate([width + sheet_thickness(frame) + hook - hook_r, height - hook_overlap + hook_r])
|
||||||
circle(hook_r);
|
circle(hook_r);
|
||||||
@@ -252,7 +243,7 @@ module spool_bracket(width, height, tube) {
|
|||||||
}
|
}
|
||||||
difference() {
|
difference() {
|
||||||
inner_shape(width, height);
|
inner_shape(width, height);
|
||||||
circle(washer_diameter(M8_washer) / 2 + 1 + 2 * tube_r);
|
circle(washer_diameter(spool_washer) / 2 + 1 + 2 * tube_r);
|
||||||
}
|
}
|
||||||
|
|
||||||
poly_circle(hole_r); // hole for axel screw
|
poly_circle(hole_r); // hole for axel screw
|
||||||
@@ -263,14 +254,14 @@ module spool_bracket(width, height, tube) {
|
|||||||
}
|
}
|
||||||
if(tube > 0) {
|
if(tube > 0) {
|
||||||
for(v = [
|
for(v = [
|
||||||
[top_tube_x, bottom_tube_y, thickness - eta],
|
[top_tube_x, bottom_tube_y, 0],
|
||||||
[top_tube_x, top_tube_y, thickness - eta],
|
[top_tube_x, top_tube_y, 0],
|
||||||
[middle_tube_x, 0, thickness - eta],
|
[middle_tube_x, 0, 0],
|
||||||
]) translate(v)
|
]) translate(v)
|
||||||
tube(tube);
|
tube(tube + thickness);
|
||||||
|
|
||||||
translate([width - tab_thickness, -height + tube_r, thickness - eta])
|
translate([width - tab_thickness, -height + tube_r, 0])
|
||||||
cube([tab_thickness, screw_tab + tube_r, screw_tab]);
|
cube([tab_thickness, screw_tab + tube_r, screw_tab + thickness]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([width - part_base_thickness, -height + 2 * tube_r + screw_tab / 2 + nut_offset, thickness + screw_tab / 2 + nut_offset])
|
translate([width - part_base_thickness, -height + 2 * tube_r + screw_tab / 2 + nut_offset, thickness + screw_tab / 2 + nut_offset])
|
||||||
@@ -309,32 +300,32 @@ module spool_bracket_assembly(male)
|
|||||||
ball_bearing(bearing);
|
ball_bearing(bearing);
|
||||||
|
|
||||||
translate([0, 0, ball_bearing_width(bearing) / 2 + exploded * 5])
|
translate([0, 0, ball_bearing_width(bearing) / 2 + exploded * 5])
|
||||||
washer(M8_washer)
|
washer(spool_washer)
|
||||||
translate([0, 0, exploded * 5])
|
translate([0, 0, exploded * 5])
|
||||||
washer(M8_penny_washer)
|
washer(spool_penny_washer)
|
||||||
screw(M8_cap_screw, 30);
|
screw(spool_screw, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
rotate([180, 0, 0])
|
rotate([180, 0, 0])
|
||||||
translate([0, 0, ball_bearing_width(bearing) / 2]) {
|
translate([0, 0, ball_bearing_width(bearing) / 2]) {
|
||||||
translate([0, 0, exploded * -10])
|
translate([0, 0, exploded * -10])
|
||||||
washer(M8_washer) translate([0, 0, exploded * 5]) group() {
|
washer(spool_washer) translate([0, 0, exploded * 5]) group() {
|
||||||
if(male)
|
if(male)
|
||||||
color(plastic_part_color("lime")) render() mirror([0, 1, 0]) spool_bracket_male_stl();
|
color(plastic_part_color("lime")) render() spool_bracket_male_stl();
|
||||||
else
|
else
|
||||||
color(plastic_part_color("red")) render() spool_bracket_female_stl();
|
color(plastic_part_color("red")) render() spool_bracket_female_stl();
|
||||||
|
|
||||||
translate([0, 0, thickness]) {
|
translate([0, 0, thickness]) {
|
||||||
translate([0, 0, exploded * 5])
|
translate([0, 0, exploded * 5])
|
||||||
washer(M8_washer)
|
washer(spool_washer)
|
||||||
nut(M8_nut, true);
|
nut(spool_nut, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(male)
|
if(male)
|
||||||
translate([right - (spool_x + bearing_x), height - bearing_z - tube_r, -bearing_y]) {
|
translate([right - (spool_x + bearing_x), -height + bearing_z + tube_r, -bearing_y]) {
|
||||||
translate([-part_base_thickness, -tube_r - screw_tab / 2 - nut_offset, width / 2 - screw_tab / 2 - nut_offset])
|
translate([-part_base_thickness, tube_r + screw_tab / 2 + nut_offset, width / 2 - screw_tab / 2 - nut_offset])
|
||||||
rotate([0, -90, 0])
|
rotate([0, -90, 0])
|
||||||
rotate([0, 0, 30])
|
rotate([0, 0, 30])
|
||||||
frame_screw(part_base_thickness);
|
frame_screw(part_base_thickness);
|
||||||
@@ -364,8 +355,7 @@ module spool_assembly(show_spool = true) {
|
|||||||
spool_bracket_assembly(false);
|
spool_bracket_assembly(false);
|
||||||
|
|
||||||
translate([spool_x + side * bearing_x, spool_y - side * bearing_y, bearing_z])
|
translate([spool_x + side * bearing_x, spool_y - side * bearing_y, bearing_z])
|
||||||
rotate([0, 0, 90 - side * 90])
|
rotate([0, 180, 90 + side * 90])
|
||||||
mirror([0, 1, 0])
|
|
||||||
spool_bracket_assembly(true);
|
spool_bracket_assembly(true);
|
||||||
|
|
||||||
if(side == -1)
|
if(side == -1)
|
||||||
@@ -418,15 +408,40 @@ module spool_holder_brackets_stl() {
|
|||||||
gap = 2 * tube_r + 2;
|
gap = 2 * tube_r + 2;
|
||||||
h = w / 2 + gap / sqrt(2);
|
h = w / 2 + gap / sqrt(2);
|
||||||
x = h - top_tube_x;
|
x = h - top_tube_x;
|
||||||
for(i = [0:3]) assign(odd = i % 2)
|
for(i = [0:3]) {
|
||||||
|
odd = i % 2;
|
||||||
rotate([0, 0, i * 90])
|
rotate([0, 0, i * 90])
|
||||||
translate([x, (odd ? -1 : 1) * (top_tube_y + bottom_tube_y) / 2,0])
|
translate([x, (odd ? -1 : 1) * (top_tube_y + bottom_tube_y) / 2,0])
|
||||||
if(odd)
|
if(odd)
|
||||||
spool_bracket_female_stl();
|
spool_bracket_female_stl();
|
||||||
else
|
else
|
||||||
spool_bracket_male_stl();
|
spool_bracket_male_stl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// A pair laid out for building
|
||||||
|
//
|
||||||
|
module spool_holder_short_brackets_stl() {
|
||||||
|
gap = sheet_thickness(frame) + hook + 2;
|
||||||
|
|
||||||
|
rotate([0, 0, 90]) {
|
||||||
|
spool_bracket_female_stl();
|
||||||
|
|
||||||
|
translate([2 * bracket_width + gap, hook, 0])
|
||||||
|
rotate([0, 0, 180])
|
||||||
|
spool_bracket_female_stl();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module spool_holder_tall_brackets_stl() {
|
||||||
|
rotate([0, 0, 90]) {
|
||||||
|
spool_bracket_male_stl();
|
||||||
|
|
||||||
|
translate([2 * bracket_width + 2, hook_overlap + 2, 0])
|
||||||
|
rotate([0, 0, 180])
|
||||||
|
spool_bracket_male_stl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module spool_holder_tall_brackets_x4_stl() {
|
module spool_holder_tall_brackets_x4_stl() {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user