weight = "penny";
// weight = "608zz";
-bearing = "608zz";
+//bearing = "608zz";
+bearing = "sr188";
// bearing = "625rs";
weight_lip_overhang = 0.3;
penny_thickness = 1.52;
penny_radius = 19.05 / 2;
+sr188_radius = 12.74 / 2; // 0.5 / 2
+sr188_inner_radius = 6.3 / 2; // 0.2470 / 2
+sr188_thickness = 4.8; // 0.1895 inch
+sr188_cover_radius = sr188_radius;
+sr188_cap_footprint_radius = 12 / 2;
+
_608zz_radius = 22 / 2;
_608zz_inner_radius = 8.1 / 2;
_608zz_cover_radius = _608zz_radius;
bearing_radius =
(bearing == "608zz") ? _608zz_radius
: (bearing == "625rs") ? _625rs_radius
+ : (bearing == "sr188") ? sr188_radius
: 1/0;
bearing_window_radius = bearing_radius - bearing_lip_overhang - 1;
bearing_inner_radius =
(bearing == "608zz") ? _608zz_inner_radius
- : (bearing == "625rs") ? _608zz_inner_radius
+ : (bearing == "625rs") ? _625rs_inner_radius
+ : (bearing == "sr188") ? sr188_inner_radius
: 1/0;
bearing_cover_radius =
(bearing == "608zz") ? _608zz_cover_radius
: (bearing == "625rs") ? _625rs_cover_radius
+ : (bearing == "sr188") ? sr188_cover_radius
: 1/0;
bearing_cap_footprint_radius =
(bearing == "608zz") ? _608zz_cap_footprint_radius
: (bearing == "625rs" ) ? _625rs_cap_footprint_radius
+ : (bearing == "sr188" ) ? sr188_cap_footprint_radius
: 1/0;
bearing_thickness =
(bearing == "608zz") ? _608zz_thickness
: (bearing == "625rs") ? _625rs_thickness
+ : (bearing == "sr188") ? sr188_thickness
: 1/0;
spinner_height = penny_thickness * 5 + 2;
footprint_radius_safety = 0.2;
cap_height = 3;
bearing_thickness_safety = 0.6;
- finger_spot_height = cap_height / 10;
+ finger_spot_height = cap_height * 2 / 3;
+ stripes = 3;
difference() {
union() {
+ footprint_height
+ bearing_thickness / 2
- bearing_thickness_safety) {
- circle(bearing_inner_radius); }
- }
+ circle(bearing_inner_radius + 0.1); } }
translate([0, 0, -0.01]) {
cylinder(r1 = bearing_inner_radius,
r2 = bearing_inner_radius - tan(30) * finger_spot_height,
- h = finger_spot_height); } } }
+ h = finger_spot_height);
+ for(stripe = [0 : stripes - 1]) {
+ rotate((stripe / stripes) * 360) {
+ linear_extrude(height = finger_spot_height) {
+ polygon([[0, 0],
+ [bearing_cover_radius * 2, 0],
+ [cos(3 + 360 / (stripes * 2))
+ * bearing_cover_radius * 2,
+ sin(3 + 360 / (stripes * 2))
+ * bearing_cover_radius * 2]]); } } } } } }
module donut(height, footprint_radius) {
bread_radius = height / 2;
r = weight_radius + 0.15,
center = true); } } } } }
+module equilateral_triangle(radius){
+ polygon([[cos(0) * radius, sin(0) * radius],
+ [cos(120) * radius,
+ sin(120) * radius],
+ [cos(240) * radius,
+ sin(240) * radius]]); }
+
module spin_cosine(weight_radius,
weight_thickness,
bearing_radius,
round_extra,
wall,
arms); } } } }
- cylinder(h = actual_height + 0.1,
+ // bearing window hole
+ /*cylinder(h = actual_height + 0.1,
r = bearing_radius - bearing_lip_overhang,
- center = true);
+ center = true);*/
+ linear_extrude(height = actual_height + 0.1, center = true) {
+ intersection() {
+ equilateral_triangle(1.8 * bearing_radius);
+ circle(bearing_radius + 0.1); } }
+ // bearing cavity
cylinder(h = bearing_thickness + 0.05,
r = bearing_radius + 0.15,
center = true);
+ // arm holes
for(arm = [0 : arms - 1]) {
rotate(arm * (360 / arms)) {
translate([bearing_radius + wall + weight_radius, 0]) {
- cylinder(h = actual_height + 0.1,
- r = weight_radius - weight_lip_overhang,
- center = true);
+ // weight window hole
+ mirrored([0, 0, 1]) {
+ translate([0, 0, (weight_thickness + 0.05) / 2]) {
+ linear_extrude(height = wall + 0.1) {
+ intersection(){
+ equilateral_triangle(1.8 * weight_radius);
+ circle(weight_radius + 0.2); } } } }
+ // weight cavity
cylinder(h = weight_thickness + 0.05,
- r = weight_radius + 0.15,
+ r = weight_radius + 0.20,
center = true); } } } } }
module spin_donut(weight_radius,