diff --git a/src/centrifugal_pump.scad b/src/centrifugal_pump.scad new file mode 100644 index 0000000000000000000000000000000000000000..764e812e881559e62a21a2ebb3c0f8110f7702b7 --- /dev/null +++ b/src/centrifugal_pump.scad @@ -0,0 +1,164 @@ +use <../include/short.scad> + +$fn = 100; + +ID = 25; // internal diameter +CW = .8; // case wall thickness +H = 5; // height of case +OD = 5; // output diameter +ODB = 3; // output pipe diameter +I_N = 6; // number of impeller blades +I_T = .8; // impeller tolerance +I_B = .8; // impeller base plate thickness +SH = 2; // motor shaft diameter +SL = 8; // motor shaft length +S_P = 4.5; // plastic hex shaft diameter +S_L = 35; // plastic hex shaft length +S_T = 1; // plastic hex shaft tube tolerance +M_H = 29; // mount height +M_A = 18; // height after motor is thicker +M_B = 2; // how much thicker +M_W = .8; // mount wall thickness + +module motor_mount_shape() { + module a() { + rotate([0,0,90]) intersection() { + square([100, 15.5], center=true); + circle(d=20); + } + } + module b() { + circle(d = 34); + } + b(); +} + +module case_inside_shape(r, od, th) { + ra = od / 4; + rt = r + th; + circle(r = rt); + intersection() { + tX(ra) circle(r = rt + ra); + tXY(-rt-1, -rt-ra) square([2*(rt + ra + 1), rt + ra + 1]); + } +} + +module case_output_shape(r, od, th) { + ra = od / 4; + rt = r + th; + tXY(r - od/2 - th,-1) square([od + th*2, rt*.6 + 1]); +} + +module case_inside(r = ID/2, od=5, h=10, th=0) { + ra = od / 4; + rt = r + th; + module flat() { case_inside_shape(r=r, od=od, th=th); } + module ct() { tXZ(r, H-ODB/2) rotate([-90,0,0]) children(); } + tZ(-th) linear_extrude(h + 2*th) flat(); + hull() { + tZ(-th) linear_extrude(h + 2*th) + case_output_shape(r=r, od=od, th=th); + ct() cylinder(h=rt*1.3, d=ODB + 2*th); + } + ct() cylinder(h=r*2 - th, d=ODB + 2*th); +} + +module motor_mount_inside() { + bh = 1.8; + bhp = 2; + module shape() { motor_mount_shape(); } + module base() { + translate([0,0,bh + bhp]) linear_extrude(M_H) shape(); + translate([0,0,bh + bhp + M_A]) linear_extrude(M_H-M_A) offset(M_B) shape(); + translate([0,0,bhp]) cylinder(h=bh + 1, d = 6.1); + cylinder(h=2*bhp+1, center=true, d=SH); + } + + base(); +} + +module impeller() { + a = 0; + base_rot = a - 53; + dir = -1; // -1: back, 1: front + module blade() { + t = .8; + // translate([0,-t/2,0]) cube([ID/2-I_T, t, H]); + intersection() { + d = ID*.8; + rX(a) tXY(d/2/sqrt(2), dir * d/2/sqrt(2)) diff() { + cylinder(d=d, h=3*H, center=true); + tZ(-1) cylinder(d=d-t*2, h=3*H+3, center=true); + } + tY(-4) cube([ID/2-I_T, 8, H]); + rZ(base_rot) cylinder(d=ID-2*I_T, h=H, $fn=I_N); + } + } + difference() { + union() { + rZ(base_rot) cylinder(h=I_B, d=ID-I_T*2, $fn=I_N); + for (i=[0:I_N]) { + rotate([0,0,i*360/I_N]) blade(); + } + cylinder(h=H, d=3); + } + //tZ(-1) cylinder(h=H+2, d=S_P + S_T, $fn=6); + } +} + +module plastic_shaft() { + diff() { + cylinder(d=S_P, h=S_L-1, $fn=6); + tZ(-1) cylinder(d=SH, h=SL+1); + } + +} + +module case() { + translate([0,0,CW]) difference() { + case_inside(r=ID/2, od=OD, h=H, th=CW); + case_inside(r=ID/2, od=OD, h=H); + cylinder(r=ID/2, h=100); + cylinder(d=S_P + 2*S_T, center=true, h=10); + } +} + +module main() { + rX(180) case(); + difference() { + h = S_L; + d = S_P + 2*S_T; + w = .4 * 4 * 2; + union() { + tZ(-CW) cylinder(h=h+CW, d=d + w); + hull() { + tZ(h) linear_extrude(1) offset(.8) + motor_mount_shape(); + tZ(h-S_L*.3) cylinder(d=d,h=1); + } + hull() { + tZ(-CW) cylinder(h=CW, d=2.5*d); + tZ(S_L * .2) cylinder(h=1, d=d); + } + tZ(h) tube(10, .4) motor_mount_shape(); + } + tZ(-CW-1) cylinder(h=h+CW+10, d=d); + tZ(h) cylinder(h=3, d = 6.1, center=true); + tXYZ(-10, -d*.4/2, -2) cube([20, d*.4, h]); + for(i = [0:6]) + rotate([0,0,i*60]) tX(26/2) { + cylinder(d = 2.5, h = 100, center=true); + tZ(S_L-4) cylinder(d = 5, h=4, center=true); + } + } +} + +module print() { + tZ(H + 2*CW) main(); + tY(ID + 2) tZ(H) union() { + rX(180) impeller(); + tZ(S_L-I_B-1) rX(180) plastic_shaft(); + } +} + +print(); diff --git a/src/gearbox.scad b/src/gearbox.scad new file mode 100644 index 0000000000000000000000000000000000000000..014faf6550c6fcd17db61f4c1d36205d4f86193c --- /dev/null +++ b/src/gearbox.scad @@ -0,0 +1,30 @@ +use <../include/gear.scad>; + +dist = 52.5; +n1 = 8; +n2 = 40; +echo("Ratio: ", n2 / n1); +mm_per_tooth = (dist / (n1 + n2)) * 2 * PI; + +module g(n) { + gear( + mm_per_tooth = mm_per_tooth, + number_of_teeth = n, + thickness = 6, + hole_diameter = 2, + clearance = .2, + backlash = .1 + ); +} + +difference() { + union() { + rotate([0,0,360/n2/2]) g(n2); + translate([0,0,-6/2]) cylinder(d=5, h=8, $fn=100); + } + translate([-1.3/2, -5/2, -6/2-1]) cube([1.3, 5, 5]); +} +translate([0, pitch_radius(mm_per_tooth, n1) + pitch_radius(mm_per_tooth, n2) + 2 ,0]) g(n1); + + +//# cube([5, dist, 5]); \ No newline at end of file