Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rack profile calculation is incorrect #5

Open
tombsar opened this issue Jul 15, 2020 · 3 comments
Open

Rack profile calculation is incorrect #5

tombsar opened this issue Jul 15, 2020 · 3 comments

Comments

@tombsar
Copy link
Contributor

tombsar commented Jul 15, 2020

The rack looks correct with the default pressure angle of 28 degrees, but changing this to a lower value produces an incorrect result with intersection between the rack and meshed gears.

This can be reproduced with the following example (replacing the example gears in the code):

n1 = 11; //red gear number of teeth
n5 = 8;  //gray rack
mm_per_tooth = 9; //all meshing gears need the same mm_per_tooth (and the same pressure_angle)
thickness    = 6;
hole         = 3;
height       = 12;

d1 =pitch_radius(mm_per_tooth,n1);

translate([ 0,    0, 0]) rotate([0,0, $t*360/n1])                 color([1.00,0.75,0.75]) gear(mm_per_tooth,n1,thickness,hole,pressure_angle=14.5);
translate([(-floor(n5/2)-floor(n1/2)+$t+n1/2-1/2)*9, -d1+0.0, 0]) rotate([0,0,0]) color([0.75,0.75,0.75]) rack(mm_per_tooth,n5,thickness,height,pressure_angle=14.5);
@north90
Copy link

north90 commented Aug 19, 2020

I noticed the same problem.

change t = a * cos(pressure_angle)-mm_per_tooth/10; (line119?)
to t = a * sin(pressure_angle)

@jonathanperret
Copy link

I hit this as well today. But I think the correct formula would be

t = a * tan(pressure_angle);

Since we are computing (t) how long the bottom side of a right triangle (of height a) needs to be so that the hypotenuse makes an angle of pressure_angle with the vertical side.

@alastaira
Copy link

Agreed, the current calculation is definitely incorrect. Can't get my head around whether sin() or tan() is the correct alternative though!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants