From 2914c9009a71718d8141f026bab2aa8edaf1a4a4 Mon Sep 17 00:00:00 2001 From: sebastian bruesemeister Date: Fri, 8 Jul 2022 15:30:58 +0200 Subject: [PATCH] duct done for now --- BaseLeft.scad | 9 +++- coolingFanDuct.scad | 118 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 coolingFanDuct.scad diff --git a/BaseLeft.scad b/BaseLeft.scad index a32a9cd..aac0929 100644 --- a/BaseLeft.scad +++ b/BaseLeft.scad @@ -19,6 +19,11 @@ module m3 (h=8, lb=1){ //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(){ hull(){ translate([rc, rc])cylinder(h=t, r=rc); @@ -51,6 +56,8 @@ difference(){ translate([x,h-y,0])m3(); } } - + translate([10,0,t/2])rotate([-90,0,0])m2(); + //cooling fan duct + //translate } \ No newline at end of file diff --git a/coolingFanDuct.scad b/coolingFanDuct.scad new file mode 100644 index 0000000..1c08ee4 --- /dev/null +++ b/coolingFanDuct.scad @@ -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]); +}