RaulBejarano / Ultimate-Toroidal-Propeller-Generator

The Ultimate Toroidal Propeller Generator is an open source project that provides a way to generate STL files of toroidal drone propellers.
GNU General Public License v3.0
115 stars 18 forks source link

aerodynamic airfoil #13

Open MaNyh opened 1 year ago

MaNyh commented 1 year ago

Hey.

I don't know anything about 3D-printing and OpenSCAD, but I do know stuff about airfoils and aerodynamics. I am wondering how it would be possible to implement the usage of NACA-profiles / airfoils. I know sharp edges are not good for printing. But I would like to investigate designs using cfd and I don't want to be limited by 3D-printing capabilities. Also efficient propellers have to be optimized by the blade-curvature and thickness anyhow. If we could choose from NACA-airfoils, we could predict the capabilities and necessary geometry-parameters for given rpm's.

How would you implement this?

RaulBejarano commented 1 year ago

Hello. This project was born to generate pieces that could be printed in 3D.

What you say is very interesting and a very good improvement. I will investigate if it is possible to add it to this project.

I currently have little time to dedicate to these things so it may take a while.

Thank you very much for your improvement proposal.

MaNyh commented 1 year ago

Hey there.

Good to hear that you are interested. Even more important then the shape of an airfoil are velocity-triangles for those airfoils. If you are interested, I could give you insight in the shape-generation of turbine airfoils. I am pretty sure that we should stick to the same approach when designing toroidal fans. Let me know when you are looking for an approach or if you have an approach in mind already. Hope I will be able to help

Best regards.

RaulBejarano commented 1 year ago

Hi! I just wanted to report that I'm already working on this by researching and making some tests. image image

MacksMind commented 4 months ago

@RaulBejarano Do you have a branch for the experimentation you've done so far?

globalcitizen commented 3 months ago

Background

I came specifically to check if anyone else had looked in to this, and it seems there is quite a lot of interest.

Quick and dirty

If we simply want a quick solution, we could look to vary thickness by height, or alternatively both thickness and blade_attack_angle.

The issue with this is that the current codebase depends upon the linear_extrude() function which is used to translate the 2D shape in to the 3D primitive to assemble the toroidal propeller, and it does not support stepwise variance of other shape factors.

Proposed hacky solution

Therefore, to generate such a complex shape within OpenSCAD will require the use of constructive solid geometry (CSG) boolean functions such as difference() - ie. we will need to generate at least one 'shape to remove' as well as the current shape.

In order to do this, we could use a similar call to the current linear_extrude() but instead vary the blade_attack_angle so as to generate the object on top of the leading edge, so that the difference() results in the shape we want and we maintain a roughly triangular profile of intersection along the blade edge. The trick here will be to align the call to the end of the blade. Presumably we will require two such calls, one for the top blade edge and one for the lower blade edge. This will nominally result in a triangular blade edge.

The shape can be further improved with multiple iterations of a uniform angle delta, each with slight target position offsets so that at the maximum number of iterations, the innermost iteration's finishing position in 3D space is offset by perhaps half the thickness.

prop-profiles

Of course you could further enhance this approach, for example by having complex profile on both sides of the blade, by differing the leading and trailing edge, etc. An implementation path that would make sense would be:

  1. Make the triangular cut-out work
  2. Make the multi-step version work
  3. Make the above a function
  4. Make the inner and outer sides of both the leading and trailing edge definable with parameters that call this function

Other solutions

Alternative solution

Instead of generating the blade from a 2D plan view, generate the blade from a cross-sectional view. This would allow for easier and more precise blade profile specification differences. This requires a rewrite which is unlikely.

Relatively hacky, one-off solution

Super hacky, one-off solution

Theoretical 'best' open source solutions

Figure out how to use an open source computational fluid dynamics (CFD) package like OpenFOAM, Fluidity or Dedalus possibly combined with a neural network to iteratively model various designs against your proposed application requirements, then generate the best possible propeller for your situation. Note this will require unobtainium levels of correctness in terms of your material knowledge and fabrication process.

A 'real' engineer capable of performing CFD analysis presumably using closed source software would no doubt consider various factors such as final size, fabrication hardware (3D printer or 5 axis CNC) limitations, any surface finishing or coating process limitations or considerations, handling concerns (damage/safety), material selection, material flexibility, mount point with respect to other structural elements, RPM, torque targets, acoustic goals, and aggregate thrust array structure (eg. number of propellers and relative locations) and of course production cost, volume and timing requirements. Outside of high budget situations, the last ones are the important factors.

And on that note, probably the proposed hacky solution for this project can get you the 80:20 solution in 1% of the time with 1% of the education at 1% of the cost.