Working on what could be called an antique. Machining to correct the following not possible in this case.
I have .005 spread in crank stroke.
I have .003 spread in rod CtoC
I have .004 spread in piston pin height.
To get half way even cylinder pressure I am currently matching and averaging things out the old fashioned way, by hand and calculator. IE: short rod with long piston, yada yada.
It occurs to me to wonder if this could be done in Excel or VB.
3 columns, stroke, CtoC, pin height. It would sort through all the first three colums and finds the closest match in total length. Results would show for instance, rod 1 with piston 3 on journal 5.
Anyone done this, know how to do this, show me how to do it?
Thanks
Using Excel to make things easier
Moderator: Team
- Dave Koehler
- Vendor
- Posts: 7206
- Joined: Mon Oct 04, 2004 11:19 pm
- Location: Urbana, IL USA
- Contact:
Using Excel to make things easier
Dave Koehler - Koehler Injection
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
-
- Guru
- Posts: 9633
- Joined: Tue Nov 27, 2007 9:27 am
- Location: Chicago
- Contact:
What you are suggesting not only can be done, but should be done. It's not very hard to do.
While you are at it, you might as well add a column for rod weights, pin weight, piston weight, chamber cc, crank index, etc. And of course, cam lobe, valve spring, and valve train variations.
By mixing and matching components on paper, you could put together a very nice blueprinted engine with a minimum amount of machine shop work.
We've done this for 25 years; it takes time but it works.
While you are at it, you might as well add a column for rod weights, pin weight, piston weight, chamber cc, crank index, etc. And of course, cam lobe, valve spring, and valve train variations.
By mixing and matching components on paper, you could put together a very nice blueprinted engine with a minimum amount of machine shop work.
We've done this for 25 years; it takes time but it works.
Just take advantage of computer speed to use brute force... try a lot of random combos. You could add other factors as David noted.
Psuedo-code (Basicish)
'Declare and Initialize Variables
'(boolean arrays)
bool array rod_avail[4]
rod_avail[1] = true
rod_avail[2] = true
rod_avail[3] = true
rod_avail[4] = true
bool_array piston_avail[4]
piston_avail[1] = true
piston_avail[2] = true
piston_avail[3] = true
piston_avail[4] = true
'(integers)
rodnum=0
pistonnum=0
int array rod[4]
rod [1]= 0
rod [2]= 0
rod [3]= 0
rod [4]= 0
int array piston[4]
piston[1] = 0
piston[2] = 0
piston[3] = 0
piston[4] = 0
int array best_rod[4]
best_rod [1]= 0
best_rod [2]= 0
best_rod [3]= 0
best_rod [4]= 0
int array best_piston[4]
best_piston[1] = 0
best_piston[2] = 0
best_piston[3] = 0
best_piston[4] = 0
'(single precision)
single array stroke[4]
stroke[1] = 2.9999
stroke[2] = 2.9997
stroke[3] = 2.9995
stroke[4] = 3.0001
single array rod_len[4]
rod_len[1] = 5.6999
rod_len[2] = 5.6994
rod_len[3] = 5.6995
rod_len[4] = 5.7000
single array piston_ht[4]
piston_ht[1] = 1.4999
piston_ht[2] = 1.4998
piston_ht[3] = 1.4991
piston_ht[4] = 1.4995
ht=0.0
max_total_ht = 0.0
min_total_ht = 1000.0
range=0.0
best_range=1000.0
===================================
'main
for aa=1 to 9999
max_total_ht = 0.0
min_total_ht = 1000.0
range=0.0
for cyl=1 to 4
rod[cyl]=0
do
rodnum = random_int(1 to 4)
if rod_avail[rodnum]=true then
rod[cyl]=rodnum
rod_avail[rodnum]=false 'mark it used
endif
until rod[cyl]>0
piston[cyl]=0
do
pistonnum = random_int(1 to 4)
if piston_avail[pistonnum]=true then
piston[cyl]=pistonnum
piston_avail[pistonnum]=false 'mark it used
endif
until piston[cyl]>0
ht=stroke[cyl]+rod_len[rod[cyl]]+piston_ht[piston[cyl]]
if ht > max_total_ht then max_total_ht = ht
if ht < min_total_ht then min_total_ht = ht
next cyl
range=max_total_ht - min_total_ht
if range < best_range then
best_rod [1]= rod [1]
best_rod [2]= rod [2]
best_rod [3]= rod [3]
best_rod [4]= rod [4]
best_piston[1] = piston[1]
best_piston[2] = piston[2]
best_piston[3] = piston[3]
best_piston[4] = piston[4]
endif
'reset avails
rod_avail[1] = true
rod_avail[2] = true
rod_avail[3] = true
rod_avail[4] = true
piston_avail[1] = true
piston_avail[2] = true
piston_avail[3] = true
piston_avail[4] = true
next aa
'final report
print "Cylinder 1 uses Rod ", best_rod[1], " and Piston ", best_piston[1]
print "Cylinder 2 uses Rod ", best_rod[2], " and Piston ", best_piston[2]
print "Cylinder 3 uses Rod ", best_rod[3], " and Piston ", best_piston[3]
print "Cylinder 4 uses Rod ", best_rod[4], " and Piston ", best_piston[4]
Psuedo-code (Basicish)
'Declare and Initialize Variables
'(boolean arrays)
bool array rod_avail[4]
rod_avail[1] = true
rod_avail[2] = true
rod_avail[3] = true
rod_avail[4] = true
bool_array piston_avail[4]
piston_avail[1] = true
piston_avail[2] = true
piston_avail[3] = true
piston_avail[4] = true
'(integers)
rodnum=0
pistonnum=0
int array rod[4]
rod [1]= 0
rod [2]= 0
rod [3]= 0
rod [4]= 0
int array piston[4]
piston[1] = 0
piston[2] = 0
piston[3] = 0
piston[4] = 0
int array best_rod[4]
best_rod [1]= 0
best_rod [2]= 0
best_rod [3]= 0
best_rod [4]= 0
int array best_piston[4]
best_piston[1] = 0
best_piston[2] = 0
best_piston[3] = 0
best_piston[4] = 0
'(single precision)
single array stroke[4]
stroke[1] = 2.9999
stroke[2] = 2.9997
stroke[3] = 2.9995
stroke[4] = 3.0001
single array rod_len[4]
rod_len[1] = 5.6999
rod_len[2] = 5.6994
rod_len[3] = 5.6995
rod_len[4] = 5.7000
single array piston_ht[4]
piston_ht[1] = 1.4999
piston_ht[2] = 1.4998
piston_ht[3] = 1.4991
piston_ht[4] = 1.4995
ht=0.0
max_total_ht = 0.0
min_total_ht = 1000.0
range=0.0
best_range=1000.0
===================================
'main
for aa=1 to 9999
max_total_ht = 0.0
min_total_ht = 1000.0
range=0.0
for cyl=1 to 4
rod[cyl]=0
do
rodnum = random_int(1 to 4)
if rod_avail[rodnum]=true then
rod[cyl]=rodnum
rod_avail[rodnum]=false 'mark it used
endif
until rod[cyl]>0
piston[cyl]=0
do
pistonnum = random_int(1 to 4)
if piston_avail[pistonnum]=true then
piston[cyl]=pistonnum
piston_avail[pistonnum]=false 'mark it used
endif
until piston[cyl]>0
ht=stroke[cyl]+rod_len[rod[cyl]]+piston_ht[piston[cyl]]
if ht > max_total_ht then max_total_ht = ht
if ht < min_total_ht then min_total_ht = ht
next cyl
range=max_total_ht - min_total_ht
if range < best_range then
best_rod [1]= rod [1]
best_rod [2]= rod [2]
best_rod [3]= rod [3]
best_rod [4]= rod [4]
best_piston[1] = piston[1]
best_piston[2] = piston[2]
best_piston[3] = piston[3]
best_piston[4] = piston[4]
endif
'reset avails
rod_avail[1] = true
rod_avail[2] = true
rod_avail[3] = true
rod_avail[4] = true
piston_avail[1] = true
piston_avail[2] = true
piston_avail[3] = true
piston_avail[4] = true
next aa
'final report
print "Cylinder 1 uses Rod ", best_rod[1], " and Piston ", best_piston[1]
print "Cylinder 2 uses Rod ", best_rod[2], " and Piston ", best_piston[2]
print "Cylinder 3 uses Rod ", best_rod[3], " and Piston ", best_piston[3]
print "Cylinder 4 uses Rod ", best_rod[4], " and Piston ", best_piston[4]
[size=150][url]http://www.SportsCarDesigner.com[/url] [color=deeppink].... You [u]want[/u] to design your own car... so go ahead.[/color][b] Sports Car Designer [/b][color=deeppink] is the answer.[/color][/size]
What else can you do with that gift card you got?
What else can you do with that gift card you got?
- Dave Koehler
- Vendor
- Posts: 7206
- Joined: Mon Oct 04, 2004 11:19 pm
- Location: Urbana, IL USA
- Contact:
Oh my! I obviously have some stuff to learn in how to make that VB happy.
Thanks....I think.
Thanks....I think.
Dave Koehler - Koehler Injection
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
-
- Guru
- Posts: 1528
- Joined: Tue May 02, 2006 8:11 pm
- Location: Kitchener, ONT., Canada
- Contact:
- Dave Koehler
- Vendor
- Posts: 7206
- Joined: Mon Oct 04, 2004 11:19 pm
- Location: Urbana, IL USA
- Contact:
Thanks guys,
I may be in touch. Be careful what you wish for.
I may be in touch. Be careful what you wish for.
Dave Koehler - Koehler Injection
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
Enderle Fuel Injection - Nitrous Charger - Balancing - Nitrous Master software
http://www.koehlerinjection.com
"Never let a race car know that you are in a hurry."
-
- Guru
- Posts: 9633
- Joined: Tue Nov 27, 2007 9:27 am
- Location: Chicago
- Contact:
Over the years I have found that keeping accurate notes regarding specific engine builds has been very beneficial. With the arrival of Excel I have built detailed blueprint specifications for each engine. It works like this.
First get all the dimensions and tolerances that are available for the engine of your choice. Factory shop manuals contain very useful, detailed information.
Build a spreadsheet containing the dimensions and tolerances for each engine component, including specs for each oversize that might be used.
Let the spreadsheet do most of the math. For example, enter the bore dimension (at several axis and vertical positions) and piston dimension (ring land and skirt, pin and thrust axis), and have Excel calculate the piston to bore clearances at each axis and height location.
The same can be done for bearing/journal dimensions and clearances.
When complete, you have a detailed record of that engine build. When the engine needs to be refreshed, you can compare the dimensions of used parts to their original dimensions to determine areas of excessive wear.
Without the actual numbers, we are only guessing.
First get all the dimensions and tolerances that are available for the engine of your choice. Factory shop manuals contain very useful, detailed information.
Build a spreadsheet containing the dimensions and tolerances for each engine component, including specs for each oversize that might be used.
Let the spreadsheet do most of the math. For example, enter the bore dimension (at several axis and vertical positions) and piston dimension (ring land and skirt, pin and thrust axis), and have Excel calculate the piston to bore clearances at each axis and height location.
The same can be done for bearing/journal dimensions and clearances.
When complete, you have a detailed record of that engine build. When the engine needs to be refreshed, you can compare the dimensions of used parts to their original dimensions to determine areas of excessive wear.
Without the actual numbers, we are only guessing.