diff --git a/libtest.png b/libtest.png
index db0ed77..d35b357 100644
Binary files a/libtest.png and b/libtest.png differ
diff --git a/libtest.scad b/libtest.scad
index b8b1b6b..67b2e50 100644
--- a/libtest.scad
+++ b/libtest.scad
@@ -165,8 +165,8 @@ o_rings_y = springs_y;
sealing_strip_y = springs_y + 20;
tubings_y = sealing_strip_y + 20;
pillars_y = tubings_y + 20;
-leadnuts_y = pillars_y + 40;
-pulleys_y = leadnuts_y +40;
+ball_bearings_y = pillars_y + 40;
+pulleys_y = ball_bearings_y +40;
hot_ends_y = pulleys_y + 60;
linear_bearings_y = hot_ends_y + 50;
sheets_y = linear_bearings_y + 100;
@@ -209,10 +209,7 @@ translate([x0, tubings_y])
translate([x0, pillars_y])
pillars();
-translate([x0, leadnuts_y ])
- leadnuts();
-
-translate([x0 + 60, leadnuts_y])
+translate([x0, ball_bearings_y])
ball_bearings();
translate([x0, pulleys_y])
@@ -252,7 +249,8 @@ translate([x0, psus_y]) {
}
zipties_y = 0;
-bulldogs_y = zipties_y + 40;
+bulldogs_y = zipties_y + 30;
+leadnuts_y = bulldogs_y + 50;
translate([x1, zipties_y])
zipties();
@@ -260,6 +258,10 @@ translate([x1, zipties_y])
translate([x1, bulldogs_y])
bulldogs();
+translate([x1, leadnuts_y])
+ leadnuts();
+
+
leds_y = 0;
carriers_y = leds_y + 40;
spades_y = carriers_y + 40;
diff --git a/readme.md b/readme.md
index d69d539..1e5ad9e 100644
--- a/readme.md
+++ b/readme.md
@@ -65,14 +65,11 @@ Also single bearing balls are modelled as just a silver sphere and a BOM entry.
| ```bb_bore(type)``` | Internal diameter |
| ```bb_colour(type)``` | Shield colour, "silver" for metal |
| ```bb_diameter(type)``` | External diameter |
+| ```bb_hub(type)``` | Inner rim thickness guesstimate |
| ```bb_name(type)``` | Part code without shield type suffix |
+| ```bb_rim(type)``` | Outer rim thickness guesstimate |
| ```bb_width(type)``` | Width |
-### Functions
-| Function | Description |
-|:--- |:--- |
-| ```bb_rim(type)``` | Inner and outer rim thickness |
-
### Modules
| Module | Description |
|:--- |:--- |
@@ -88,7 +85,8 @@ Also single bearing balls are modelled as just a silver sphere and a BOM entry.
| 1 | ```ball_bearing(BB6200)``` | Ball bearing 6200-2RS 10mm x 30mm x 9mm |
| 1 | ```ball_bearing(BB6201)``` | Ball bearing 6201-2RS 12mm x 32mm x 10mm |
| 1 | ```ball_bearing(BB624)``` | Ball bearing 624-2RS 4mm x 13mm x 5mm |
-| 4 | ``` bearing_ball(3)``` | Steel ball 3mm |
+| 1 | ```ball_bearing(BB6808)``` | Ball bearing 6808-2RS 40mm x 52mm x 7mm |
+| 5 | ``` bearing_ball(3)``` | Steel ball 3mm |
Top
diff --git a/tests/png/ball_bearings.png b/tests/png/ball_bearings.png
index fa84bc3..03cd177 100644
Binary files a/tests/png/ball_bearings.png and b/tests/png/ball_bearings.png differ
diff --git a/tests/png/kp_pillow_blocks.png b/tests/png/kp_pillow_blocks.png
index 7e81ba5..f7eabca 100644
Binary files a/tests/png/kp_pillow_blocks.png and b/tests/png/kp_pillow_blocks.png differ
diff --git a/vitamins/ball_bearing.scad b/vitamins/ball_bearing.scad
index 6ae1759..25517f1 100644
--- a/vitamins/ball_bearing.scad
+++ b/vitamins/ball_bearing.scad
@@ -26,36 +26,51 @@
//! Also single bearing balls are modelled as just a silver sphere and a BOM entry.
//
include <../utils/core/core.scad>
+include <../utils/tube.scad>
function bb_name(type) = type[0]; //! Part code without shield type suffix
function bb_bore(type) = type[1]; //! Internal diameter
function bb_diameter(type) = type[2]; //! External diameter
function bb_width(type) = type[3]; //! Width
function bb_colour(type) = type[4]; //! Shield colour, "silver" for metal
-function bb_rim(type) = bb_diameter(type) / 10; //! Inner and outer rim thickness
+function bb_rim(type) = type[5]; //! Outer rim thickness guesstimate
+function bb_hub(type) = type[6]; //! Inner rim thickness guesstimate
module ball_bearing(type) { //! Draw a ball bearing
shield = bb_colour(type);
suffix = shield == "silver" ? "ZZ " : "-2RS ";
vitamin(str("ball_bearing(BB", bb_name(type), "): Ball bearing ", bb_name(type), suffix, bb_bore(type), "mm x ", bb_diameter(type), "mm x ", bb_width(type), "mm"));
rim = bb_rim(type);
+ hub = bb_hub(type);
h = bb_width(type);
- od = bb_diameter(type);
- id = bb_bore(type);
-
- module tube(od, id, h)
- linear_extrude(h, center = true, convexity = 5)
- difference() {
- circle(d = od);
- circle(d = id);
- }
+ or = bb_diameter(type) / 2;
+ ir = bb_bore(type) / 2;
color("silver") {
- tube(od, od - rim, h);
- tube(id + rim, id, h);
+ $fn = 360;
+
+ rim_chamfer = rim / 5;
+ rotate_extrude()
+ hull() {
+ translate([or - rim / 2, 0])
+ square([rim, h - 2 * rim_chamfer], center = true);
+
+ translate([or - rim / 2 - rim_chamfer, 0])
+ square([rim - rim_chamfer, h], center = true);
+ }
+
+ hub_chamfer = hub / 5;
+ rotate_extrude()
+ hull() {
+ translate([ir + hub / 2, 0])
+ square([hub, h - 2 * hub_chamfer], center = true);
+
+ translate([ir + hub / 2 + hub_chamfer, 0])
+ square([hub - hub_chamfer, h], center = true);
+ }
}
- color(shield) tube(od - rim, id + rim, h - 1);
+ color(shield) tube(or - rim - eps, ir + hub + eps, h - 1);
if($children)
translate_z(bb_width(type) / 2)
diff --git a/vitamins/ball_bearings.scad b/vitamins/ball_bearings.scad
index 49ba38b..d05cdd1 100644
--- a/vitamins/ball_bearings.scad
+++ b/vitamins/ball_bearings.scad
@@ -16,11 +16,11 @@
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see .
//
-BB624 = ["624", 4, 13, 5, "blue"]; // 624 ball bearing for idlers
-BB608 = ["608", 8, 22, 7, "OrangeRed"]; // 608 bearings for wades
-BB6200 = ["6200", 10, 30, 9, "black"]; // 6200 bearings for KP pillow blocks
-BB6201 = ["6201", 12, 32, 10, "black"]; // 6201 bearings for KP pillow blocks
-
-ball_bearings = [BB624, BB608, BB6200, BB6201];
+BB624 = ["624", 4, 13, 5, "blue", 1.2, 1.2]; // 624 ball bearing for idlers
+BB608 = ["608", 8, 22, 7, "OrangeRed", 1.4, 2.0]; // 608 bearings for wades
+BB6200 = ["6200", 10, 30, 9, "black", 2.3, 3.6]; // 6200 bearings for KP pillow blocks
+BB6201 = ["6201", 12, 32, 10, "black", 2.4, 3.7]; // 6201 bearings for KP pillow blocks
+BB6808 = ["6808", 40, 52, 7, "black", 1.5, 1.5];
+ball_bearings = [BB624, BB608, BB6200, BB6201, BB6808];
use