Summary
WARNING: THE CODE GENERATES A FAN IN THE WRONG ORIENTATION. YOU MUST MIRROR THIS IN THE SLICER
I used the basic code generated by Rennat, but loaded it into OpenSCAD to modify the part of the fan where the magnet goes.
I increased the blades from 9 to 11, and I am not completely sure the blade pitch is the same, but it does the job of cooling. It is also much quieter. I could hear the old fan downstairs, I can now notice the fan when I'm in the room.
I had a blade break off the main fan, and I didn't feel like spending $7+ to get a new fan. This may actually have been better due to the noise reduction.
Customized version of
https://www.thingiverse.com/thing:2536887
Created with Customizer!
https://www.thingiverse.com/apps/customizer/run?thing_id=2536887
Print Settings
Printer Brand:
Anycubic
Printer:
Photon
Rafts:
No
Supports:
Yes
Resolution:
.3mm height
Infill:
100
Notes:
Make sure teh blades look correct and match the fan you have before printing. The Fan was Mirrored to what I needed.
This fan is a bit too detailed for an FDM, but you are free to try. I went with my AnyCubic Photon printer, also my Ender3 had a broken fan on the hot end, so it was not available.
You could print this straight on the bed, but I was having issues with elephant feet, the supports give it a dimpled look, but I think that will have less effect on the air flow. If you print this directly on teh bed you will have to sink it about 0.06mm into the bed because the blades protrude a bit.
~ // The diameter of the propeller in millimeters propDiameter=36.75; propHeight=6.75; // changes the angle of the blades. Pitch is the distance the prop would move forward with one complete rotation. propPitch=105; // the target thickness for the thickest point of the airfoil. Not followed precisely. propThickness=.7; // the amount of curve in the blades (passed into NACA4 algorithm) propNacaCamber=0.1; // the position of max curve in the blades (passed into NACA4 algorithm) propNacaMaxCamberPosition=0.44; // number of blades propBladeCount=11; // the diameter of the hole in the middle of the prop. propShaftDiameter=2.15; // the diameter of the hub, where a nut might attach this to a motor. propHubDiameter=21.25; // used to create the curve on the outside of the hub propHubMinRadius=0; // quality parameters // number of segments to render the blades in, smaller is smoother but slower. propSegmentSize=2; // the number of samples in the airfoil profiles, bigger is smoother but slower. propNacaSampleCount=41; // recommended settings for quick preview: propSegmentSize=4; propNacaSampleCount=21; // recommended settings for high resolution render: //propSegmentSize=0.5; //propNacaSampleCount=161; ~
How I Designed This
The code generates a blade that needs mirrored before printing.
Basic design was generated here:
Created with Customizer!
https://www.thingiverse.com/apps/customizer/run?thing_id=2536887
I made a few changes in OpenSCAD, I have attached the code. I found that the little raised ring in the center near the shaft is needed to stabilize the blades on the shaft. I also found the blades are too fragile if you go below the .6mm blade thickness.
Code for OpenSCAD
// NACA4 airfoil based prop generator for use with ducts.
//use ; // https://www.thingiverse.com/thing:2536887
/*
common prop size and pitch values in mm:
*/
// Parameters
// The diameter of the propeller in millimeters
propDiameter=36.75;
propHeight=6.8;
// changes the angle of the blades. Pitch is the distance the prop would move forward with one complete rotation.
propPitch=105;
// the target thickness for the thickest point of the airfoil. Not followed precisely.
propThickness=.75;
// the amount of curve in the blades (passed into NACA4 algorithm)
propNacaCamber=0.1;
// the position of max curve in the blades (passed into NACA4 algorithm)
propNacaMaxCamberPosition=0.44;
// number of blades
propBladeCount=11;
// the diameter of the hole in the middle of the prop.
propShaftDiameter=2.15;
// the diameter of the hub, where a nut might attach this to a motor.
propHubDiameter=21.25;
// used to create the curve on the outside of the hub
propHubMinRadius=0;
// quality parameters
// number of segments to render the blades in, smaller is smoother but slower.
propSegmentSize=1;
// the number of samples in the airfoil profiles, bigger is smoother but slower.
propNacaSampleCount=80;
// recommended settings for quick preview:
//propSegmentSize=4;
//propNacaSampleCount=21;
// recommended settings for high resolution render:
//propSegmentSize=0.5;
//propNacaSampleCount=161;
//
// includes
//
// The Thingiverse Customizer only allows limited use or include.
// This file contains all code necessary with attribution.
// https://www.thingiverse.com/thing:898554
/ -------------- naca4.scad -----------------/
/ ------------------------------------------ /
// https://www.thingiverse.com/thing:2536887
/ ----------- naca4_airfoil.scad ----------- /
/ ------------------------------------------ /
//
// end includes
//
Pi = 3.14159265359;
function pitchAngleAtRadius(radius) = atan(propPitch/(2Piradius));
function chordLengthForAngleAndHeight(angle, height) = height/sin(angle);
module prop_blade() {
propRadius=propDiameter/2 + propSegmentSize;
segmentCount=round(propRadius/propSegmentSize);
segments=[for(i=[0:1:segmentCount-1])
let(
position=i/(segmentCount-1),
radius=affineTransform(0, 1, 0, propRadius, position),
angle=pitchAngleAtRadius(radius),
chord=chordLengthForAngleAndHeight(angle, propHeight),
naca=[propNacaCamber, propNacaMaxCamberPosition, propThickness/chord]
)
airfoilLoftSegment(position=position, naca=naca, chord=chord, angle=-angle)
];
rotate([0,90,0])
rotate([0,0,90])
airfoilLoft(
segments=segments,
span=propRadius,
step=propSegmentSize,
nacaSampleCount=propNacaSampleCount
);
}
module prop_hub() {
translate([0,0,-propHeight/2])
rotate_extrude($fn=180)
union() {
translate([0,-propHeight/2])
square([propHubDiameter/2-propHubMinRadius,propHeight]);
translate([propHubDiameter/2-propHubMinRadius,0])
scale([propHubMinRadius/propHeight,1])
circle(d=propHeight, $fn=180);
}
}
module prop_hub_center() {
translate([0,0,-propHeight])
// rotate_extrude($fn=180)
difference() {
cylinder(d=20,h=propHeight +5.7,center=true,$fn=360);
difference(){
cylinder(d=propShaftDiameter+1.6 ,h=propHeight +6.5,center=true,$fn=360);
cylinder(d=propShaftDiameter+1.65 ,h=propHeight + 4.25 ,center=true,$fn=360);
}
}
// union() {
// cylinder(d=20,h=propHeight*2.5-5,center=true,$fn=360);
//
}
module prop() {
intersection() {
union() {
prop_hub();
bladeAngleOffset = 360/propBladeCount;
for (i=[1:1:propBladeCount]) {
rotate([0,0,ibladeAngleOffset])
prop_blade();
}
}
difference() {
cylinder(d=propDiameter,h=propHeight4,center=true,$fn=360);
prop_hub_center();
cylinder(d=propShaftDiameter,h=propHeight5,center=true,$fn=80);
cylinder(d=propHubDiameter-propHubMinRadius2,h=propHeight2,$fn=80);
translate([0,0,-propHeight3])
cylinder(d=propHubDiameter-propHubMinRadius2,h=propHeight2,$fn=80);
}
}
}
color("lightgreen")
prop();
Modellquelle
