add offset gears

master
Vitaliy Filippov 2014-03-27 08:31:19 +00:00
parent 07534e14b8
commit 7cf07600a0
18 changed files with 112804 additions and 22 deletions

View File

@ -77,19 +77,23 @@ translate([0, 0, 16])
//clutchGear(32);
/* Gear with clutch fully offset to one side - useful for compact gearbox */
/* Gear with clutch fully offset to one side - useful for compact gearbox
because allows to make clutch gears smaller than 16t */
//offsetClutchGear(23);
//offsetClutchGear(9, gear_height=4);
//offsetClutchGear(23, gear_height=3.8);
/* Gear fully offset to one side */
/* Solid gear fully offset to one side */
//offsetGear(number_of_teeth=8, gear_height=3.8);
// Sample offset gear with 28 teeth and 4 holes
/* Sample offset gear with 28 teeth and 4 holes */
//gear28_4holes();
/* Gear with offset teeth, axle hole and sparse body */
offsetGearSparse(9, gear_height=3.9);
//offsetGearSparse(20, gear_height=3.8, jaggy=1);
/* Half-stud parametric gear with some holes */
@ -421,60 +425,62 @@ module pinHole(height=8) {
}
// Gear with offset teeth, axle hole and sparse body
module offsetGearSparse(number_of_teeth, gear_height=3.9) {
module offsetGearSparse(number_of_teeth, gear_height=3.9, jaggy=1) {
root_radius = 3.05*number_of_teeth/3.1415926/2 - 3.05/3.1415926;
difference() {
offsetGear(number_of_teeth, gear_height);
offsetGear(number_of_teeth, gear_height, jaggy);
translate([0, 0, -0.1])
difference() {
cylinder($fn=50, h=gear_height+0.2, r=root_radius-1.5);
cylinder($fn=50, h=gear_height+0.2, r=3.5);
translate([-root_radius-1, 1.5, 0]) cube(size=[root_radius*2+2, 2, 2*gear_height+0.4], center=false);
translate([-root_radius-1, -3.5, 0]) cube(size=[root_radius*2+2, 2, 2*gear_height+0.4], center=false);
translate([-root_radius-1, 3.1-0.75, 0]) cube(size=[root_radius*2+2, 1.5, 2*gear_height+0.4], center=false);
translate([-root_radius-1, -3.1-0.75, 0]) cube(size=[root_radius*2+2, 1.5, 2*gear_height+0.4], center=false);
rotate([0, 0, 90]) {
translate([-root_radius-1, 1.5, 0]) cube(size=[root_radius*2+2, 2, 2*gear_height+0.4], center=false);
translate([-root_radius-1, -3.5, 0]) cube(size=[root_radius*2+2, 2, 2*gear_height+0.4], center=false);
translate([-root_radius-1, 3.1-0.75, 0]) cube(size=[root_radius*2+2, 1.5, 2*gear_height+0.4], center=false);
translate([-root_radius-1, -3.1-0.75, 0]) cube(size=[root_radius*2+2, 1.5, 2*gear_height+0.4], center=false);
}
}
}
}
// Gear with offset teeth and axle hole
module offsetGear(number_of_teeth, gear_height=3.9) {
module offsetGear(number_of_teeth, gear_height=3.9, jaggy=1) {
difference() {
union() {
gear(number_of_teeth=number_of_teeth, mm_per_tooth=3.05, thickness=gear_height, clearance=-0.1);
translate([0, 0, gear_height]) cylinder($fs=0.5, h=8-gear_height, r=3.5);
}
// axle hole
axle(0, 0, -1, 10);
rotate([0, 0, -jaggy*360/number_of_teeth]) axle(0, 0, -1, 10);
}
}
// Gear with interface for driving ring, with offset teeth
// => The minimal printable size of such gear is 9 teeth...
// (8 teeth will probably be too thin at root circle)
module offsetClutchGear(number_of_teeth) {
module offsetClutchGear(number_of_teeth, gear_height=3.8) {
union() {
difference() {
union() {
gear(number_of_teeth=number_of_teeth, mm_per_tooth=3.05, thickness=4);
translate([0, 0, 3.9]) cylinder($fn=max(32,2*number_of_teeth), h=4.1, r=6.8);
gear(number_of_teeth=number_of_teeth, mm_per_tooth=3.05, thickness=gear_height+0.1);
translate([0, 0, gear_height]) cylinder($fn=max(32,2*number_of_teeth), h=8-gear_height, r=6.8);
}
difference() {
translate([0, 0, 4.8]) cylinder($fn=50, h=4, r=5.8);
translate([0, 0, 4.8]) cylinder($fn=50, h=4, r=3.3);
}
difference() {
translate([0, 0, -0.1]) cylinder($fn=50, h=2.9+0.1, r=3.05*(number_of_teeth/2-1)/3.1415926-1);
translate([0, 0, -0.2]) cylinder($fn=50, h=4, r=3.5);
translate([-0.5, -20, -0.1]) cube(size=[1, 40, 10]);
translate([-20, -0.5, -0.1]) cube(size=[40, 1, 10]);
if (number_of_teeth > 13) {
difference() {
translate([0, 0, -0.1]) cylinder($fn=50, h=gear_height-1+0.1, r=3.05*(number_of_teeth/2-1)/3.1415926-1);
translate([0, 0, -0.2]) cylinder($fn=50, h=4, r=3.5);
translate([-0.5, -20, -0.1]) cube(size=[1, 40, 10]);
translate([-20, -0.5, -0.1]) cube(size=[40, 1, 10]);
}
}
// round hole
translate([0, 0, -2]) cylinder($fn=50, h=12, r=2.5);
}
translate([0, 0, 3]) union() {
translate([0, 0, 2.9]) union() {
clutchTeeth();
rotate([0, 0, 90]) clutchTeeth();
rotate([0, 0, 180]) clutchTeeth();

6442
offset-gears/offset-12t.stl Normal file

File diff suppressed because it is too large Load Diff

9522
offset-gears/offset-16t.stl Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

11874
offset-gears/offset-20t.stl Normal file

File diff suppressed because it is too large Load Diff

12490
offset-gears/offset-23t.stl Normal file

File diff suppressed because it is too large Load Diff

5182
offset-gears/offset-9t.stl Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff