From 46cdee1fae364e0e5fc4db98bd50f2bb75f99cd9 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 17 Nov 2015 22:08:13 +0000 Subject: [PATCH] tune 36t gear --- torsen.scad | 149 +++++++++++++++++++++++++++------------------------- 1 file changed, 78 insertions(+), 71 deletions(-) diff --git a/torsen.scad b/torsen.scad index 00e5874..c9d8bb9 100644 --- a/torsen.scad +++ b/torsen.scad @@ -1,73 +1,78 @@ $fn = 100; -union() { - difference() { -/* union() { - import("/var/home/vitali/LEGO Creations/cad/gear_36_bevel.stl"); - rotate([90, 0, 0]) cylinder(r=16, h=9, center=true, $fn=100); - }*/ - //import("/var/home/vitali/LEGO Creations/cad/gear_36_solid_pre.stl"); - rotate([90, 0, 0]) double_bevel_36t(); - translate([0, 5, 0]) rotate([90, 0, 0]) cylinder(r=30, h=2, center=true, $fn=100); - translate([0, -5, 0]) rotate([90, 0, 0]) cylinder(r=30, h=2, center=true, $fn=100); - rotate([90, 0, 0]) cylinder(r=2.5, h=10, center=true); - } - translate([0, 0, 8]) difference() { - union() { - hull() { - translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); - translate([0, 0, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); - } - hull() { - translate([-3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - translate([-3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - } - hull() { - translate([3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - translate([3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - } - translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=16, axlemesh=1.75); - /*intersection() { - union() { - hull() { - translate([-10, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - translate([-10, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - } - hull() { - translate([10, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - translate([10, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - } - hull() { - translate([-10, 8, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - translate([-10, 0, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - } - hull() { - translate([10, 8, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - translate([10, 0, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); - } - } - translate([0, 0, -8]) rotate([90, 0, 0]) cylinder(r=16, h=30, center=true); + +torsen_diff_36t(); + +module torsen_diff_36t() { + union() { + difference() { + /*union() { + import("/var/home/vitali/LEGO Creations/cad/gear_36_bevel.stl"); + rotate([90, 0, 0]) cylinder(r=16, h=9, center=true, $fn=100); }*/ + //import("/var/home/vitali/LEGO Creations/cad/gear_36_solid_pre.stl"); + rotate([90, 0, 0]) double_bevel_36t(); + translate([0, 5, 0]) rotate([90, 0, 0]) cylinder(r=30, h=2, center=true, $fn=100); + translate([0, -5, 0]) rotate([90, 0, 0]) cylinder(r=30, h=2, center=true, $fn=100); + rotate([90, 0, 0]) cylinder(r=2.5, h=10, center=true); } - //translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=40); - //translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=2.5, h=40, center=true); - } - translate([0, 0, -8]) difference() { - union() { - hull() { - translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); - translate([0, 0, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); + translate([0, 0, 8]) difference() { + union() { + hull() { + translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); + translate([0, 0, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); + } + hull() { + translate([-3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + translate([-3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + } + hull() { + translate([3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + translate([3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + } + translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=16, axlemesh=1.75); + /*intersection() { + union() { + hull() { + translate([-10, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + translate([-10, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + } + hull() { + translate([10, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + translate([10, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + } + hull() { + translate([-10, 8, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + translate([-10, 0, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + } + hull() { + translate([10, 8, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + translate([10, 0, -16]) rotate([90, 0, 90]) cylinder(r=4, h=4, center=true); + } + } + translate([0, 0, -8]) rotate([90, 0, 0]) cylinder(r=16, h=30, center=true); + }*/ } - hull() { - translate([-3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - translate([-3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - } - hull() { - translate([3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - translate([3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); - } - translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=16, axlemesh=1.75); + //translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=40); + //translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=2.5, h=40, center=true); + } + translate([0, 0, -8]) difference() { + union() { + hull() { + translate([0, 8, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); + translate([0, 0, 0]) rotate([90, 0, 90]) cylinder(r=3.2, h=8, center=true); + } + hull() { + translate([-3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + translate([-3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + } + hull() { + translate([3.6, 8, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + translate([3.6, 0, 0]) rotate([90, 0, 90]) cylinder(r=4, h=0.8, center=true); + } + translate([0, 8, 0]) rotate([90, 0, 90]) axle(h=16, axlemesh=1.75); + } + //translate([0, 8, 0]) rotate([90, 0, 90]) axle(); } - //translate([0, 8, 0]) rotate([90, 0, 90]) axle(); } } @@ -93,23 +98,25 @@ module axle(h = 24, axleradius = 2.4, axlemesh = 1.85, axleround = 0) } // An attempt to make something like standard 36t double bevel gear... +// std lego 36t gear outer radius = ~36.5 +// std lego 36t gear root radius = ~32.2 module double_bevel_36t() { intersection() { union() { translate([0, 0, 1.5]) linear_extrude(slices=5, height=2.5, scale=(36/2+1-2.5*tan(45))/(36/2+1)) - gear_concat_flat(mm_per_tooth=3.53, number_of_teeth=36, backlash=2, clearance=0.8, trim_factor=0.7); + gear_concat_flat(mm_per_tooth=3.4, number_of_teeth=36, backlash=2, clearance=0.8, trim_factor=0.7); translate([0, 0, -1.5]) rotate([180, 0, 0]) linear_extrude(slices=5, height=2.5, scale=(36/2+1-2.5*tan(45))/(36/2+1)) - gear_concat_flat(mm_per_tooth=3.53, number_of_teeth=36, backlash=2, clearance=0.8, trim_factor=0.7); + gear_concat_flat(mm_per_tooth=3.4, number_of_teeth=36, backlash=2, clearance=0.8, trim_factor=0.7); translate([0, 0, -4]) - cylinder($fn=48, h=8, r=3.14*(36/2-1)/3.1415926); + cylinder($fn=36*2, h=8, r=2.98*(36/2-1)/3.1415926); translate([0, 0, -1.5]) - cylinder($fn=48, h=3, r=3.14*(36/2+1)/3.1415926); + cylinder($fn=36*2, h=3, r=2.98*(36/2+1)/3.1415926+0.5); } translate([0, 0, -8]) linear_extrude(slices=5, height=16) - gear_concat_flat(mm_per_tooth=3.14, number_of_teeth=36); + gear_concat_flat(mm_per_tooth=2.98, number_of_teeth=36, pressure_angle=15, backlash=-0.5, clearance=-0.3); } } @@ -126,7 +133,7 @@ module gear_concat_flat( p = mm_per_tooth * number_of_teeth / pi / 2; //radius of pitch circle c = p + mm_per_tooth / pi - clearance; //radius of outer circle b = p*cos(pressure_angle); //radius of base circle - r = p-(c-p)-clearance; //radius of root circle + r = p - mm_per_tooth / pi; //radius of root circle t = mm_per_tooth/2-backlash/2; //tooth thickness at pitch circle k = -iang(b, p) - t/2/p/pi*180; //angle to where involute meets base circle on each side of tooth polygon(