sb/feature/fanDuct #5
@ -19,6 +19,11 @@ module m3 (h=8, lb=1){
|
|||||||
//translate([0,0,-lb])cylinder(h+lb, d=4); // rutex insert
|
//translate([0,0,-lb])cylinder(h+lb, d=4); // rutex insert
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module m2 (h=8, lt=1){
|
||||||
|
translate([0,0,-lt])cylinder(h, d=1.5); // tapped M3
|
||||||
|
//translate([0,0,-lt])cylinder(h, d=3.2); // rutex insert
|
||||||
|
}
|
||||||
|
|
||||||
difference(){
|
difference(){
|
||||||
hull(){
|
hull(){
|
||||||
translate([rc, rc])cylinder(h=t, r=rc);
|
translate([rc, rc])cylinder(h=t, r=rc);
|
||||||
@ -51,6 +56,8 @@ difference(){
|
|||||||
translate([x,h-y,0])m3();
|
translate([x,h-y,0])m3();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
translate([10,0,t/2])rotate([-90,0,0])m2();
|
||||||
|
//cooling fan duct
|
||||||
|
//translate
|
||||||
}
|
}
|
||||||
|
|
118
coolingFanDuct.scad
Normal file
118
coolingFanDuct.scad
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
/* mount options */
|
||||||
|
wt = 2; // wall thickness (min 5mm for m2 inserts)
|
||||||
|
bpt = 7; // thickness of base plate
|
||||||
|
rd = 4 ; //inner radius of fan duct bend
|
||||||
|
wo = 25; // width of opening
|
||||||
|
|
||||||
|
zofsmnt = 5; // vertical distance between bottom of fan and bottom of base plate
|
||||||
|
xhbl = 22; // distance in x from fan to heat block
|
||||||
|
yhbl = -15.5; // distance in y from fan center to center of nozzle (negative to base plate)
|
||||||
|
zhbl = 27.2; // distance in z from fan to heat block underside
|
||||||
|
zbed = 6.5; // how far does the nozzle protrude out of the heat block?
|
||||||
|
xhbln = 11.5; // distance from heat block to nozzle center
|
||||||
|
zgap = 2; // gap left to bed/part
|
||||||
|
xgap = 3; // gap from duct to heat block
|
||||||
|
|
||||||
|
|
||||||
|
/* fan size */
|
||||||
|
wtfm = 5; // wall thickness fan mount
|
||||||
|
lf = 40; // length
|
||||||
|
tf = 10; // thickness
|
||||||
|
lhf = 34.8; // distance mounting holes
|
||||||
|
lof = 28; // length of outlet
|
||||||
|
wof = 8; // width of outlet
|
||||||
|
rc = 2; // radius corners
|
||||||
|
|
||||||
|
|
||||||
|
$fn= 100;
|
||||||
|
|
||||||
|
|
||||||
|
/* calculations */
|
||||||
|
ho = zbed-zgap-wt; // height of opening in duct tip
|
||||||
|
|
||||||
|
a = atan(zbed/(xhbln+xgap));
|
||||||
|
b = 90 - a;
|
||||||
|
|
||||||
|
vtb = sin(b) * rd; // vertical travel achieved in bend
|
||||||
|
htb = rd - (cos(b) * rd); // horizontal travel achieved in bend
|
||||||
|
|
||||||
|
xad = xhbl+((tf-wof)/2)-xgap-htb-wt;
|
||||||
|
zad = xad*tan(a);
|
||||||
|
lad = xad/cos(a);
|
||||||
|
lav = zhbl-vtb-zad;
|
||||||
|
|
||||||
|
xto = (2*wt)+wof > tf ? (2*wt)+wof : tf;
|
||||||
|
xo = xto>tf? wt : (tf-wof)/2;
|
||||||
|
xm = xto>tf?xto -(tf-wof)/2-0.01:tf-0.01;
|
||||||
|
y = lf+bpt;//+ bpt;
|
||||||
|
yo = (lf-lof)/2;
|
||||||
|
yb = lf/2-yhbl+wo/2>y-wt? y-wt-wo:lf/2-yhbl-wo/2 < wt? wt:lf/2-yhbl-wo/2; //(y-wo)/2;
|
||||||
|
|
||||||
|
yba = lf/2-yhbl+wo/2>y-wt? y-2*wt-wo:lf/2-yhbl-wo/2 < wt? 0:lf/2-yhbl-wo/2-wt; //(y-wo)/2;
|
||||||
|
ybo = (lf-lof)/2-wt;
|
||||||
|
|
||||||
|
posxad = htb+xto;
|
||||||
|
poszad = -zhbl+zad;
|
||||||
|
|
||||||
|
module through(l=7, lh=2, lt=1, lb=1){
|
||||||
|
union(){
|
||||||
|
translate([0,0,l-lh])cylinder(h=lh+lt, d=4);
|
||||||
|
translate([0,0,-lb])cylinder(h=l+lh+lb, d=2.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module m3 (h=8, lt=1){
|
||||||
|
//translate([0,0,-lt])cylinder(h, d=2.5); // tapped M3
|
||||||
|
translate([0,0,-lt])cylinder(h, d=4); // rutex insert
|
||||||
|
}
|
||||||
|
|
||||||
|
module m2 (h=8, lt=1){
|
||||||
|
translate([0,0,-lt])cylinder(h, d=1.5); // tapped M3
|
||||||
|
//translate([0,0,-lt])cylinder(h, d=3.2); // rutex insert
|
||||||
|
}
|
||||||
|
|
||||||
|
module mount(){
|
||||||
|
translate([4,4,-12])difference(){
|
||||||
|
hull(){
|
||||||
|
translate([0,0,6])cylinder(h=6, d=8);
|
||||||
|
translate([4,-4,0])cube([0.01,8,12]);
|
||||||
|
}
|
||||||
|
translate([0,0,12])mirror([0,0,1])through(l=10,lb=1,lt=1,lh=7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
translate([posxad,0,poszad])hull(){
|
||||||
|
rotate([0,a,0])translate([-0.01,ybo,-xto])cube([0.01,y-ybo,xto]);
|
||||||
|
rotate([0,a,0])translate([-0.01+lad,yba,-1*ho-2*wt])cube([0.01,y-yba,ho+2*wt]);
|
||||||
|
}
|
||||||
|
translate([xto+rd,ybo,-lav])rotate([-90,a+90,0])rotate_extrude(angle=b){
|
||||||
|
translate([rd,0])square([xto,y-ybo]);
|
||||||
|
}
|
||||||
|
hull(){
|
||||||
|
translate([0,0,-2*wtfm])cube([xto,y,2*wtfm]);
|
||||||
|
translate([0,ybo,-lav])cube([xto,y-ybo,0.01]);
|
||||||
|
//translate([0,0,-lav])cube([xto,y,lav]);
|
||||||
|
}
|
||||||
|
translate([xm,0,-2*wtfm])hull(){
|
||||||
|
cube([0.01,lf-0.4,wtfm*2]);
|
||||||
|
translate([wtfm,0,wtfm])cube([0.01,lf-0.4,wtfm]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([xo,yo, -lav-0.01])cube([wof,lof,lav+1]);
|
||||||
|
translate([xto+rd,yo,-lav])rotate([-90,a+90,0])rotate_extrude(angle=b){
|
||||||
|
translate([rd+xo,0])square([wof,lof]);
|
||||||
|
}
|
||||||
|
translate([posxad,0,poszad])hull(){
|
||||||
|
rotate([0,a,0])translate([-0.01,yo,-wof-xo])cube([0.01,lof,wof]);
|
||||||
|
rotate([0,a,0])translate([lad,yb,-ho-wt])cube([0.01,wo,ho]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(y=[8,lf-8])translate([xm+wtfm/2,y,0])mirror([0,0,1])through(l=wtfm,lt=wtfm);
|
||||||
|
translate([xto/2,y-bpt/2,-zofsmnt])mirror([0,0,1])through(l=wtfm,lt=zhbl);
|
||||||
|
translate([-1,y-bpt-0.4,-zofsmnt])cube([xto*2,bpt+1,zofsmnt+1]);
|
||||||
|
|
||||||
|
// cut view
|
||||||
|
//translate([-1,-1,-zhbl-zbed])cube([xto+xhbl+2,lf/2,zhbl+zbed+5]);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user