Loading

Rotating Bearing

by Hank106, published

Rotating Bearing by Hank106 Nov 21, 2012

Description

A rotating bearing designed with OpenSCAD

Recent Comments

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);
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.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.

More from 3D Printing Tests

view more

Makes

Liked By

view all

Tags

License

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag. Print Thing 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(((2*BC*PI)/(2*BR))+.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(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,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(i*360/N*[0,0,1])translate([BC,0,0])sphere(BR,center=true);

Comments

You must be logged in to post a comment.

Hank106 on Nov 24, 2012 said:

 //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);
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.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 ]);
//}

BSchuler on Nov 22, 2012 said:

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