Skip to content

Instantly share code, notes, and snippets.

@jediminer543
Last active August 4, 2017 17:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jediminer543/5fbd6618840fe94b042d4d8a82df06b8 to your computer and use it in GitHub Desktop.
Save jediminer543/5fbd6618840fe94b042d4d8a82df06b8 to your computer and use it in GitHub Desktop.
A bearing generator for OpenSCAD
$fn = 200;
tolerance = 0.1;
//Settings for 608 bearing
bearing_width = 7;
bearing_width_tb = 0.25;
bearing_diam_outer_ext = 22;
bearing_diam_outer_int = 19.2;
bearing_diam_inner_ext = 10.6;
bearing_diam_inner_int = 8;
bearing_hold_gap = 3;
bearing_custom_support = true;
/*
//Settings for 624 bearing
bearing_width = 4;
bearing_width_tb = 0.1;
bearing_diam_outer_ext = 10;
bearing_diam_outer_int = 8;
bearing_diam_inner_ext = 5.2;
bearing_diam_inner_int = 3;
bearing_hold_gap = 1;
bearing_custom_support = true;
*/
module cylinder_torus(h, d1, d2, r1=0, r2=0) {
if (r1) {
d1=2*r1;
}
if (r2) {
d2=2*r2;
}
difference() {
cylinder(h=h, d=d1);
translate([0,0,-0.05]){
cylinder(h=h+0.1, d=d2);
}
}
}
//inner wheel
cylinder_torus(bearing_width, bearing_diam_inner_ext, bearing_diam_inner_int);
//Outer Wheel
cylinder_torus(bearing_width, bearing_diam_outer_ext, bearing_diam_outer_int);
//"Balls" of bearing
//Work out nececsary count
bearing_diam_ball_centre = (bearing_diam_inner_ext+bearing_diam_outer_int)/2;
bearing_cerc_ball_centre = bearing_diam_ball_centre*PI;
bearing_diam_ball = (bearing_diam_outer_int-bearing_diam_inner_ext)/2;
bearing_count_ball = floor(bearing_cerc_ball_centre/bearing_diam_ball);
bearing_angle_ball = 360/bearing_count_ball;
for (i = [0: bearing_count_ball]) {
xpos = (bearing_diam_ball_centre/2)*cos(i*bearing_angle_ball);
ypos = (bearing_diam_ball_centre/2)*sin(i*bearing_angle_ball);
translate([xpos,ypos,(bearing_width_tb+tolerance)]) {
cylinder(h=(bearing_width-2*(bearing_width_tb+tolerance)), d=(bearing_diam_ball-tolerance));
}
}
//Bottom Plate
cylinder_torus(h=bearing_width_tb, d1=bearing_diam_outer_int, d2=bearing_diam_ball_centre+(bearing_hold_gap/2));
cylinder_torus(h=bearing_width_tb, d1=bearing_diam_ball_centre-(bearing_hold_gap/2), d2=bearing_diam_inner_int);
//Top Plate
translate([0,0,bearing_width-bearing_width_tb]) {
cylinder_torus(h=bearing_width_tb, d1=bearing_diam_outer_int, d2=bearing_diam_ball_centre+(bearing_hold_gap/2));
cylinder_torus(h=bearing_width_tb, d1=bearing_diam_ball_centre-(bearing_hold_gap/2), d2=bearing_diam_inner_int);
}
if (bearing_custom_support && bearing_hold_gap>(tolerance*2)) {
cylinder_torus(h=bearing_width_tb+(tolerance/2), d1=(bearing_diam_ball_centre+(bearing_hold_gap/2))-tolerance, d2=(bearing_diam_ball_centre-(bearing_hold_gap/2))+tolerance);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment