# Rotating Bearing

## by Hank106, published Nov 21, 2012

Rotating Bearing by Hank106 Nov 21, 2012

## Description

A rotating bearing designed with OpenSCAD

view all
Â //Bearing Dimensions
//Basic Inputs
t=8; //thickness of bearing
OR=30; //Outer Radius of outer bearing race
IR=18; //Inner Radius of inner bearing race
PCT=.9; //Percent of t or d used to determine ball size

//Derived Inputs
d=OR-IR; //difference between Outer & Inner Radius of races
echo("bearing thickness=",t);
BR=(PCT/2)*min(t,d); //Ball bearing radius
echo("BR=",BR);
BC=(OR+IR)/2;Â  //Radius of ball bearing circle
GP=BR/3;Â  //Half of Gap between inner and outer race, set at 1/3 ball radius
M=1.000; //Multiplier to make space between races larger than ball bearing
N=round(((2*BC*PI)/(2*BR))+.5)-1;Â  //Number of balls in bearing
echo("N=",N);

\$fn=50;
//union adds ball bearings to race (disable if balls to be separate entitites)
//union(){
//difference forms races of bearing
difference(){
//disk forming OD of bearing
cylinder(t,OR,OR,center=true);
//remove ring to form Id of outer race and Od of inner race
rotate_extrude(convexity=20)translate([BC,0,0])circle(M*BR,center=true);
//remove disk to form ID of inner race
cylinder(t,IR,IR,center=true);
//opening between inner and outer race
translate([0,0,-1])difference(){
cylinder(t+2,BC+GP,BC+GP,center=true);
cylinder(t+2,BC-GP,BC-GP,center=true);}}
//adds ball bearings within race
for (i=[1:N])rotate(i*360/N*[0,0,1])translate([BC,0,0])sphere(BR,center=true,\$fn=50[ -0.35, 0.67, 0.11 ][ 188.50, 0.00, 27.80 ]);
//}

I took four shots at this with varying shells and fill values but was unsuccessful at getting the bearings to release. I would suggest scaling the spheres down a bit.

view more

view all

## Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

## Instructions

Revised .stl file to correct issue noted by BSchuler. The revised OpenSCAD code is below:

//Bearing Dimensions //Basic Inputs t=8; //thickness of bearing OR=30; //Outer Radius of outer bearing race IR=18; //Inner Radius of inner bearing race PCT=.8; //Percent of t or d used to determine ball size

//Derived Inputs d=OR-IR; //difference between Outer & Inner Radius of races echo("bearing thickness=",t); echo("Outer-Inner Bearing Radius=",d); BR=(PCT/2)min(t,d); //Ball bearing radius echo("BR=",BR); BC=(OR+IR)/2; //Radius of ball bearing circle GP=BR/3; //Half of Gap between inner and outer race, set at 1/3 ball radius M=1.01; //Multiplier to make space between races larger than ball bearing N=round(((2BCPI)/(2BR))+.5)-1; //Number of balls in bearing echo("N=",N);

\$fn=50; //Increase to 100 or greater to improve smoothness of bearings & races but this significantly increases time to render

//difference forms races of bearing difference(){ //disk forming OD of bearing cylinder(t,OR,OR,center=true); //remove ring to form Id of outer race and Od of inner race rotate_extrude(convexity=20)translate([BC,0,0])circle(MBR,center=true); //remove disk to form ID of inner race cylinder(t,IR,IR,center=true); //opening between inner and outer race translate([0,0,0])difference(){ cylinder(t+2,BC+GP,BC+GP,center=true); cylinder(t+2,BC-GP,BC-GP,center=true);}} //adds ball bearings within race for (i=[1:N])rotate(i360/N*[0,0,1])translate([BC,0,0])sphere(BR,center=true);

#### Size

Â //Bearing Dimensions
//Basic Inputs
t=8; //thickness of bearing
OR=30; //Outer Radius of outer bearing race
IR=18; //Inner Radius of inner bearing race
PCT=.9; //Percent of t or d used to determine ball size

//Derived Inputs
d=OR-IR; //difference between Outer & Inner Radius of races
echo("bearing thickness=",t);
BR=(PCT/2)*min(t,d); //Ball bearing radius
echo("BR=",BR);
BC=(OR+IR)/2;Â  //Radius of ball bearing circle
GP=BR/3;Â  //Half of Gap between inner and outer race, set at 1/3 ball radius
M=1.000; //Multiplier to make space between races larger than ball bearing
N=round(((2*BC*PI)/(2*BR))+.5)-1;Â  //Number of balls in bearing
echo("N=",N);

\$fn=50;
//union adds ball bearings to race (disable if balls to be separate entitites)
//union(){
//difference forms races of bearing
difference(){
//disk forming OD of bearing
cylinder(t,OR,OR,center=true);
//remove ring to form Id of outer race and Od of inner race
rotate_extrude(convexity=20)translate([BC,0,0])circle(M*BR,center=true);
//remove disk to form ID of inner race
cylinder(t,IR,IR,center=true);
//opening between inner and outer race
translate([0,0,-1])difference(){
cylinder(t+2,BC+GP,BC+GP,center=true);
cylinder(t+2,BC-GP,BC-GP,center=true);}}
//adds ball bearings within race
for (i=[1:N])rotate(i*360/N*[0,0,1])translate([BC,0,0])sphere(BR,center=true,\$fn=50[ -0.35, 0.67, 0.11 ][ 188.50, 0.00, 27.80 ]);
//}

I took four shots at this with varying shells and fill values but was unsuccessful at getting the bearings to release. I would suggest scaling the spheres down a bit.
Top