add 625rs bearing choice
[ozzloy@gmail.com/3d-printables] / spin-data.scad
index 4d4fd0dec60f9b947024b8c9a82fec96f9878f67..e25eed3a61c2b9c2adb815834bcdd36ee9968cf8 100644 (file)
@@ -2,39 +2,59 @@
    see bottom for more license info */
 
 /* spin thing that erin likes */
-$fn = 50;
+$fn = 75;
 
 layer_height = 0.35;
 
 weight = "penny";
 // weight = "608zz";
+
 bearing = "608zz";
+// bearing = "625rs";
+
 weight_lip_overhang = 0.3;
 bearing_lip_overhang = weight_lip_overhang;
-// TODO: switch wall_thickness -> wall
-wall_thickness = 3;
 wall = 3;
 penny_thickness = 1.52;
 penny_radius = 19.05 / 2;
 
 _608zz_radius = 22 / 2;
 _608zz_inner_radius = 8.1 / 2;
-_608zz_cover_radius = 19.4 / 2;
+_608zz_cover_radius = _608zz_radius;
 _608zz_cap_footprint_radius = 12 / 2;
 _608zz_thickness = 7;
 
+_625rs_radius = 16 / 2;
+_625rs_inner_radius = 5 / 2;
+_625rs_thickness = 5;
+_625rs_cover_radius = _625rs_radius;
+_625rs_cap_footprint_radius = _625rs_inner_radius + 1;
+
 weight_radius = (weight == "penny") ? penny_radius : _608zz_radius;
 weight_thickness = (weight == "penny") ?
      penny_thickness * 5 : _608zz_thickness;
 
-bearing_radius = (bearing == "608zz") ? _608zz_radius : 1/0;
-bearing_inner_radius = (bearing == "608zz") ? _608zz_inner_radius : 1/0;
-bearing_cover_radius = (bearing == "608zz")
-                       ? _608zz_cover_radius + wall
-                       : 1/0;
+bearing_radius =
+  (bearing == "608zz") ? _608zz_radius
+  : (bearing == "625rs") ? _625rs_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
+  : 1/0;
+bearing_cover_radius =
+  (bearing == "608zz") ? _608zz_cover_radius
+  : (bearing == "625rs") ? _625rs_cover_radius
+  : 1/0;
 bearing_cap_footprint_radius =
-     (bearing == "608zz") ? _608zz_cap_footprint_radius : 1/0;
-bearing_thickness = (bearing == "608zz") ? _608zz_thickness : 1/0;
+  (bearing == "608zz") ? _608zz_cap_footprint_radius
+  : (bearing == "625rs" ) ? _625rs_cap_footprint_radius
+  : 1/0;
+bearing_thickness =
+  (bearing == "608zz") ? _608zz_thickness
+  : (bearing == "625rs") ? _625rs_thickness
+  : 1/0;
 
 spinner_height = penny_thickness * 5 + 2;
 arms = 3;
@@ -42,29 +62,50 @@ arms = 3;
 module cap(bearing_inner_radius,
            bearing_cap_footprint_radius,
            bearing_cover_radius,
-           bearing_thickness) {
-  footprint_height = 1.6;
-  footprint_radius_safety = 0.25;
+           bearing_thickness,
+           bearing_window_radius) {
+  footprint_height = 4.5;
+  footprint_radius_safety = 0.2;
   cap_height = 3;
-  bearing_cover_radius_safety = 0.75;
-  bearing_thickness_safety = 0.2;
+  bearing_thickness_safety = 0.6;
+  finger_spot_height = cap_height / 10;
 
   difference() {
     union() {
       cylinder(r1 = bearing_cover_radius - tan(30) * cap_height,
                r2 = bearing_cover_radius,
                h = cap_height);
+      linear_extrude(height = cap_height
+                              + footprint_height
+                              - 1.05) {
+        circle(bearing_window_radius - 1); }
       linear_extrude(height = cap_height + footprint_height) {
         circle(bearing_cap_footprint_radius - footprint_radius_safety); }
       linear_extrude(height = cap_height
                               + footprint_height
                               + bearing_thickness / 2
                               - bearing_thickness_safety) {
-        circle(bearing_inner_radius); } }
+        circle(bearing_inner_radius); }
+    }
     translate([0, 0, -0.01]) {
-      cylinder(r1 = bearing_inner_radius + tan(30) * (cap_height - 1),
-               r2 = bearing_inner_radius,
-               h = cap_height - 1); } } }
+      cylinder(r1 = bearing_inner_radius,
+               r2 = bearing_inner_radius - tan(30) * finger_spot_height,
+               h = finger_spot_height); } } }
+
+module donut(height, footprint_radius) {
+  bread_radius = height / 2;
+  rotate_extrude() {
+    translate([footprint_radius, 0]) {
+      circle(bread_radius); } } }
+
+module donut_hole(height, footprint_radius) {
+  difference() {
+    cylinder(r = footprint_radius, h = height, center = true);
+    donut(height, footprint_radius); } }
+
+module jelly_filled(height, footprint_radius) {
+  cylinder(r = footprint_radius, h = height, center = true);
+  donut(height, footprint_radius); }
 
 module fillet(r) {
   offset(r = -r) { offset(delta = r) { children(); } } }
@@ -136,7 +177,7 @@ module spin_slices(weight_radius,
 
   /* add one to have some thickness all around weight holes
      for first layer */
-  new_start = old_end / 8 + 1;
+  new_start = old_end / 16 + 1;
   new_end = old_end;
 
   old_range = old_end - old_start;
@@ -167,8 +208,8 @@ module spin_slices(weight_radius,
     cylinder(h = actual_height + 0.1,
              r = bearing_radius - bearing_lip_overhang,
              center = true);
-    cylinder(h = bearing_thickness + 0.1,
-             r = bearing_radius + 0.1,
+    cylinder(h = bearing_thickness + 0.05,
+             r = bearing_radius + 0.15,
              center = true);
     for(arm = [0 : arms - 1]) {
       rotate(arm * (360 / arms)) {
@@ -176,10 +217,30 @@ module spin_slices(weight_radius,
           cylinder(h = actual_height + 0.1,
                    r = weight_radius - weight_lip_overhang,
                    center = true);
-          cylinder(h = weight_thickness + 0.1,
-                   r = weight_radius + 0.1,
+          cylinder(h = weight_thickness + 0.05,
+                   r = weight_radius + 0.15,
                    center = true); } } } } }
 
+module spin_donut(weight_radius,
+                  weight_thickness,
+                  bearing_radius,
+                  bearing_thickness,
+                  weight_lip_overhang,
+                  bearing_lip_overhang,
+                  wall,
+                  arms) {
+  thicker_thickness = (bearing_thickness > weight_thickness)
+    ? bearing_thickness : weight_thickness;
+  height = thicker_thickness + wall * 2;
+
+  center_to_arm_center = bearing_radius + wall + weight_radius;
+
+  jelly_filled(height, bearing_radius);
+  for(arm = [0 : arms]) {
+    rotate(arm * (360 / arms)) {
+      translate([center_to_arm_center, 0, 0]) {
+        jelly_filled(height, weight_radius); } } } }
+
 /*
   This file is part of 3d-printables.