bladegen by tallakt 3d model
3dmdb logo
Thingiverse
bladegen by tallakt

bladegen by tallakt

by Thingiverse
Last crawled date: 2 years, 11 months ago
Please read the latest docs and download newest versions from GitHub at https://github.com/tallakt/bladegen
bladegen
Generate propeller blades in OpenSCAD.

What can it do?
Create propeller blades
Use any four digit NACA profiles
Specify size and pitch
Specify elliptical lift outline or trapezoidal outlines
Make propeller or turbine blades
Finish the blade at the root
The blades can rotate clockwise or counterclockwise
You can specify the aspect ratio of the blade
You can specify different wing profiles for each blade section, with
interpolation
You can plug in your own outline
Specify accuracy for quick or precise output
Note the propellers and turbine blades generated by this code is not at all
tested in real life scenarios and may be totally wrong, though probably they
are ok.
Installation
To use bladegen, you should put the bladegen folder from the git libraries
folder to the OpenSCAD library folder that you will find in the File menu of
OpenSCAD. Additionally you will need to install the DiscreteOpenSCAD libraryBOSL2 also in the library folder.
Usage
use

INCH_MM = 25.6;

translate([0, 0, 0]) bladegen(pitch = 4 * INCH_MM, diameter = 5 * INCH_MM);
translate([0, 25, 0]) bladegen(pitch = 4 * INCH_MM, diameter = 5 * INCH_MM, outline = rectangular_outline());
translate([0, 50, 0]) bladegen(pitch = 4 * INCH_MM, diameter = 5 * INCH_MM, outline = rectangular_outline(taper_tip = 0.5));
translate([0, 75, 0]) bladegen(pitch = 4 * INCH_MM, diameter = 5 * INCH_MM, outline = elliptical_outline(exponent = 5));
translate([0, 100, 0]) bladegen(pitch = 40, diameter = 100, outline = elliptical_outline(aspect_ratio = 3));
translate([0, 125, 0]) bladegen(pitch = 40, diameter = 100, inner_radius = 0.10);
translate([0, 150, 0]) bladegen(pitch = 40, diameter = 100, ccw = true);
translate([0, 175, 0]) bladegen(pitch = 40, diameter = 100, inner_radius = 0.30, root = ellipse_root(radius = 0.1));
translate([0, 200, 0]) bladegen(pitch = 40, diameter = 100, turbine = true);
translate([0, 225, 0]) bladegen(pitch = 40, diameter = 100, wing_sections = naca_wing_sections([[0.0, 2440], [0.5, 2420], [1.0, 0010]]));
translate([0, 300, 0]) bladegen(pitch = 40, diameter = 100, inner_radius = 0.15, blades = 5);
If you prefer, open the file demo.scad to run the above commands.
Lengths are given in the OpenSCAD unit which normally is mm. Some other values
are specified in % of blade length, 0.0 being at the root and 1.0 at the tip.
The root shape in particular should be scaled so that a width of 1.0 will be as
wide as the chord where the blade ends (inner_radius).
To make a hub, it must be done manually by a code something like
use

diameter = 200;
hub_r = 15;
hub_h = 12;
hole_d = 6;

root = ellipse_root(r = [0.2, 0.08], rotate = 40.0, radius = 0.10);

difference() {
union() {
bladegen(diameter = 200, pitch = 150, inner_radius = 0.3, root = root, blades = 5);
translate([0, 0, -1]) cylinder(r = hub_r, h = hub_h, center = true);
}
cyl(d = hole_d, h = 99, center = true, $fn = 30);
}
This code also demontrates ending the blade near the root. Any shape can be
supplied.
If you don't supply a diameter parameter, the diameter will be 1.0 long and the
pitch is specified as number of diameters advancement per revolution. It may
sometimes be easier to work in this manner and then just scale the propeller to
the correct diameter after. If you do this, the relative pitch remains constant
with different sizes. Normally, pitch and diameter are dependent on each other.
Computational model
The library is built around the bladegen function. All parameters are
supplied with default values, but you may want to change these.
The bladegen will calculate a number of points along the blade radius called
nodes. You can adjust the accuracy and speed of the blade generation by
supplying the segments parameter to bladegen.
The outline is calculated as a chord length at each node point. You would
normally generate an outline with the function elliptical_outline(...) orrectangular_outline(...). These functions return new functions, which may
supply an outline based on the node position.
You may also supply your custom outline literal function like this:
custom_outline = function (radius) (0.5 * (1 - radius)^2 + 0.5) / 5;
bladegen(outline = custom_outline);
The function should return a chord length based on the radius going from 0.0 to
1.0. The chord length must also take the desired aspect ratio into
consideration.
The wing section profile is done much the same as the outline calculation. To
use a single NACA profile supply a parameter outline = naca_wing() to thebladegen call. Like for the outlines, the function returns a new function
that is called later with the correct radius parameter for the nodes. You can
also specify different wing sections by using the functionnaca_wing_sections(...). The NACA profiles are interpolated at each node.
Custom wing section distributions may be made like custom outlines, but it is
harder to achieve. An example in the code is the function naca_wing_sections.
Example
bladegen(wing_sections = naca_wing(2408));
bladegen(wing_sections = naca_wing_sections([[0.0, 2430], [1.0, 2408]]));

Tags