HobbyKing.com New Products Flash Sale
Reply
Thread Tools
Old Jan 10, 2013, 08:07 PM
Life begins at transition
Australia, VIC, Sale
Joined May 2007
3,593 Posts
Is that turning about 60 degrees?!? Holy torque!

How are you making them? The guys seem to have issues printing at the moment, and I could never get an airfoil shape out of SWs... You don't have access to a CNC router do you??
Odysis is offline Find More Posts by Odysis
Reply With Quote
Sign up now
to remove ads between posts
Old Jan 11, 2013, 01:57 AM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
Hey Odysis,

I am writing a Visual C# code that generates the shape based on mathematical equations. The slope is just one of many parameters that can be altered anytime. The goal is to write a program that generates arbitrary props/fans based on parameters like slope, diameter, width, airfoil, twist... Also, I want to test different variants to find the sweet spot of a micro fan. The perfect blade shape I believe you get when you roll the airfoil onto a cylinder surface and control the slope as a function of radius.

What about the shapeways issues?? The 10mm fans I got were great. In fact, an airfoil needs to be adapted to have a certain thickness at the trailing edge, otherwise you will always get issues. What problems did you have?

Chris




using System;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}
protected override void OnPaint(PaintEventArgs paintEvnt)
{
double[] yt = new double[35] { 0.0000000f, 0.0007400f, 0.0020500f, 0.0040100f, 0.0072501f, 0.0101101f, 0.0159602f, 0.0218602f, 0.0276603f, 0.0333003f, 0.0386704f, 0.0437004f, 0.0482705f, 0.0523105f, 0.0557406f, 0.0585106f, 0.0605606f, 0.0618406f, 0.0623106f, 0.0619406f, 0.0606906f, 0.0585006f, 0.0552506f, 0.0509405f, 0.0456905f, 0.0397704f, 0.0336203f, 0.0275703f, 0.0218302f, 0.0165302f, 0.0116701f, 0.0071601f, 0.0033300f, 0.0009300f, 0.0001700f };
double[] xt = new double[35] { 0.0000000f, 0.0000900f, 0.0007100f, 0.0022600f, 0.0060001f, 0.0105801f, 0.0232502f, 0.0406604f, 0.0627206f, 0.0892309f, 0.1198912f, 0.1543615f, 0.1923019f, 0.2333023f, 0.2769428f, 0.3227532f, 0.3702637f, 0.4189842f, 0.4683847f, 0.5179552f, 0.5671857f, 0.6155261f, 0.6625966f, 0.7080970f, 0.7517775f, 0.7934279f, 0.8326283f, 0.8688086f, 0.9013990f, 0.9298793f, 0.9537596f, 0.9728698f, 0.9873199f, 0.9966900f, 1.0000000f };
double[] yb = new double[33] { 0.0000000f, -.0007200f, -.0019000f, -.0036000f, -.0062501f, -.0083701f, -.0126101f, -.0165302f, -.0200702f, -.0232402f, -.0259903f, -.0282703f, -.0300003f, -.0310903f, -.0313703f, -.0306303f, -.0287603f, -.0257803f, -.0218802f, -.0175402f, -.0131101f, -.0088901f, -.0051001f, -.0019100f, 0.0005700f, 0.0022600f, 0.0031800f, 0.0033800f, 0.0030200f, 0.0022800f, 0.0013600f, 0.0005300f, 0.0001700f };
double[] xb = new double[33] { 0.0000000f, 0.0002500f, 0.0011500f, 0.0031300f, 0.0076201f, 0.0126801f, 0.0268403f, 0.0459705f, 0.0699307f, 0.0984610f, 0.1312113f, 0.1677617f, 0.2076921f, 0.2505225f, 0.2957530f, 0.3430134f, 0.3920439f, 0.4425844f, 0.4944449f, 0.5472355f, 0.6002760f, 0.6528665f, 0.7042770f, 0.7537276f, 0.8004881f, 0.8437984f, 0.8829688f, 0.9173292f, 0.9462994f, 0.9694097f, 0.9862698f, 0.9965400f, 1.0000000f };

double[,] x = new double[100, 100];
double[,] y = new double[100, 100];
double[,] z = new double[100, 100];
double ox = -0.33333333;
double oy = 0;
double a = -.3;
double r;
int nt = 35;
int nb = 33;
int n, j, i;
int x0 = 600;
int y0 = 300;
string sx1, sy1, sz1, sx2, sy2, sz2, sx3, sy3, sz3, sx4, sy4, sz4, snx, sny, snz;
double b, nx, ny, nz, ax, bx,ay,by,az,bz;
n = nt + nb - 1;

//urrippe
a = 0;
for (i = nt - 1; i >= 0; i = i - 1)
{
x[0, nt - i - 1] = (xt[i] * Math.Cos(a) + yt[i] * Math.Sin(a)) + ox;
y[0, nt - i - 1] = (-xt[i] * Math.Sin(a) + yt[i] * Math.Cos(a)) + oy;
z[0, nt - i - 1] = 0;
}

for (i = 0; i < nb; i = i + 1)
{
x[0, nt + i - 1] = (xb[i] * Math.Cos(a) + yb[i] * Math.Sin(a)) + ox;
y[0, nt + i - 1] = (-xb[i] * Math.Sin(a) + yb[i] * Math.Cos(a)) + oy;
z[0, nt + i - 1] = 0;
}

for (j = 1; j <= 90; j = j + 1)
{
a = .8 / ((double)j / 90 + 1);
r = .4 * ((double)j / 90 + 1);
for (i = 0; i < n; i = i + 1)
{
x[j, i] = (x[0, i] * Math.Cos(a) + y[0, i] * Math.Sin(a)) + ox;
y[j, i] = (-x[0, i] * Math.Sin(a) + y[0, i] * Math.Cos(a)) + oy;
b = x[j, i] / r;
z[j, i] = Math.Cos(b) * r;// / (double)j;
x[j, i] = Math.Sin(b) * r;// / (double)j;
}
}
//
label1.Text = yt[0].ToString();
// Get the graphics object
Graphics gfx = paintEvnt.Graphics;
// Create a new pen that we shall use for drawing the line
Pen myPen = new Pen(Color.DarkBlue);
// Loop and create a new line 10 pixels below the last one
for (i = 00; i <= 900; i = i + 1)
{
gfx.DrawLine(myPen, 0, i, 1600, i);
}
Pen myPen2 = new Pen(Color.White);
CultureInfo USCulture = new CultureInfo("en-US");
try
{
System.IO.TextWriter writeFile = new StreamWriter("C:\\Blade.stl");
writeFile.WriteLine("solid Blade");
writeFile.WriteLine("");
for (j = 1; j <= 89; j++)
{
for (i = 1; i < n; i++)
{
gfx.DrawLine(myPen2, (int)(x[j, i] * 1000f + x0), (int)(-y[j, i] * 1000f + y0 + z[j, i]), (int)(x[j, i - 1] * 1000f + x0), (int)(-y[j, i - 1] * 1000f + y0 + z[j, i - 1]));
gfx.DrawLine(myPen2, (int)(x[j + 1, i] * 1000f + x0), (int)(-y[j + 1, i] * 1000f + y0 + z[j + 1, i]), (int)(x[j + 1, i - 1] * 1000f + x0), (int)(-y[j + 1, i - 1] * 1000f + y0 + z[j + 1, i]));
gfx.DrawLine(myPen2, (int)(x[j, i] * 1000f + x0), (int)(-y[j, i] * 1000f + y0 + z[j, i]), (int)(x[j + 1, i] * 1000f + x0), (int)(-y[j + 1, i] * 1000f + y0 + z[j + 1, i]));

sx1 = x[j, i - 1].ToString("#.00000000", USCulture);
sy1 = y[j, i - 1].ToString("#.00000000", USCulture);
sz1 = z[j, i - 1].ToString("#.00000000", USCulture);
sx2 = x[j + 1, i - 1].ToString("#.00000000", USCulture);
sy2 = y[j + 1, i - 1].ToString("#.00000000", USCulture);
sz2 = z[j + 1, i - 1].ToString("#.00000000", USCulture);

sx3 = x[j, i].ToString("#.00000000", USCulture);
sy3 = y[j, i].ToString("#.00000000", USCulture);
sz3 = z[j, i].ToString("#.00000000", USCulture);
sx4 = x[j + 1, i].ToString("#.00000000", USCulture);
sy4 = y[j + 1, i].ToString("#.00000000", USCulture);
sz4 = z[j + 1, i].ToString("#.00000000", USCulture);

bx = x[j + 1, i - 1] - x[j, i - 1];
by = y[j + 1, i - 1] - y[j, i - 1];
bz = z[j + 1, i - 1] - z[j, i - 1];
ax = x[j, i] - x[j, i - 1];
ay = y[j, i] - y[j, i - 1];
az = z[j, i] - z[j, i - 1];
nx = ay * bz - az * by;
ny = az * bx - ax * bz;
nz = ax * by - ay * bx;
snx = nx.ToString("#.00000000", USCulture);
sny = ny.ToString("#.00000000", USCulture);
snz = nz.ToString("#.00000000", USCulture);



//nx=y[j, i - 1]*z[]-z[j, i - 1]*y[];
writeFile.WriteLine("facet normal " + snx + " " + sny + " " + snz);
writeFile.WriteLine("outer loop");
writeFile.WriteLine("vertex " + sx2 + " " + sy2 + " " + sz2);
writeFile.WriteLine("vertex " + sx1 + " " + sy1 + " " + sz1);
writeFile.WriteLine("vertex " + sx3 + " " + sy3 + " " + sz3);
writeFile.WriteLine("endloop");
writeFile.WriteLine("endfacet");

writeFile.WriteLine("facet normal " + snx + " " + sny + " " + snz);
//writeFile.WriteLine("facet normal 0.0 0.0 0.0");
writeFile.WriteLine("outer loop");
writeFile.WriteLine("vertex " + sx2 + " " + sy2 + " " + sz2);
writeFile.WriteLine("vertex " + sx4 + " " + sy4 + " " + sz4);
writeFile.WriteLine("vertex " + sx3 + " " + sy3 + " " + sz3);
writeFile.WriteLine("endloop");
writeFile.WriteLine("endfacet");
}
}
writeFile.WriteLine("");
writeFile.WriteLine("endsolid");

writeFile.Flush();
writeFile.Close();
writeFile = null;
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}


}

private void button1_Click(object sender, EventArgs e)
{
try
{
string line = null;
System.IO.TextReader readFile = new StreamReader("C:\\Users\\Andre\\Documents\\Blade.s tl");
while (true)
{
line = readFile.ReadLine();
if (line != null)
{
MessageBox.Show(line);
}
}
readFile.Close();
readFile = null;
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}
}

private void button2_Click(object sender, EventArgs e)
{

}
}
}
Chris T is offline Find More Posts by Chris T
Last edited by Chris T; Jan 11, 2013 at 12:22 PM.
Reply With Quote
Old Jan 11, 2013, 02:22 AM
Life begins at transition
Australia, VIC, Sale
Joined May 2007
3,593 Posts
The ideal is when the pressure rise is equal along the span. If you want, I can point you at some fan design textbooks.

This is the spreadsheet I made up. It's not commented at all, but the two important angles for the rotor are β2-β1 (that's the camber of the blade at a given point) and θ is the angle it's mounted at.

It doesn't quite work out to be a segment of a cylinder, but this way takes way more math

SW can't do below 0.7mm reliably. That meant even for my 30mm fans, the whole airfoil had to be printed as a square. It could be filed into roughly the right shape, but not printed ready-to-go. BIM and Nitro have apparently gotten a couple of dodgy prints of late using thin walls like that. Mine were never dodgy, but I also didn't push the limits like I know Dave would be doing!

I'm amazed at the effort you're going to though! 'lectrical eng in the ESC, aero eng in the fan, structural in the plane... One man band! Rock on!
Odysis is offline Find More Posts by Odysis
Reply With Quote
Old Jan 11, 2013, 02:27 PM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
hey yes I am interested in the theory There are several ways of balancing the pressure: cord, pitch, camber. What's the best way and what's the camber variation all about? Can't the camber just be in the airfoil?

Thanks

Chris
Chris T is offline Find More Posts by Chris T
Reply With Quote
Old Jan 11, 2013, 05:21 PM
Registered User
chester2240's Avatar
United States, CO, Westminster
Joined Jul 2011
575 Posts
You guys should be working for NASA
chester2240 is offline Find More Posts by chester2240
Reply With Quote
Old Jan 11, 2013, 07:17 PM
Life begins at transition
Australia, VIC, Sale
Joined May 2007
3,593 Posts
Quote:
Originally Posted by Chris T View Post
hey yes I am interested in the theory There are several ways of balancing the pressure: cord, pitch, camber. What's the best way and what's the camber variation all about? Can't the camber just be in the airfoil?

Thanks

Chris
Yup, there's a few ways, and they all interact with each other, and when you improve one, another gets worse! Ah, aerodynamics...

Changing chord affects solidity. The line that deals with that is the first of the yellow (user input required) lines. Fig 9.12 shows the recommended solidity for a given intake speed, based on wind tunnel tests and a whole bunch of math.

Camber is given by theta. Pretty straight forward that one. It's based on the pressure rise you want, and chord at the span-wise station, and an assumed deviation (from the Kutta condition). I used 10 degrees, hence thera is always b2-b1 + 10.

Pitch Φ comes from the amount of pressure you want, the rotational speed and the inlet airspeed (plus a few other things like AoA). It goes hand-in-hand with the others to ensure each blade section is doing what's it's meant to.

A big thing with all of this - have a look in the top left corner, there's a lot in yellow. Without knowing what speed you're designing for, everything's a guess. You can therefore design a fan that works really well on the bench, but poorly in the air, or vice-versa. That's where the HDT/HST thing comes from, not purely the number of blades.

Using the cylinder sections, you won't get free-vortex flow - that means the pressure isn't constant along the span. I've only got one example to hand, and it comes out around 80% as efficient as a fully designed fan. But much, much easier to design and build!
Odysis is offline Find More Posts by Odysis
Reply With Quote
Old Jan 12, 2013, 01:41 AM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
Hey Odysis,

thanks for all that information. I will have to think about it some more. ABout the cylinder sections: I think you got me wrong. Have a close look to the pics. I didn't meen using a cylinder section as the blade as done in the plywood fan tutorial. Of coarse that is an easy way of handcrafting a blade. But I have all degrees of freedom here and the math for the geometry isn't so bad (in contrast to the math of the aerodynamics). I meant, I roll the root airfoil around the hub (cylinder) and the tip airfoil around the shroud cylinder and all intermediate airfoil crossections alike. First order, pitch should be proportional to 1/r, so this gives these surfaces bent in all directions, not cylinder sections at all

Chris
Chris T is offline Find More Posts by Chris T
Reply With Quote
Old Jan 12, 2013, 02:27 AM
Life begins at transition
Australia, VIC, Sale
Joined May 2007
3,593 Posts
Ah yes, gotchya!

That sounds fair. As you can see, there's a rather large amount of math, and a healthy dose of "TLAR" in fan design. I gave up once I couldn't print them to the accuracy the math was working out to be. No use in trying to make a 5% more efficient blade when I can't print anything but a square block!

Stu and Winmodels' threads are great if you're really interested in this. Likewise, any design that uses free vortex flow will be a good start.

Still astounding that you're making every component on this jet from scratch... You crazy!
Odysis is offline Find More Posts by Odysis
Reply With Quote
Old Jan 13, 2013, 07:56 AM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
almost there...
Chris T is offline Find More Posts by Chris T
Last edited by Chris T; Jan 13, 2013 at 12:36 PM.
Reply With Quote
Old Jan 13, 2013, 04:54 PM
Team30 Micro EDF
NitroCharged's Avatar
Adelaide, Australia
Joined Apr 2004
11,199 Posts
Nice stuff Chris!
NitroCharged is offline Find More Posts by NitroCharged
Reply With Quote
Old Jan 14, 2013, 10:30 AM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
Hey,

I looked around a bit and found that high resolution STL is technically no problem. Don't know about the price, but probably worth investigating alternatives to shapeways:

http://www.plunkettassociates.co.uk/...ithography.asp

Chris
Chris T is offline Find More Posts by Chris T
Reply With Quote
Old Jan 14, 2013, 04:48 PM
Team30 Micro EDF
NitroCharged's Avatar
Adelaide, Australia
Joined Apr 2004
11,199 Posts
Now you're talking Chris! Nice find.

Strength of ABS plastic and micro detail.

Where do we go to from here?
NitroCharged is offline Find More Posts by NitroCharged
Reply With Quote
Old Jan 14, 2013, 05:03 PM
Life begins at transition
Australia, VIC, Sale
Joined May 2007
3,593 Posts
Wow, awesome! Good find
Print it, cast a mould, then cast parts in chopped carbon/resin. No layups, wicked strength!
Odysis is offline Find More Posts by Odysis
Reply With Quote
Old Jan 17, 2013, 02:15 AM
Micro Jet Pilot
Chris T's Avatar
Joined Jul 2005
2,091 Posts
Waiting for a price quote from Plunkett... I want a green fan
Chris T is offline Find More Posts by Chris T
Reply With Quote
Old Jan 17, 2013, 02:26 AM
Team30 Micro EDF
NitroCharged's Avatar
Adelaide, Australia
Joined Apr 2004
11,199 Posts
I'm really keen to see their results Chris. This will improve the quality of our rotors and cases(stator vanes). Let's hope you don't have to get a bank loan out to pay for it.
NitroCharged is offline Find More Posts by NitroCharged
Reply With Quote
Reply


Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Discussion 6'' Micro Squall (20mm EDF, Single Phase Sensorless Motor) Chris T Micro EDF Jets and Power Systems 263 May 08, 2013 10:31 PM
Sold New Phase 3 Squall! 40A 11.1v ESC + used 3s ducted fan setup jgalexander Aircraft - Electric - Power Systems (FS/W) 0 Mar 03, 2012 01:45 AM
For Sale Phase 3 Squall kit plus motor/fan combo SmoothCruizer2 Aircraft - Electric - Jets (FS/W) 5 Oct 05, 2011 11:50 PM
Sold NIB Phase 3 Squall EDF 4-cell Hi-Perf ARF w/Fan/Motor/ESC $85 each Shipped Insured jmrust Aircraft - Electric - Jets (FS/W) 6 Nov 18, 2010 09:41 PM
For Sale 63mm EDF combo 3S (fan,motor,esc) squall phase 3 crd Aircraft - Electric - Power Systems (FS/W) 2 May 08, 2010 08:19 PM