1
0
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:
Chris Palmer
2016-01-04 21:00:27 +00:00
parent 769db9c588
commit e0ee0fa2da
5 changed files with 10956 additions and 11473 deletions

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

View File

@@ -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() {