<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-11379514</id><updated>2009-11-08T23:08:31.306-05:00</updated><title type='text'>HPTuner experiments</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default?start-index=26&amp;max-results=25'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11379514.post-8687520161885935850</id><published>2009-06-25T23:03:00.000-04:00</published><updated>2009-06-25T23:19:13.200-04:00</updated><title type='text'>Parametric VE explained</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.marcintology.com/tuning/LS3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 480px; height: 401px;" src="http://www.marcintology.com/tuning/LS3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is an explanation, representation, and pros &amp;amp; cons of the Parametric VE.&lt;br /&gt;I was told to cut it out with the math, so here it is watered down for easy reading.  I kept the math simple, I might have mentioned matrix multiplication once, but I think I got away with it.&lt;br /&gt;&lt;br /&gt;It's way too involved to be a web page so here's the downloads:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/ParametricVE.docx"&gt;Word2007&lt;/a&gt; version    &lt;a href="http://www.marcintology.com/tuning/ParametricVE.pdf"&gt;PDF&lt;/a&gt; version&lt;br /&gt;&lt;br /&gt;enjoy and for the love of Newton, please comment profusely,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-8687520161885935850?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/8687520161885935850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=8687520161885935850' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/8687520161885935850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/8687520161885935850'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2009/06/parametric-ve-explained.html' title='Parametric VE explained'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-1418939722460856882</id><published>2008-04-25T23:20:00.000-04:00</published><updated>2008-04-25T23:47:36.623-04:00</updated><title type='text'>Spot the Surge</title><content type='html'>This is a short demo of why in addition to the traditional MAX, MIN, and AVG aggregates of data we also need STD (Standard Deviation).&lt;br /&gt;&lt;br /&gt;Normally when you graph data in a histogram, you just use the AVG view, so if you were to make such a view on a log with a surging idle only in one range of temperatures, you'd get a boring and useless graph like this:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2442438228/" title="NormalAVGview.png"&gt;   &lt;img alt="NormalAVGview.png" src="http://static.flickr.com/2410/2442438228_7f18d6638f_m.jpg" /&gt; &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, if you look through few thousands frames on the Chart view, you will notice a pattern:&lt;br /&gt;Low temp (27C):&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2442387938/" title="ECT27c.png"&gt;&lt;br /&gt;&lt;img alt="ECT27c.png" src="http://static.flickr.com/3254/2442387938_da0296aff8_m.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;warmer (43C):&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2442387954/" title="ECT43c.png"&gt;&lt;br /&gt;&lt;img alt="ECT43c.png" src="http://static.flickr.com/2061/2442387954_1473a0503c_m.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;warm (58C):&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2441558963/" title="ECT58c.png"&gt;&lt;br /&gt;&lt;img alt="ECT58c.png" src="http://static.flickr.com/3106/2441558963_06ff4042f8_m.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;hot (72C):&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2441558979/" title="ECT72c.png"&gt;&lt;br /&gt;&lt;img alt="ECT72c.png" src="http://static.flickr.com/3195/2441558979_1be5f7c54b_m.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It goes no surge, big surge, big surge, small surge, no surge.  Strange, we didn't see that pattern in the average view in the scanner, did we?  Only if there was a simple mathematical construct that compares the swings of a value in reference to it's average...&lt;br /&gt;&lt;br /&gt;So here comes a new tool of mine called &lt;a href="http://www.tableausoftware.com/"&gt;Tableau&lt;/a&gt;.  I paid good money for it, so why not show it off, right?  Watch and learn what your scanners should be able to do:&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2441559017/" title="SurgingSummary.png"&gt;&lt;br /&gt;&lt;img alt="SurgingSummary.png" src="http://static.flickr.com/2192/2441559017_44a092db75_m.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The top one is STD of RPM, the middle is STD of Spark, the bottom is STD of MAP.  Also, for better visualization I took the liberty of splitting the ECT intervals from 12 to 6C.&lt;br /&gt;All these graphs are very clear:  there is very little variation at low and high ECT's, but somewhere in the middle they go crazy.  The cool part is that all three measures here show the exact same behavior!  You can trace the interval temps in the summary graph to the 'in time' charts from the scanner, and see they agree to where the engine surges and where it's docile.&lt;br /&gt;&lt;br /&gt;So I made a one more experiment and wanted to see how my new tool would display the averages graphically, to see if maybe with better graphics the surging would be visible:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/2441558997/" title="SurgingAVGexamples.png"&gt;   &lt;img alt="SurgingAVGexamples.png" src="http://static.flickr.com/3102/2441558997_752c0b002c_m.jpg" /&gt; &lt;/a&gt;&lt;br /&gt;Nope, still not visible, averages 'flatten' the surging losing all the important details.&lt;br /&gt;&lt;br /&gt;So here's my call to both HPT and EFILive:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;INCORPORATE THE STANDARD DEVIATION VIEW INTO YOUR SCANNERS!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's useful, I have a lot of other uses, but this is a nice and easy demo of how one extra function can save a lot of time chasing around the precise areas where the OLFA or RAF must be adjusted.&lt;br /&gt;&lt;br /&gt;Feel free to annoy Paul and Keith until they code it up ;)&lt;br /&gt;&lt;br /&gt;enjoy,&lt;br /&gt;Marcin&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-1418939722460856882?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/1418939722460856882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=1418939722460856882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1418939722460856882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1418939722460856882'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2008/04/spot-surge.html' title='Spot the Surge'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-460878120801080214</id><published>2008-04-06T11:23:00.001-04:00</published><updated>2008-04-06T11:23:31.898-04:00</updated><title type='text'>Three Airmass Models</title><content type='html'>In physics, when you're trying to get to the bottom of something, you usually have a model (a formula) and some data (variables with values).&amp;nbsp; Then you usually calculate something, or compare it to something which values you already know, and find a variable or a constant you don't know.&amp;nbsp; Then, these constants or calibrations can be used to be used for all other cases.&amp;nbsp; Same methodology applies to tuning, however we have not been able to use it properly, due to the lack of models for many important aspects of tuning like airmass, fueling, or temperature.&lt;br /&gt;&lt;br /&gt;So far we've been spoon fed some bullshit belief that tuning is adjusting tables because fueling changes.&amp;nbsp; It happened because we did not approach it from the physics angle.&amp;nbsp; But things have changed, and in the past 3 yrs we have determined the models for all the main processes that the ECU is using to estimate airflow and fueling.&lt;br /&gt;&lt;br /&gt;For example, there are few different ways of getting to the airmass, the main value which determines fueling.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Airmass 1, from MAF sensor:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;MAF= A*MAFhz^3+B*MAFhz^2+C*MAFhz+D&lt;br /&gt;MAF= CAM1*CYL*RPM/120&lt;br /&gt;CAM1= 120*(A*MAFhz^3+B*MAFhz^2+C*MAFhz+D)/(CYL*RPM)&lt;br /&gt;&lt;br /&gt;this is nice because all the variables here are truly independent:&lt;br /&gt;MAFhz comes from a sensor, and so does RPM.&amp;nbsp; CYL is a constant we know.&amp;nbsp; &lt;br /&gt;The only thing left is to figure out A,B,C,D.&amp;nbsp; Once we know these 4 constants describing the MAF calibration, we can give a precise reading of Airflow or Airmass, because then we have all the necessary variables and constants.&lt;br /&gt;&lt;br /&gt;But how do we find the values of A, B, C, and D?&amp;nbsp; The typical physics thing to do would be to somehow produce a situation in which we know the airflow or airmass, take the values of MAFhz and RPM, and the rest is a 3rd order polynomial fit, which is easily done in Excel or Matlab.&lt;br /&gt;&lt;br /&gt;The problem is monetary:&amp;nbsp; we dont have a device that could produce a wide range of known airflow figures.&amp;nbsp; Thus we must resort to producing that Airflow or Airmass number from somewhere else, which happens to be...another Airmass model&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Airmass 2, from fuel consumption:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;CAM2= IPW*IFR*AFRwb&lt;br /&gt;&lt;br /&gt;This looks nice and simple as the scanner gives us IPW, wideband gives us AFRwb, and IFR can be either scanned or just a lookup function based on Manifold Vacuum.&lt;br /&gt;If we assume that this is a good enough airmass model, we should be able to use it to use it as the Airmass figure in the previous section:&lt;br /&gt;&lt;br /&gt;IPW*IFR*AFRwb = 120*(A*MAFhz^3+B*MAFhz^2+C*MAFhz+D)/(CYL*RPM)&lt;br /&gt;&lt;br /&gt;This formula looks long and scary, but it's actually quite easy to solve:&lt;br /&gt;&lt;br /&gt;IPW*IFR*AFRwb*CYL*RPM/120 = [A B C D]* [MAFhz^3 MAFhz^2 MAFhz 1]&lt;br /&gt;&lt;br /&gt;This is more for a Matlab setup, in which either polyfit or mldivide work great.&amp;nbsp; &lt;br /&gt;In Excel you can simply graph it, and then 'insert trendline, type: polynomial, option: 3rd order, print equation on graph' and you will get a full equation with all the coefficients on the graph.&amp;nbsp; There's also a numerical way of doing with with the regression plugin, but if you know about this plugin, you probably can figure out how to use it.&amp;nbsp; This exercise will be left to the reader (I always wanted to say that!)&lt;br /&gt;&lt;br /&gt;Back to tuning... What this big ugly formula says is that the airmass from the fuel consumption is equal to the airmass from the MAF sensor.&amp;nbsp; As long as all the elements in the formula for CAM2 are truly descriptive of the things they describe, this method is perfect.&lt;br /&gt;&lt;br /&gt;Unfortunately the reality is much more complicated:&lt;br /&gt;Fuel systems do not hold fuel pressure under load as well as we wished.&lt;br /&gt;Injectors do not have linear fuel characteristics, so when commanding the injector to do 8ms of fuel will not result in 8 times as much fuel injected as when commanding 1ms pulse width.&amp;nbsp; This is why we have the Voltage Offset and Short Pulse Adder tables.&amp;nbsp; I'm not going to dive into details, as that could be its own huge article, all you need to know is that IFR and IPW and AFRwb are all prone to severe noise in data, and as such are not the greatest source of Airmass.&amp;nbsp; Of course with enough data we could employ statistical tools to weed out the outliers, but WOT data is hard to generate as it is.&amp;nbsp; Demanding great amounts of samples mostly increases our chances to get a speeding ticket.&lt;br /&gt;&lt;br /&gt;So is this Airmass model of any use?&amp;nbsp; Yes, if you have injectors for which you have full data in the format GM ECU's use.&amp;nbsp; This narrows it down to stockers, which cannot support much power.&amp;nbsp; Even then that's just IPW, IFR could use a fuel pressure sensor to be dynamically determined, instead of using assumptions of perfection in GM engineering &amp;lt;HA!&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Then there's another Airmass model #3 (Speed Density):&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;CAM3= GMVE*MAP/TEMP&lt;br /&gt;&lt;br /&gt;GMVE is just a computational shortcut describing VE:&lt;br /&gt;&lt;br /&gt;GMVE= CYLVOL*VE/R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Since CYLVOL and R are constants, using GMVE saves the ECU one multiplication and one division that would always yield the same value.&amp;nbsp; That's why GM decided to use GMVE instead, as it's simply faster.&amp;nbsp; To humans however, it is easier to understand 90% VE than 2.3 g*K/kPa.&amp;nbsp; However, if you can scan values directly in GMVE, it does make the math easier.&lt;br /&gt;&lt;br /&gt;TEMP is...well, if you've read my blog before you know I've spent the past year chasing after this little bugger.&amp;nbsp;&amp;nbsp; TEMP itself has multiple models, depending on model and year of your vehicle.&amp;nbsp; In the simplest case:&lt;br /&gt;&lt;br /&gt;TEMP= IAT+(ECT-IAT)*BIAS&lt;br /&gt;where BIAS is a lookup table referenced against airflow&lt;br /&gt;&lt;br /&gt;So we could use the same method I demonstrated in the previous section, and set CAM3 equal to CAM1 (if we have MAF tuned perfectly), or CAM2 (if we can describe fuel consumption precisely).&amp;nbsp; Let's take a look at the CAM2 case:&lt;br /&gt;&lt;br /&gt;IFR*IPW*AFRwb = GMVE*MAP/(IAT+(ECT-IAT)*BIAS)&lt;br /&gt;&lt;br /&gt;tuning the VE (or GMVE) consists of solving for GMVE: &lt;br /&gt;&lt;br /&gt;GMVE= IFR*IPW*AFRwb*(IAT+(ECT-IAT)*BIAS)/MAP&lt;br /&gt;&lt;br /&gt;This doesn't look too bad, right?&amp;nbsp; Well, the kicker is that GMVE will be determined by BIAS, which by itself is determined by Airflow, which is determined by GMVE.&amp;nbsp; You ever seen a dog chasing its tail?&amp;nbsp; This is exactly what this equation is doing.&amp;nbsp; In practice this is a very difficult problem to solve, and remember that this is for the simplest TEMP model, I could've given you something from a '08 Corvette which has a Bias table based on Airflow AND Speed, and the Filter table introduces a whole new dimension, as it has a damping effect on TEMP, but it does it in reference to time.&lt;br /&gt;Do not try this at home, you just might hurt yourself on a really sharp and pointy equation...&lt;br /&gt;&lt;br /&gt;OK, so what about equating CAM3 and CAM1?&lt;br /&gt;&lt;br /&gt;GMVE*MAP/TEMP = 120*(A*MAFhz^3+B*MAFhz^2+C*MAFhz+D)/(CYL*RPM)&lt;br /&gt;&lt;br /&gt;Oh wait, this has the same problem as we just discussed, as it contains the dreaded TEMP variable, which is not only car dependent, but it also combines complexity of time travel with the witchcraft...&lt;br /&gt;&lt;br /&gt;So it looks like either way we slice it, there's problems.&amp;nbsp; Anything fuel related suffers from faults and imprecisions of the fuel system.&amp;nbsp; Everything Temp dependent requires major modeling and simulation work.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;So while we have not established anything new here per say, it's clear what we should work on next, to further our understanding and ultimately develop tools to aid the tuning process.&lt;br /&gt;The bigger point here is that even though we can convert one model to another, we still need a starting point.&amp;nbsp; If we had fuel, we could have MAF or SD.&amp;nbsp; If we had MAF, we could convert it to SD or vice versa.&amp;nbsp; But there is no good start point.&amp;nbsp; If the intake tract is stock, we could assume that MAF is the start point.&amp;nbsp; If we a have stock fuel system with stock injectors, we could try to use the fuel as a starting estimator of airmass.&amp;nbsp; &lt;br /&gt;The only other solution (that I've been working on for quite some time) is to use numerical optimization methods to find calibrations that through simulation would yield the most consistant fueling.&amp;nbsp; So far, this process has been partially sucessful, but plagued by the initial lack of information on Temperature models (now solved for most model/years), and my shortcoming in mathematical education.&amp;nbsp; There's been some datasets that yielded clear results, but my methodology is not robust enough to deal with some of the more unruly cars producing noisy data, and ultimately throwing off the math so badly that the VE surfaces end up jagged and having unreasonably low or high numbers.&lt;br /&gt;&lt;br /&gt;The short version:&amp;nbsp; we got the plan for the attack, now we just gotta do the hard math.&lt;br /&gt;&lt;br /&gt;Hope this cleared up some concepts, as multiple people lately have been asking some really insightful questions.&lt;br /&gt;enjoy,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-460878120801080214?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/460878120801080214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=460878120801080214' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/460878120801080214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/460878120801080214'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2008/04/three-airmass-models.html' title='Three Airmass Models'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-114755674618292978</id><published>2008-04-05T20:54:00.000-04:00</published><updated>2008-04-05T17:54:25.903-04:00</updated><title type='text'>Cranking VE approximation</title><content type='html'>I created a quick and dirty spreadsheet that approximates CrankingVE, based on PrimaryVE table.&lt;br /&gt;&lt;br /&gt;The tables are done in EFILive format, so HPT users for now have to copy and paste special-&gt;transpose their Primary VE table before pasting into the spreadsheet, and then the same thing before they paste the results into CrankingVE table.&lt;br /&gt;&lt;br /&gt;Of course, if someone wants to create another version that works with HPT standards, I highly encourange you.  I will include it in the future version, just like the injector spreadsheet.&lt;br /&gt;&lt;br /&gt;My car is currently down so I can't test it on my own setup, so please use with caution and common sense.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/crankingVE.xls"&gt;DOWNLOAD OLD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;April 05, 2008 update:&lt;/span&gt;&lt;br /&gt;Aaron (aka 405HP_Z06)  have just contributed a more complete version of this spreadsheet with both EFILive and HPT format tables.  Enjoy, and thank you Aaron.&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/crankingVEv1.1.xls"&gt;&lt;span style="font-weight:bold;"&gt;DOWNLOAD NEW&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-114755674618292978?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/114755674618292978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=114755674618292978' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/114755674618292978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/114755674618292978'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/05/cranking-ve-approximation.html' title='Cranking VE approximation'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-1403395414782300398</id><published>2008-02-14T02:41:00.000-05:00</published><updated>2008-02-15T21:17:49.527-05:00</updated><title type='text'>Temperature Models are important</title><content type='html'>Both E38 and E40 ECU's have a Temperature Bias table with both Airflow and Speed axis, making us think that it's using both to determine the proper Bias value.  But to just make sure that's truly the case, I made a little experiment: &lt;br /&gt;&lt;br /&gt;How closely can I can predicting the temperature calculating it from components (Airflow, Speed, Filter, IAT, ECT) to the scanned values of Manifold Temperature?&lt;br /&gt;&lt;br /&gt;I wrote few Matlab scripts to take the component values, and use the model I thought it was using.  I must admit I went from pure observation and gut feelings on this, but it worked out great. &lt;br /&gt;&lt;br /&gt;Test #1:&lt;br /&gt;I made a simple model without any Speed dependencies, the Bias table was purely based on Airflow.  I used it to model some E38 data, and it was just rubbish, completely different look and feel to the scanned vs the calculated values.  &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2302/2268249250_64a02a1460_o.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm3.static.flickr.com/2302/2268249250_64a02a1460_o.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test #2:&lt;br /&gt;I expanded the previous temperature model to include Speed in predicting the scanned Manifold Temperature values.  And the results were very positive:  not only the graphs of predicted vs scanned values were very close to  each other, but the set of parameters that yielded the best fit were very similar to the values in the tune which was used to generate this log!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2059/2268249236_ceedb109af_o.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://farm3.static.flickr.com/2059/2268249236_ceedb109af_o.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test #3:&lt;br /&gt;A month or so passes, and I get some E40 data.  Blindly, I grab the Temp modeling scripts I've been working with (the ones that worked so well for E38 data), and use them to predict some temps on the E40 values.  The result was confusion and big disappointment:  the predicted values were somewhat following the scanned ones, but the differences were sometimes quite large (~10 Kelvin).  (click on pictures for bigger, more readable versions)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2060/2263690665_4764cfbdcd.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://farm3.static.flickr.com/2060/2263690665_4764cfbdcd.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/needs&gt;&lt;/needs&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Then I remembered that I'm using the newer model on the data generated by an older ECU.  Quick edit of my scripts, and the new predicted values were dead on overlayed the scanned.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2137/2264478886_9b8df4285f.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://farm3.static.flickr.com/2137/2264478886_9b8df4285f.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is important for few reasons:&lt;br /&gt;1.  We now know the temperature model for E40 (uses Airflow only for the Bias table)&lt;br /&gt;2.  We now know the temperature model for E38 (uses Airflow and Speed for the Bias table)&lt;br /&gt;3.  We now know that the Bias tables in the two ECU's even though they show the same in HPT (I haven't looked in EFI yet) are actually used very differently.  This is a glorious display of phrases like 'looks might be deceiving' and 'verify your assumptions'&lt;br /&gt;4.  Newer models aren't necessarily backwards compatible.  &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now that we know this, we can do some cool stuff, but more on that later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-1403395414782300398?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/1403395414782300398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=1403395414782300398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1403395414782300398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1403395414782300398'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2008/02/temperature-models-are-important.html' title='Temperature Models are important'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-5147096639762852937</id><published>2008-01-12T22:02:00.001-05:00</published><updated>2008-01-12T22:02:43.953-05:00</updated><title type='text'>Temperature Modeling, part 2</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;Since my last “Temperature Modeling” paper came out, there was a lot of good discussion concerning the paper itself, the findings, the spreadsheet, the theory, and a lot of other concepts intrinsically bound to the airmass estimation process.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I am going to try to address as many of these issues here for further clarification, as you guys really can bring up a lot of good points forcing me to go back, rethink, recheck, reevaluate a lot of previous notions.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;The spreadsheet accompanying the paper is NOT a solution to the bias tuning problem.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is merely a simulation, a toy helping to understand the process of estimating temperature.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It was my mistake to use the word ‘optimize’ anywhere near it, as a lot of people thought you can use it to figure out what you need to put in for the values in Bias and Filter tables.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is not.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is there purely for education and entertainment.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I helped me a lot in understanding how the bias and filter work together to simulate smooth transitions of temperature of air in the intake.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;What you can ‘optimize’ with it, is the model itself.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;While we have the tables containing data, we do not have the formulas governing them.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For example, in the Bias table, intervals are 10g/sec (i.e. on the older F-body computers) or 4g/sec (on the E40 and newer computers).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Are the values contained in the cells for the border value itself, or the centers of the range around them (32g/sec would be a center of 30..34g/sec on an E40 ECU)?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;What happens when the value we need to look up is not in the cell directly?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Is it rounded to the nearest known value?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Is it interpolated?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;What kind of interpolation:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;linear, spline, cubic, Bezier?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Until we start hacking the code on the ECU itself, we will not know answers to these questions, however, a spreadsheet like this allows us to play with the different scenarios and see what works and what does not.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Of course this is not a proof of anything, but the changes should be visible enough to see some interesting correlations.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Another important thing that came up during the creation of the spreadsheet is the final metric, how we evaluate the goodness of the model we conjectured.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The traditional metric in HPT or EFILive is expressed by (AFR-AFRwb)/AFR.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So when a metric of a fit is needed for a range of values, most people employ the average of the AFR%Error or BEN.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The problem with that is these errors can be both positive and negative, so they can eliminate each other numerically.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For example if you just used the traditional AFR%Error histogram and see 0%, you automatically jump to the conclusion you have the perfect tune, while in fact it might have been roughly the same number of errors on positive and negative sides.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Considering that measuring entities often follows the normal distribution, the errors on both sides will quite likely be in the business of pushing the average toward 0.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This is probably why it takes a few passes to get the fuel trims in the neighbourhood of where they should be to begin with.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This made me decide that a better metric is needed to assess the different models we come up with.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Just putting an absolute value on the AFR%Error will give you only positive values, making all errors ‘grow’ the average, not drive it toward a zero average.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Also, since the number resulting from such a computation is an actual percent of difference, you can sum or even average the errors, getting a better idea on the nature of the errors in your system.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Such a system would work just as intended with a great number of clean samples.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, in real world, lots of data is hard to gather, as well as outliers occur fairly frequently, throwing off the averages.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Thus, someone had an idea of squaring the difference (AFR-AFRwb)&lt;sup&gt;2 &lt;/sup&gt;between the empirical data (AFRwb) and the intended target (AFR).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This way, the small errors would contribute very little to the sum, while the larger errors would carry a significant weight with them.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This approach is great for spotting systems with a large number of outliers, as they make the sum grow quickly.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The problem is that too many outliers will weigh so much that the real data will become almost completely ignored.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Yet another metric is the maximum error (max(AFRwb-AFR)).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The good aspect of it is that while the errors might not be small, they’ll all be within a certain range from the target.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;No matter which of these metrics are used, the goal is the same:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;to make our system predict/describe an observed function with more precision.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Certain metrics are going to skew results in different ways, but altogether they improve the model.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The important thing here is that there is no one ultimate metric, we have to know and understand few different ones, and use the ones that make most sense for what we’re trying to do.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In the case of tuning AFR, you don’t want to go too lean or too rich; you want to keep the discrepancies close to the target AFR.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For such a situation I like to use the maximum deviation metric, as it tries to ‘squeeze’ all the errors under the same level.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, I found practically that it’s not a good metric to start with, as the computer was having problems with finding an optimal answer starting from a wild guess.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Sum of squared errors metric was much better for the initial pass, to get the parameters close to what we’d like it to be.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;With these initial parameters, the maximum deviation metric was much more useful.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;So what is all this metric talk for really?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The idea of optimization is to minimize errors.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, you cannot make a decision on which model is better, until you can put a number on every model.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The interesting part is that in the end it does not matter what it is that you’re minimizing, the maximum deviation or sum of squared errors, as long as it is smaller than before, progress was made.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;That is how I set up the spreadsheet.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There are multiple models, with multiple metrics assessing the fit.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Parameters in all of them are the same, but strangely enough, different models like different parameters, which only further stresses the importance of figuring out the full model, not just the parameter values.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The Solver in Excel is quite good, albeit tricky sometimes, at arriving at the best set of parameters.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is however very intriguing to watch how the parameters change (or not!) depending on which metric was being minimized.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The best part is to watch the charts change; MATbias, MATfilter, MATscanned, alongside with ECT, IAT and Airflow all dancing around, and the more you optimize, the closer the MATfilter would get to MATscanned.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Another interesting thing is to see the more drastic changes in airflow (acceleration, deceleration) rapidly swing the estimated temperature one way or another.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Depending on which metrics get optimized, certain patterns on the graph are either followed closer, while others get ignored altogether.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I highly recommend spending some quality time playing with the different models and metrics, to get a real feel for what we’re dealing with here.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;We cannot forget what this spreadsheet is however.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is an estimator of an estimator.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We do not, and will not know the real temperature inside of the intake, until we use an old-fashioned empirical method of sticking an extraneous probe into the bowels of the intake somewhere.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;At best, if all the math and modeling we developed is perfectly the same as the one in the ECU, the MATscanned and my MATcalculated would be the same.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Making them the same does not optimize the model to report the proper temperature; it only allows me to play with the components in such a way that I predict the result with greater degree of confidence.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;IAT, ECT, and the Bias and Filter tables are all a part of an estimator—that is all they do.&lt;/p&gt;  &lt;br /&gt; &lt;p class="MsoNormal" style="text-align: justify;"&gt;The purpose of all this mathematical gymnastics is to learn how the computer estimates the temperature in the intake.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;With understanding comes control.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Control allows experiments and simulations to take place and either prove a theory or debunk a myth.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If our model is consistently close enough to MATscanned though, it would be a good time to try the optimized parameters in the tune, and see if it follows what the numbers intended to yield.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;The real complication is that it looks like we will not get VE tuning without arriving at the correct Bias tables, and we will also not get Bias without a solid VE table.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I am trying to do it together, hoping that setting them to correct and realistic values would yield least errors across the full simulation, but it is neither obvious to understand nor easy to implement.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Few other points that came across very strongly in all the discussions:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Proper attribution is key:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;other factors (i.e. timing, transitions) can have a significant influence on AFR, and the changes due to temperatures are lost in the noise from other factors (hpt&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;thread 14996)&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;This temperature accounting discussions brought out few new people:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For example, one dude named Adrian had this simple, but very profound idea.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If MAT=IAT+(ECT-IAT)*BIAS then MAT-IAT=(ECT-IAT)*BIAS, so with a MAT probe we could determine BIAS.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If MAT=IAT, then BIAS=0, which is nice, because not only it satisfies scientific formulas, but also makes common sense.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;With an extra temperature probe in the intake (probe part number GM PART # 25036751) we could arrive at BIAS in a very simple way.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Any takers?&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Another interesting point that came up in the discussions was the reason for the whole temperature estimation model, instead of a simple probe mounted inside of the intake.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Would it be reasonable to think that the whole complex estimator was created because probes in MAT were measuring the temperature of the intake housing, and not the air inside?&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Another guy, Phillip, did some experiments and brought up to light that the temperatures do not affect MAF readings, while SD is clearly affected by temperatures.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This means that with a proper MAF calibration, VE calibration can be obtained by mapping out the MAF airflow on the traditional RPM/MAP axis, and back calculating VE based on the temperature estimates.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This is interesting, as one of my first contributions to the tuning community was the idea that MAF tuning is easy, because all you have to do is map out the airflow resulting from the VE-based SD calculations onto the MAF scale, which is the exact reverse of what this newest batch of research suggests.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;A thing that bugs me about the various bias tables is how they differ from one model year to another.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There are straight lines, two sloped straight lines, lines that look like exponential delay… ultimately, they all point at the same patterns:&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;at small airflow numbers the bias line starts toward ECT, and quickly works toward IAT, asymptotically leveling off at the end.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;To make estimating the bias curve possible, we must have some sort of idea for the function.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Exponential decay curve makes for such a line, as it has all the properties we need (BIAS=a*e&lt;sup&gt;(-k*MAF)&lt;/sup&gt;+b).&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Another great thing about the exponential decay curve is that we can manipulate its shape using three parameters, making the fitting process about as complicated as a polynomial or even a straight line, but results in a fairly complex curve shape.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Tunes often have tables that are either unused, or used in irrelevant ways.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For example there’s a voltage multiplier for IFR, which is just set to 1.0 on most cars.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, on the 4 cylinder cars you can use it to achieve the effective IFR higher than its natural limit of 64 lbs/hr.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;On all other platforms I tried, changing these values has no effect.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Such ‘occasionally functional’ tables make me wonder what is the purpose of adding a dimension of speed to the Bias table in the E40 ECU on the 05-06 GTO.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The Bias values do not change along the speed axis, making it effectively useless.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Is the full table used, and the calibration just does not take speed into account, or is the computer still using only one row of values, and the rest of the table is unused?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It is not that extra complicated to account for it, but I do not want to introduce variables to the model that are simply not there. &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Most discussions about system modeling end up with someone attempting to oversimplify a complex system.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Reducing GM’s MAF/SD hybrid to pure MAF or pure SD to tune a particular table is an example of simplification in the name of gaining control.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;On the other hand, we have people setting the Bias table to one value across the entire table, simply because they do not understand how the system works.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The combination of the Bias and Filter tables is a great example of how an ‘overcomplicated’ system can easily (and properly!) become a simpler, older version of the same system.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;You can think of it as an evolutionary process, where evolution was forced upon insufficient precision of the older, simpler systems.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In the beginning there was a single IAT probe which was used for air charge’s temperature estimation.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;It probably did not work too well, so they decided to move this probe into the intake, hoping to be ‘closer to the action.’&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This also turned out to be a fiasco, as the probe ended up measuring the temperature of the intake more so than the air inside the intake.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The decision was made that since you cannot apparently measure the temperature in the intake, then it would be better to estimate it, as it is going to be between the two sources of the extreme temperatures in the engine bay—the airbox and the coolant.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A first attempt at this estimator was made using the Bias table alone, a simple matter of proportioning the two temperatures based on airflow involved.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If you simulate it, the sequence of temperatures resulting from such proportioning yields rather choppy and abrupt final temperature function.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Since most things in nature have smooth transitions, such a model demonstrated a need for a smoother output.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Such an output was provided by introducing the Filter table into the model.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The more airflow is involved, the quicker the temperature will converge to the newly present conditions.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If that was not complicated enough, the Bias table have grown a dimension to accommodate changes in bias depending on speed of the vehicle.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I would guess this is due to the fact that at higher speeds the incoming air not only gains density, but it also has lower temperature of the air charge.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So the system have evolved from a single sensor with no corrections on it, to a monster with three sensors (IAT, ECT, SPEED), and two tables (Bias is 2D, Filter is 1D), proportioning and dampening the inputs to create an estimator of temperature in the intake.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Let’s say we have a car with the fully evolved implementation of this estimator, but we have no clue how to calibrate all the necessary tables.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;However, we might know how to deal with a simpler system, let’s say it’s the one without the filter table and with a 1-dimensional Bias table.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If we fully understand the system (even if we cannot control it) we can set the values of the Filter table to 1 (instant change) practically eliminating it from the system.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Then, if the Bias table’s speed dependent values are set to be identical for each airflow, the Bias table would become its own simpler version, fully emulating the behavior of an older system; hopefully it is close enough to yield good results, and simple enough that it is solvable.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;Here is the best example of how not to simplify the complex systems.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This is picked from some older bias adjusting discussions on the HPTuners’ forum:&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;“well..my cylinder bias temp is 1.0 across the board for now..and because they are all the same value my filter settings basically dont matter you would think this is a bad idea..but sometimes de-engineering GM and simplifying is a lot better than trying to use thoer whole dam slew of BS they throw in there..LOL”&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-5147096639762852937?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/5147096639762852937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=5147096639762852937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/5147096639762852937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/5147096639762852937'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2008/01/temperature-modeling-part-2.html' title='Temperature Modeling, part 2'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-128963318319472447</id><published>2007-11-03T12:44:00.000-04:00</published><updated>2007-11-03T12:51:25.177-04:00</updated><title type='text'>site updates</title><content type='html'>I just went through the site and fixed all the possible dead links, pictures, spreadsheets, etc. I could find, so the site is back to a useful state.  It's entirely possible I missed stuff, so if you see anything broken, PLEASE LET ME KNOW.&lt;br /&gt;&lt;br /&gt;I'll probably work on modifying the template, as the narrow column display is good for cheerleaders posting about their feelings, but not exactly fitting for all the graphs, charts, histograms and other crap tuning requires.  So if the site looks goofy this weekend, just have patience and keep checking back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-128963318319472447?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/128963318319472447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=128963318319472447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/128963318319472447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/128963318319472447'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2007/11/site-updates.html' title='site updates'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-6351224134397429571</id><published>2007-10-07T20:47:00.000-04:00</published><updated>2007-10-07T20:47:14.541-04:00</updated><title type='text'>Temperature Modeling</title><content type='html'>&lt;span style="font-family: verdana;"&gt;Well, I'm back.  I'm done with school, so I finally got time to do tuning stuff.&lt;br /&gt;&lt;br /&gt;This is the first part of a larger thing I've been working on.  The goal is both MAF and Speed Density tuning that works day, night, summer, winter, and at any altitude.  Temperature is one of the three components needed.&lt;br /&gt;&lt;br /&gt;Here's the paper:  &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.marcintology.com/tuning/Temperature_Modeling_1_0.pdf"&gt;DOWNLOAD&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; (370kb) &lt;br /&gt;&lt;br /&gt;The 'nice' version of the spreadsheet is coming soon, as I still gotta write up some instructions for it.  If you must have it now, here's the &lt;a href="http://www.marcintology.com/tuning/TempModeling.xls"&gt;DOWNLOAD&lt;/a&gt; (Excel 2003, 7.1Mb) and &lt;a href="http://www.marcintology.com/tuning/TempModeling.xlsx"&gt;DOWNLOAD&lt;/a&gt; (Excel 2007, 3.7Mb)&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Marcin&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-6351224134397429571?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/6351224134397429571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=6351224134397429571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/6351224134397429571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/6351224134397429571'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2007/10/temperature-modeling.html' title='Temperature Modeling'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-4314675382114548230</id><published>2007-03-03T16:18:00.000-05:00</published><updated>2007-04-27T22:31:25.599-04:00</updated><title type='text'>Natural limits and bad weather</title><content type='html'>So in the previous post someone asked me to post my spreadsheet for one of the pictures I posted. To be honest, I cooked it up really quick, and I think I nuked it at the end, so I had to make one from scratch again.  This time however I had some fresh data from a LS2 with the Maximum VE tables upped into a reasonable territory.  The problem with this data was that it was taken a day after the horrible tornados that went through The South recently, so maximum MAP for example was about 96kPa, while I've seen over 102kPa on this car before, so I know it's the weather, not a physical limitation of the car.&lt;br /&gt;&lt;br /&gt;Also, since I've started dealing with LS2's, few limits became apparent:  first it was the IFR table, then it was the GMVE, now it's the extra low airflow and airmass limits that I wrote about few days ago.  All these limits got me thinking on what are the real limits of the stock computer.  Afterall, with 63.95lb/hr of fuel I knew we'd run out of ability to describe fuel delivery, and 4.096 K*g/kPa on the GMVE table would limit the amount of airmass and airflow we could report.&lt;br /&gt;&lt;br /&gt;Put all these things together, and I ended up with two spreadsheets:  first, the correct version of what I created for the last writeup (yes, it was wrong!  I'll correct it later), and a spreadsheet where I can convert gathered data into a much more comparable airflow and airmass figures, corrected to SAE conditions (99kPa, 25*C).&lt;br /&gt;&lt;br /&gt;I'll start with explaining what I've done before and how it's all better now.&lt;br /&gt;I took the Maximum VE values, and converted them to airmass, and then airflow values.&lt;br /&gt;This shows that at extreme conditions of 188F IAT (why I picked these, I'll explain bit later) we'd get about 280g/sec of airflow at 6400rpm, which is also the limit expressed in other tables, so they make sense all together.&lt;br /&gt;&lt;br /&gt;&lt;a title="LS2limitsat360K.png" href="http://flickr.com/photos/92934077@N00/409119834"&gt;&lt;img src="http://static.flickr.com/183/409119834_89774a191b_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For exploratory purposes, I also added 2 'reverse' scenarios, for the pupose of seeing what kind of GMVE values one would get to achieve a certain airmass (or airflow in the second case).&lt;br /&gt;Notice that with near max'ed out GMVE numbers, we'd get about 68lb/min airflow.  If that sounds familiar, that's because it is.  MAF's maximum number is 512g/sec which is the same damn limit.  So this means, GM made the expressive powers of both VE and MAF tables equivallent, even for the worst conditions, which is the proper OEM thinking, always engineering for the worst possible scenario.  So this means that no matter whether we use SD or MAF tuning, the limits are going to be the same.&lt;br /&gt;&lt;br /&gt;The middle section (GMVE from airmass) was made becuase  I wanted to see what valued I should expect from a well flowing big cam/heads setup, as I've seen some put down over 1.05g/cyl airmass.  It's not exactly crucial, but it helps the total understanding.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then I wanted to see how the numbers would change, if we made the aircharge temperatures slightly more optimistic, let's say about 80F (27C for these living in countries with a sane unit system), and I got these:&lt;br /&gt;&lt;br /&gt;&lt;a title="LS2limitsat300K.png" href="http://flickr.com/photos/92934077@N00/409119850"&gt;&lt;img src="http://static.flickr.com/179/409119850_97e27de5c4_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turns out, that when temperatures are sane, we can get the same airflow as before, well below the GMVE table's limit!  This is where a big bulb went off over my head.  The reason why we've had so much problems with VE tuning in LS2, is becuase GMVE, while generally proportional to the old fashioned VE we're used to from LS1 computers, also reacts to pressure and temperatures!  This means, unless we normalize pressures and temperatures while SD tuning, resulting GMVE  are going to vary with the atmospheric conditions! &lt;br /&gt;&lt;br /&gt;Yes, these statements require exlamation marks.  In LS1 world, VE was nice to have, because it was temperature and pressure invariant.  Here, we dont have this comfort anymore.  OOPS, no wonder LS2's didn't want to easily converge on a stable GMVE table!&lt;br /&gt;&lt;br /&gt;Good luck for my research, and bad luck for Alabama and Georgia, tornados hit them hard lately, and I just happened to send one guy who lives there to a dyno, to see what our recent extensive SD tuning managed to achieve.  He wasn't happy, because the numbers were down from previous hacks performed by various pseudo tuners.  So partially to cheer him up, and partially to find out just how much power can bad weather 'steal' from a car, I started some more number crunching.&lt;br /&gt;&lt;br /&gt;Because these were dyno runs, I displayed all kinds of data against RPM.  Temperatures, airmass, airflow, pressures, all got dumped into a table, as I didn't quite know yet what I'm going to need.  Also because I wanted to get as close of numbers as possible, I grabbed data from the ECT vs IAT bias table.  For these who havent played with it, it's a table that based on how fast the air is moving in the intake (airflow), the temperature used to calculate airmass (and thus airflow) would be weighted by different amount for IAT and ECT. &lt;br /&gt;&lt;br /&gt;&lt;a title="badweather_data_1.png" href="http://flickr.com/photos/92934077@N00/409208550"&gt;&lt;img src="http://static.flickr.com/145/409208550_a2f57f440c_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So first I calculated  the temperature bias based on airflow and the temperatures.  From that I was able to get the temperature that the computer (hopefully) uses to calculate other stuff.&lt;br /&gt;Having that temperature, I was able to backcalculate GMVE values that gathered airmass figures would yield.  To verify the correctness of my simulation, I calculated airflow using my new GMVE values, to compare against the airflow gathered directly from the computer.  Error through the whole range is less than 0.7% in all cells except the edge ones, which is understandable, as we're using averages values, and on the edges we dont have data gathered from the entire range (ie.  we're using 6800rpm to calculate airflow in that cell, but the data gathered from it would be calculcated from 6600-6800, so the average should be more like 6700).  Either way, I can live with 0.7% error in my simulation.&lt;br /&gt;&lt;br /&gt;&lt;a title="badweather_data_2.png" href="http://flickr.com/photos/92934077@N00/409208652"&gt;&lt;img src="http://static.flickr.com/158/409208652_af8455d60e_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With the GMVEs calculated for these particular conditions, I decided to see what the airflow and airmass would be like in SAE conditions.  Low and behold, they would go up, quite significanly too.  2.5lb/min at peak airflow and 0.04g/cyl at peak airmass extra.  I've been using a metric of 9hp per each 1lb/min of airflow for ballpark estimation, as it usually creates reasonable numbers, useful for more 'common sense' comparisons.  So in the case of this car, we'd get 24hp correction. &lt;br /&gt;&lt;br /&gt;&lt;a title="badweather_data_3.png" href="http://flickr.com/photos/92934077@N00/409208636"&gt;&lt;img src="http://static.flickr.com/164/409208636_42e8a72cf3_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then I decided to yet again, calculate GMVE for the corrected airflow, to see how it would look like at these SAE conditions, and how far off it was from what we had, hoping we would see a correspondence to the AFR%Error logged.&lt;br /&gt;Almost all new GMVE values ended up being about %2.4 off from what we calculated earlier.  AFR%Errors are much more varied in both magnitude and direction of the correction.  So that's not what cause these AFR swings.  Where it really came from will be a whole different study.&lt;br /&gt;&lt;br /&gt;Ok, so this was a lot of stuff... What's the point, what's the punchline here?&lt;br /&gt;&lt;br /&gt;We cannot tune GMVE the same way we used for VE.  I dont know how the hell I missed it the first time around, but that's what you get for theoretical tuning.  You guys really oughtta buy me a GTO--Please paypal all your donations to marcinpohl at gmail dotcom ;)&lt;br /&gt;Joking aside, but this is going to need another tool/spreadsheet/customPIDs or something creative like this.  The new way of doing LS2 VE table is going to need taking into consideration not only current VE table and AFR%Error (or BEN's for EFILive folk), but also temperature and pressure.  We will effectivelly have to convert the GMVE into VE, apply the correction there, and then convert it back to GMVE based on some conditions that the computer has to assume as standard values.  &lt;br /&gt;I will definitely make a tool for it, but not now, I really really oughtta get back to my thesis right about now.&lt;br /&gt;&lt;br /&gt;MaximumVE spreadsheet &lt;a href="http://www.marcintology.com/tuning/LS2withVElimits_ver2.xls"&gt;DOWNLOAD&lt;/a&gt;  &lt;br /&gt;Bad weather correction &lt;a href="http://www.marcintology.com/tuning/badweatherimpact.xls"&gt;DOWLOAD&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-4314675382114548230?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/4314675382114548230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=4314675382114548230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/4314675382114548230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/4314675382114548230'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2007/03/natural-limits-and-bad-weather.html' title='Natural limits and bad weather'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-5044410283494792506</id><published>2007-03-02T00:59:00.001-05:00</published><updated>2007-03-03T18:26:14.209-05:00</updated><title type='text'>LS2 airflow uncorked?</title><content type='html'>&lt;p&gt;I'm not sure if anyone noticed this before, but when you're tuning LS2's with the new funky GMVE units, they go up, reshape, but ultimately reach an early upper bound of about 2500.  I always wondered about this, as it made no sense, most LS2's VE table and the resulting airflow would not reflect the real torque and horsepower gains.  &lt;/p&gt;  &lt;p&gt;Today, completely by accident I find a table called Maximum VE, sitting right there under Airflow-&amp;gt;Dynamic Airflow.   In EFILive, the symbol is {B2030}.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="MaxVE.png" href="http://flickr.com/photos/92934077@N00/407502815"&gt;&lt;img src="http://static.flickr.com/147/407502815_6775f6dd31_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I open it up, and low and behold, it maxes out about 2500, with a peak at 4400-4800RPM, just like most LS2's peak torque.  I quickly punch in some numbers into a spreadsheet, to see what kind of Dynamic Cylinder Torque am I going to see.  Again, everything agrees with near stock LS2 numbers, around 0.85g/cyl airmass at peak.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="LS2limitsat300K.png" href="http://flickr.com/photos/92934077@N00/409119850"&gt;&lt;img src="http://static.flickr.com/179/409119850_97e27de5c4_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This little spreadsheet also shows how much airflow you'd see with these airmass numbers at given RPM.&lt;/p&gt;  &lt;p&gt;So I grabbed some recent logs from a well flowing, healthy, well tuned big cam LS2, and started charting max Dynamic Cylinder Air vs RPM.  To make this task easier, I try to find a table that's already preconfigured for the same RPM intervals, as the VE Maximum table.  Not only I found the VE Maximum table, but I also found few other tables that seem to pertain to the same problem:  Maximum Airflow vs RPM, Maximum Airflow vs IGNV, and Maximum Airflow Delta vs TPS.  They're all set up to deal with stockish power, 280g/sec (37lb/min) airflow, and small MAP and Airflow deltas.   On the editor side of things, you can find them under Engine Diagnostics-&amp;gt;General-&amp;gt;Diagnostic Tests.  In EFILive, the symbols are {C0803} to {C0806}&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="LS2otherlimits.png" href="http://flickr.com/photos/92934077@N00/407501156"&gt;&lt;img src="http://static.flickr.com/157/407501156_b89ae5d7d5_d.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I quickly eyeballed what the numbers mean, and what they should be set to more realistically, and came up with this:&lt;/p&gt;  &lt;p&gt;&lt;a title="newLS2limits.png" href="http://flickr.com/photos/92934077@N00/407502819"&gt;&lt;img src="http://static.flickr.com/160/407502819_361ceb525a_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So this should work for most NA LS2's.  I hope this is the limit, because it would explain a lot of issues I've been having tuning a large cam LS2, and the more airmass we'd get, the more timing would get pulled without a reason.  Hopefully this is yet another Torque Managment issue, this time trying to save the engine from too much torque by pulling timing when hitting airmass/airflow limits.  With this&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The problem is that I still don't have a local access to a damn LS2!  Anyone around Monterey wants to be my lab rat and get their car tuned in the meantime?&lt;/p&gt;  &lt;p&gt;Anyway, I need you LS2 folks who have already braved the weird VE table and are running abyssmal timing to prevent it from Knock Retard, this might be your solution.  I need you to change these limits that I posted pictures for above, and watch what happens to your Dynamic Airflow and Dynamic Cylinder Airflow.  I'm predicting it's going to go up a significant amount.  This means it might need a retune.  Suddenly you'll be using deeper regions of timing tables, so please alter them accordingly.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Of course, this is all liability free, you're ready to blow up your engine, yadda yadda yadda, can't sue me stuff...&lt;/p&gt;  &lt;p&gt;Please report back with your results, they're absolutely crucial as I don't have direct access to a LS2.  The best way to do this would be to have a before and after pairs of logs and tunes, with the only change in between being the changes I recommended above.  Remember that because you're going to 'uncork' your LS2 vehicle, you will probably experience lean conditions so please proceed carefully, set your PE ratios on the rich side with a healthy amount of safe margin.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The great thing about all this is that you will possibly be able to get more timing out of it, and get even more torque.  So far I've had to cut down the timing on the big cam LS2 I've been helping with lately to below 20* to get rid of most, but not all knock.  Without limits, the preemptive KR should disappar, airmass and airflow should skyrocket, timing would not have to be severly limited to push the airmass under the 'safe' limits.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;This should really help.  Airflow numbers should be realistic, torque should improve, and we'll all support the economy by buying new tires and clutches.&lt;/p&gt;&lt;p style="text-align: center;"&gt;Got airflow?&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a title="jeremy clarkson.jpg" href="http://flickr.com/photos/92934077@N00/407501149"&gt;&lt;img src="http://static.flickr.com/156/407501149_e110b0fbbe_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-5044410283494792506?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/5044410283494792506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=5044410283494792506' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/5044410283494792506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/5044410283494792506'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2007/03/ls2-airflow-uncorked.html' title='LS2 airflow uncorked?'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-1706495012822480447</id><published>2007-02-25T17:05:00.000-05:00</published><updated>2007-02-25T17:08:34.782-05:00</updated><title type='text'>Injector Sizing Explained</title><content type='html'>This was written a while back in response to some stellar forum exchanges.  I finished it up because apparently it's still badly needed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Injector sizing concerns itself with the two ends of fuel consumption: idle, and WOT.&lt;span style=""&gt;  &lt;/span&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;At idle, you are limited by time a given injector takes to open, spray minimal amount of fuel, and then close. &lt;span style=""&gt; &lt;/span&gt;Different injectors have different characteristics, but generally speaking, the bigger the injector, the bigger the minimal amount of fuel it wants to spray. &lt;span style=""&gt; &lt;/span&gt;If this minimal amount of fuel injected is bigger than the need for the fuel at the given airflow consumption, you will dump more fuel than it needs.&lt;span style=""&gt;  &lt;/span&gt;This will cause carbon buildup, mess up spark plugs, eventually kill O2 sensors, and it generally going to make the car run like poo, since it's basically over fueling.&lt;span style=""&gt;  &lt;/span&gt;Over fueling is easily recognizable as surging. Engines with big cams, or any other 'race' modifications have a significantly diminished efficiency of the motor at low pressure and low RPM. &lt;span style=""&gt; &lt;/span&gt;This means that it needs a lot less fuel than stock setups at idle. &lt;span style=""&gt; &lt;/span&gt;On the flip side, hopped up motors have need for bigger injectors at higher RPM and pressures, to match the increased airflow.&lt;span style=""&gt;  &lt;/span&gt;These two aspects often clash, as the bigger injector is not capable of injecting smaller amount of fuel at idle.&lt;span style=""&gt;  &lt;/span&gt;This is when the injector sprays the minimal amount it can do, which is often bigger than what the motor needs and you're back to over fueling and surging. &lt;span style=""&gt; &lt;/span&gt;This is why you have to raise idle RPM on such setups--bigger cams get up to higher efficiency very quickly with more RPM.&lt;span style=""&gt;  &lt;/span&gt;You have to figure out at what RPM the airflow requires more fuel than the minimal pulse width of the injector.&lt;span style=""&gt;  &lt;/span&gt;There are a lot of variables involved, and very few of them are linear, so this is not a problem with an easy solution. &lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;At WOT, the situation is the opposite. &lt;span style=""&gt; &lt;/span&gt;You just have to make sure that at any given airflow, the amount of fuel needed isn't bigger than ~85% duty cycle of the injectors.&lt;span style=""&gt;  &lt;/span&gt;On naturally aspirated setups this is simple, as the airflow usually just goes up with RPM as MAP is pegged at atmospheric pressure's level.&lt;span style=""&gt;  &lt;/span&gt;On boosted setups, you can boost a lot more in midrange than up top with fairly small injectors.&lt;span style=""&gt;  &lt;/span&gt;This is exactly what the 'chipped' 1.8t Audi/VW's do, 17psi at 4000rpm, and back to like 7psi by redline, so the dinky stock injectors have enough time to spray in required amount of fuel at high RPM, while at lower RPM they just take longer to provide adequate amount of fuel.&lt;span style=""&gt;  &lt;/span&gt;These are two crucial ideas:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;1.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Injectors cannot regulate how much they spray in any way other than how long they are ‘ON’.&lt;span style=""&gt;  &lt;/span&gt;That time has to be smaller than the time between ignition, and that’s exclusively RPM dependent.&lt;span style=""&gt;  &lt;/span&gt;So don’t look just at the Pulse Width, you can only judge it against RPM.&lt;/li&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;2.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Airflow depends on many factors:&lt;span style=""&gt;  &lt;/span&gt;VE, boost, RPM and of course, displacement.&lt;span style=""&gt;  &lt;/span&gt;You must take ALL of them into consideration at ALL possible values.&lt;span style=""&gt;  &lt;/span&gt;A small engine at midrange RPM can make a lot of airflow with enough boost.&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;The duty cycle is an often misunderstood.&lt;span style=""&gt;  &lt;/span&gt;It's a ratio between the pulse width required for proper AFR and the length of time you have to inject that amount of fuel.&lt;span style=""&gt;  &lt;/span&gt;It is dictated by the RPM and the Otto cycle. &lt;span style=""&gt; &lt;/span&gt;20ms pulse width at 3000rpm is just fine (50% duty cycle), because the 'window of opportunity' is 40ms. &lt;span style=""&gt; &lt;/span&gt;But the same 20ms pulse width at 6000rpm is 100% duty cycle because the 'window of opportunity' is also 20ms.&lt;span style=""&gt;  &lt;/span&gt;Very often on forums you get people making statements like 'my car runs just fine at 130% duty cycle, so the stock injectors must be underrated.' &lt;span style=""&gt; &lt;/span&gt;What they really mean is their injectors don’t have the capacity to provide enough fuel in the time allotted. &lt;span style=""&gt; &lt;/span&gt;The computer calculates air mass, figures it needs 30ms worth of fuel and starts spraying, not thinking if it has that much time before the next ignition or not.&lt;span style=""&gt;  This is where the ridiculous 'acceptable' duty cycle numbers come from.  Computer calculates that it wants 30ms fuel with 20ms to do it in, it's going to show 150% duty cycle.  This however doesn't mean the fuel gets there.  It physically cannot get there in less time than it's allowed, as the intake valve closes shut.  So what happens then?&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style=""&gt;&lt;/span&gt;Not only the ignition will happen without all of the fuel necessary at the time, but the fuel is still spraying during the power stroke, puddling on top of a hot valve. &lt;span style=""&gt; &lt;/span&gt;Then the injectors turn off and recharge for another spray cycle half way through another cycle already, when they should be spraying fuel. &lt;span style=""&gt; &lt;/span&gt;So while one cycle might be fueled fine, another one is going to be lacking proper fueling. &lt;span style=""&gt; &lt;/span&gt;Such sequences of events cause severely unpredictable fueling and widely scattered AFR, fluctuating EGT's, and generally making it unpredictable and difficult to tune. &lt;span style=""&gt; &lt;/span&gt;In addition to that, you're stressing the injectors beyond their operational range, overheating them, and possibly causing a pre-ignition.&lt;span style=""&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;Without proper injectors, at best your car is going to be running like shit; at worse it will cause a meltdown. &lt;span style=""&gt; &lt;/span&gt;It's just not worth risking. &lt;span style=""&gt; &lt;/span&gt;Injectors are cheap, I will never understand people who are willing to drop 3k in heads that flow few CFM better than others half the price, but won't even think of spending $300 to make sure that the airflow can be matched with fuel and your expensive parts don’t melt away. &lt;span style=""&gt; &lt;/span&gt;Don’t be a cheap dumbass, be fast and reliable instead.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-1706495012822480447?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/1706495012822480447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=1706495012822480447' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1706495012822480447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1706495012822480447'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2007/02/injector-sizing-explained.html' title='Injector Sizing Explained'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-3851957710563065781</id><published>2006-12-30T16:50:00.000-05:00</published><updated>2007-11-03T12:36:58.591-04:00</updated><title type='text'>VE-IFR transformation</title><content type='html'>&lt;span style="font-family:verdana;"&gt;In many cases, we don’t have the full set of information needed to create the fully correct, reality reflecting tables for everything. The final fueling decision is a series of multiplications and divisions, thus allowing for ‘the fudge factor’—we can account for imprecisions by artificially altering other values. MAP and TEMP are fed from sensors, so short of upgrading the sensors themselves, we don’t have a way to influence their precision. AFR is just an arbitrary divider that we can verify with a wideband oxygen sensor. As long as that sensor is properly calibrated, there’s nothing to fudge there either. VE or GMVE, paired up with IFR are very frequently used to make up for imprecisions. VE is not easily measured, and IFR as my recent fuel pressure investigations indicate, is more complicated that we originally thought. IFR however can be calculated, if we have enough data for it. So if we have all variables except VE and IFR, and we can calculate IFR, we should be able to arrive at a reasonably realistic VE. Since VE is such a crucial table, it’s worth the extra effort to arrive at the higher precision version of it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Let’s start with understanding of what a good tune is: a collection of final fueling decisions that result in desired target AFR. No matter how much fudging in tables is involved, it’s possible to arrive at it the final figures in an infinite number of combinations—that’s what most ‘professionals’ tune, they do not concern themselves with the truthfulness of numbers, just with the final resulting AFR. While effective, I’d like to enhance our ability to arrive at the precise numbers that reflect reality.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Fuel decisions are nothing else but a set of Injector Pulse Widths calculated for every possible condition encountered in our engine. We calculate them using the formula:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;IPW = GMVE*MAP/(AFR*IFR*TEMP)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So to convert from one set of parameters that creates a good tune, to another set of parameters that yield the same IPW’s, this must be true:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;IPWnew = IPWold&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So we expand both sides of this equality:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GMVEnew * MAPnew /(AFRnew * IFRnew * TEMPnew) = GMVEold * MAPold / (AFRold * IFRold * TEMPold)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;And then solve it for the new GMVE:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GMVEnew = GMVEold * (MAPold/MAPnew) * (AFRnew/AFRold) * (IFRnew/IFRold) * (TEMPnew/TEMPold)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We notice that if the tune is good, if it preserves the final fueling, target AFRs will be the same, thus:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(AFRnew/AFRold) = 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Temperatures are also the same across the full range, &lt;span style="font-family:courier new;"&gt;TEMPnew/TEMPold = 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Same goes for MAP ranges, &lt;span style="font-family:courier new;"&gt;MAPold/MAPnew = 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This simplifies the main equation to:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GMVEnew =GMVEold * (IFRnew/IFRold)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Also notice that since&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;GMVE = Vol * VE / R&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;and Vol and R are constants, thus:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;VEnew =VEold * (IFRnew/IFRold)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This means this transformation applies to both VE and GMVE forms, allowing the same logic and methodology to be applied to LS1/LS6 and the newer LS2 computers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The important thing to remember here is that while these equations work for singular values, these dependencies must be true across the full table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;IFRold-3D version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The easiest way to visualize that is by employing the histograms. We’re all used to looking at the VE table and IFR tables, that’s nothing new. Here, in order to multiply them all out just like the formulas would suggest, all the variables in question must be describing the same temporal instance in the engine. Then in order to perform the calculation, we also must have it in the same units. IFRold is the traditional IFR table, but viewed not in a traditional 2D way, referenced against Manifold Vacuum, but on the same axis as the VE table. How do we view it this way? The easiest way is to log GM.INJFLOW, and then make a custom histogram, starting with your basic BEN histogram, but then changing the data to be working on GM.INJFLOW, not BENs. This will give you a VE-like view of what injector flow the computer uses to calculate the final fueling. Displaying of the actual histogram is optional, it’s not mandatory for the final transformation to work, but it does help to understand what we’re doing here, and why do we need to grow a whole new dimension on a simple IFR table.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="OldIFR" href="http://flickr.com/photos/92934077@N00/338825164"&gt;&lt;img src="http://static.flickr.com/162/338825164_86bb7c56c0_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;IFRnew&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The tricky part is how we arrive at the IFRnew. As I found out from the &lt;a href="http://redhardsupra.blogspot.com/2006/12/under-fuel-pressure.html"&gt;Under (Fuel) Pressure&lt;/a&gt; write-up, Fuel Pressure varies not only based on Manifold Vacuum, but also on RPM and even smaller factors, like the Battery Voltage. Thus, to obtain the most realistic IFR table, we also must create a histogram that takes these variables into consideration, and then shape it just like the IFRold histogram we created in previous paragraph, to be able to do an element-wise division, for the final calculation. Just like IFRold histogram, this one is also optional, and one purely for educational purposes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;First we must log the Fuel Pressure. Hardware and setup necessary to do that is beyond the scope of this write-up, as it’s been wonderfully described in TAquickness’ &lt;a href="http://www.holdencrazy.com/EFILive/Tutorials/LS1FuelPressureSendingUnitTutorial.zip"&gt;document&lt;/a&gt; . Once we have CALC.FUEL_PRESSURE (or whatever other name you gave it, I’m going to use this name in this document for clarity), we need to create another custom PID that calculates the injector flow based on the injector rating, Manifold Vacuum, and the Fuel Pressure.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;EFILive’s custom PID infrastructure allows us to do all this, and even have multiple units for the same entity.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;First we add few units to calc_pids.txt:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;*UNITS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;#Code System Abbr Description&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;#-------- ---------- -------- -------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;PSI Imperial PSI "Pounds Per Square Inch"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;KPA Metric KPA "kilo Pascals"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;GPS Metric gps "grams per second"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;LBPM Imperial lbpm "pounds per minute"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;unit Metric unit "unit"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Then we create calculated PIDs for converting FP gauge voltage to PSI and KPA. This example uses GM.EGRS as the source of FP voltage, as per example in TAquickness write-up. If you have it hooked up through the external inputs, please refer to his manual how to adjust this PID definition.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;*CLC-00-001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;PSI 0.00 100 .2 "({GM.EGRS}*25)-12.5"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;KPA 0.0 700 .1 "(({GM.EGRS}*25)-12.5)*6.89475728"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Now we must calculate our own CALC.INJFLOW which is calculated from GM.MANVAC and CALC.FUEL_PRESSURE. Notice that in order for the calculations to make sense, they all are converted to kPa.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;*CLC-00-002&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;GPS 0.0000 30 .4 "42*0.125997778*sqrt(({GM.MANVAC.kPa}+{CALC.FUEL_PRESSURE.KPA})/(3*100))"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;LBPM 0.000 200 .3 "42* sqrt(({GM.MANVAC.kPa}+{CALC.FUEL_PRESSURE.KPA})/(3*100))"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;Notice that this is the place where we must hardcode the value for the rated flow and pressure of the injectors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The 42 at the beginning is an example of a popular 42 lb/hr injector. This is where you insert the rating of the injector in lb/hr, and the conversion to g/sec is done for you. The rated fuel pressure is at the end, that’s the (3*100). Most injectors I’ve seen are rated at 3bar, and to convert from bar to kPa you just multiply by 100. So unless you have some really unusual injectors, you most likely will not need to change this, this is just for your information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;There are two versions of the same PID, this way we can display the calculated injector flow in both popular units for easier understanding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Now set up another histogram, again with the usual VE axis (I like to use the BEN histogram as a starting point), and replace BEN’s with the CALC.INJFLOW.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="NewIFR" href="http://flickr.com/photos/92934077@N00/338825122"&gt;&lt;img src="http://static.flickr.com/130/338825122_a2da64cd4c_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Marcin Transformation Factor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We have now two histograms of IFR—one is the IFRold, and the second is IFRnew. We can create another calculated PID that will divide the two tables on element-by-element basis.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;*CLC-00-003&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;unit 0.000 10 .3 "{CALC.INJFLOW.GPS}/{GM.INJFLOW.gps}"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;And finish it off with the PRN section that binds all the previous definitions into coherent entities:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;# ==============================================================================&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;*PRN - Parameter Reference Numbers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;# --------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;# See sae_generic.txt for more information on the *PRN section&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;#Code PRN SLOT Units System Description&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;#------------------------- ---- ------------ ---------------- ---------------- ------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;CALC.FUEL_PRESSURE F001 CLC-00-001 "PSI,KPA" Fuel "Fuel Pressure"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;CALC.INJFLOW F002 CLC-00-002 "GPS,LBPM" Fuel "Injector Flow from Fuel Pressure"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;CALC.MARCIN F003 CLC-00-003 unit Fuel "Marcin Transform"&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;With the complete setup, we should create the final histogram—yes you guessed it again, on the same VE-like axis. This time, we use CALC.MARCIN for the data to histogram. You should get a histogram that has a bunch of values near 1.0. The more your Fuel Pressure was varying from the theoretical based pressure we used to use with the old IFR spreadsheet, the farther away from 1.0 the corrections are going to be. This histogram is mandatory.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="MarcinTransform" href="http://flickr.com/photos/92934077@N00/338825078"&gt;&lt;img src="http://static.flickr.com/156/338825078_1ce7bb8672_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;IFRnew-2D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The other important thing that you can get from all these calculated PIDs, is the automatic creation of your new, Fuel Pressure based IFR. All you need to do is create another histogram, with CALC.INJFLOW as data, and GM.MANVAC as rows with 0..80kPa range with 5kPa step. This histogram is also mandatory. This is what you’re going to paste into {B4001} table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Now you can copy the whole CALC.MARCIN table, and multiply it out with your existing VE {B0101} table, transforming it to account and agree with the IFR table that we just build in the paragraph above. Together, the new VE and IFR should preserve the final fueling, which if you had it perfect to start with, should carry over to the new setup.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="NewIFR2D" href="http://flickr.com/photos/92934077@N00/338825134"&gt;&lt;img src="http://static.flickr.com/127/338825134_8b04c4813e_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Conclusions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;While not instantly mind blowing, these concepts and tools have some deep consequences. Now you are able to convert any VE into another VE based on a different, hopefully better, IFR settings. This means, if you have a tune done by some hack tuner that jacked up your VE and IFR arbitrarily, you can log Fuel Pressure, and painlessly and without full VE tuning sessions, transform into a much cleaner, saner and meaningful, closer to reality VE and IFR tables.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Another application is playing with Fuel Pressure, or installing a new Fuel Pressure Regulator, on your already well tuned configuration. Normally, you’d have to start from scratch, and tuning VE yet another time. This allows you to be able to play with the FPR much more, looking for the perfect base and rising rate to compromise between good low pulse width idle quality, and regulating FP so at WOT you have a safe amount of fuel provided to the injectors. You can just try yet another IFR setup and see what it will do to your VE with no need for slow, ticket-prone retunes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you suspect your fuel system isn’t up to task, logging fuel pressure and histogramming it as described in this write-up will also show you the deficiencies. At this point you can either chose to just use the transformation described and account for the deficiencies, or go shopping for a more capable system. The important part here is, you don’t have to guess and eyeball anymore, you can quantify it and see it in black and white.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Side notes and Commentary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;All of this is done in EFILive, no spreadsheets, no custom code, just utilizing a well designed infrastructure. This little exercise demonstrates just how powerful it can be. About 12hrs before I had the first functional Transformation Matrix, I never set up a custom PID. So it cannot be that difficult either.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;On the other hand, we have HPTuners. I got some data with logged fuel pressure voltage, and while I was able to convert the voltage into actual Fuel Pressure, converting from BARO and MAP into MANVAC turned out to be outside of its reach. I’ve spent hours experimenting with it, trying to get it to work, with no results. I tried to refer to some other more hardcore HPTuners users out there, and not only they weren’t able to set it up, It also turned out to be really difficult to exchange the custom PIDs, as there is no clear configuration file containing such info. If anyone knows how to deal with these issues with HPTuners, please let me know, I’d love to have another version of document that explains it in HPTuners terms.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I highly recommend learning to harness the power of custom PIDs and custom histograms; this is how the raw data turn into information.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Special thanks goes out to a prof of mine, Mathias Kolsch, who in the process of teaching me Computer Vision, gave me lots of new tools and ideas, some of which directly contributed to this particular transformation method.&lt;br /&gt;&lt;br /&gt;Big thanks also go out to TAquickness and Tordne, who had the insight to set up fuel pressure logging, and patience to explain all the EFILive intricacies to me, as well as being crazy enough to let me test my theories on their cars.&lt;br /&gt;&lt;br /&gt;On a more personal note, this is probably going to be the last writeup for another 6 months, as I must finish my masters degree and write a thesis.  I'd rather be tuning, but oh well.  This isn't a complete retirement, I am trying to take some classes in which I could spend improving my tools (Human Computer Interaction), and learn more math to spot and analyze relationships in data (Data Analysis and Simulation) so there will be updates, just nothing huge.&lt;br /&gt;&lt;br /&gt;Keep warm, and happy New Years,&lt;br /&gt;Marcin&lt;br /&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-3851957710563065781?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/3851957710563065781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=3851957710563065781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/3851957710563065781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/3851957710563065781'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/ve-ifr-transformation.html' title='VE-IFR transformation'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-1281735455108333180</id><published>2006-12-26T23:56:00.000-05:00</published><updated>2007-11-03T12:39:55.179-04:00</updated><title type='text'>Fuel Pump sizing</title><content type='html'>&lt;span style="font-family:verdana;"&gt;My fuel pump pressure post gave me a lot to think about, and few people had some interesting questions as well. One of the simplest, yet most important questions was 'is the fuel pump holding up?' I looked around, and amazingly, I have not found much information on how to estimate how much fuel your fuel pump needs to be able to pump so injectors can keep with the demand.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Most fuel pumps are rated in how many Liters of fluid they can pump an hour. I'm not exactly sure why they'd go with a volume flow rating, when injectors are mass flow rated. The easy way around it is to convert one to the other, which should be easy, as mass=density*volume. Of course there are various types of gas, so the density specific to particular types of petrol will differ, but the generally we should be close to desired rating. I found numbers of 690g/L to 770g/L, so I'm going to use 730 for an easy average. These translate to 0.690kg/m^3, 0.770kg/m^3 and 0.730kg/m^3 respectively, for the more traditional measure of densities. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This spreadsheet converts the rated flow of the pump into units comparable with the units used for injectors, and then divides the flow of the pump by the number of injectors, to see if the flow provided to each injector is larger than what the injector would flow at WOT at standard LSx 58psi fuel pressure.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It's all very simple, but the funny part is that once I started plugging in typical fuel pump flows, the per injector flows were very closely matched to the flows provided by the popular injector sizes!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/133/334889039_ac3da43aa9_o.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://farm1.static.flickr.com/133/334889039_ac3da43aa9_o.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;190 lb/hr fuel pump outputs just above what SVO red tops need.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;255 lb/hr fuel pump outputs just above what SVO green tops need.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;350lb/hr fuel pump outputs just above what Mototron 60's need.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I'm not sure if it's coincidence or not, but it works so nicely, it's a really easy 'rule of thumb' to match injectors with pumps for a well balanced system.&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://www.marcintology.com/tuning/FuelPumpSizing.xls"&gt;DOWNLOAD&lt;/a&gt; if you want to play with more specific options.&lt;br /&gt;&lt;br /&gt;More fuel system investigations coming soon.&lt;br /&gt;Stay tuned,&lt;br /&gt;Marcin&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-1281735455108333180?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/1281735455108333180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=1281735455108333180' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1281735455108333180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/1281735455108333180'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/fuel-pump-sizing.html' title='Fuel Pump sizing'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-3145902107759356723</id><published>2006-12-21T23:56:00.000-05:00</published><updated>2007-11-03T12:38:56.616-04:00</updated><title type='text'>IFR spreadsheet for Logged Fuel Pressure</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Here's the new, promised IFR spreadsheet that calculates IFR table accounting for the variable Fuel Pressure.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" href="http://www.marcintology.com/tuning/InjectorsFromFP.xls"&gt;DOWNLOAD&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This is NOT a replacement for the &lt;a href="http://www.marcintology.com/tuning/injectors.xls"&gt;old IFR spreadsheet&lt;/a&gt;!  This is only for people who set up their Fuel Pressure sender units to log.  If you don't have such a setup, continue using the old one.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Remember that this will only work if you log your fuel pressure first against a variety of driving conditions.  I'm not going to describe how to log it, as I've already seen it set up as the EGR voltage, or as the separate input (just like a wideband).  HPTuners and EFILive setups differ as well, so deal with it appropriately.  I don't have resources to describe every possible combination of hardware and software here, and this is a more advanced thing to do anyway, so I'd rather not give people a false sense of assurance.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;One important note:  remember that most pressures in the GM PCM are absolute.  IFR for some strange reason, is based not on MAP just like about anything else, but on Manifold Vacuum.  In EFILive this is easy, MANVAC is just another PID to pick.  In HPTuners, I haven't seen it yet.  I tried to make it with a custom PID of  BARO-MAP, and then use it to create a custom histogram of the new MANVAC-like PID against the Fuel Pressure PID.  Easier said than done, after many hours and help from people that know HPT in and out, I just gave up.  This is what you get for hacking custom PIDs into HPT at the last moment, and not having them as a part of design and infrastructure from the get go.  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Anyway... If anyone figures out how to get FP vs MANVAC histogram going in HPT without major hacks, please let me know, right now it's a bloody mess.&lt;br /&gt;&lt;br /&gt;Just like I mentioned in the last writeup, FP apparently varies even within the same MAP range, making tuning IFR against the logged Fuel Pressure closer to The Truth(TM) but still not perfect.  For now, we're still stuck dealing with the VE table making up for non-MAP related IFR variations.&lt;br /&gt;&lt;br /&gt;Next up:  transforming VE's using the new IFR without retuning.&lt;br /&gt;Stay tuned,&lt;br /&gt;Marcin&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-3145902107759356723?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/3145902107759356723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=3145902107759356723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/3145902107759356723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/3145902107759356723'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/ifr-spreadsheet-for-logged-fuel.html' title='IFR spreadsheet for Logged Fuel Pressure'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-6971337863682153747</id><published>2006-12-17T16:34:00.000-05:00</published><updated>2006-12-21T19:28:02.364-05:00</updated><title type='text'>Under (Fuel) Pressure</title><content type='html'>&lt;span style="font-family:verdana;"&gt;After a year and a half of using the IFR spreadsheet, I came to the conclusion that while it is not wrong as far as the information given, it leaves much to be desired when it comes to truly reflecting reality.  The biggest problem it has is the lack of expressing how fuel pressure differs at various loads (Manifold Vacuum).&lt;br /&gt;&lt;br /&gt;Unexplainably high VE values on some cars made me think that even though we 'fixed' some old-school arbitrary IFR choices, we're still fudging somewhere, because there's no reason for the theoretical VE numbers to be that high.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Once I created the equations for airflow I realized that the only spot where the 'fudge factor' could occur would be the IFR.  The rest of terms in the eqations is either logged (MAP, temps,  RPM) or not exactly changable (number of cylinders, cylinder displacement).  In the meantime, TAQuickness and few others started working on a simple setup that would allow us to log fuel pressure alongside all the usual PIDs, not just a simple gauge you can look at at idle.&lt;br /&gt;Eventually all the experiments came together, and provided me with some very interesting data.  The car from which the logs discussed here come from is running 42lb/hr@3bar injectors running at 63psi.  On the table and chart below, the &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;values &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;calculated using the standard IFR spreadsheet are labled IFRcalc (pink dots, values on blue background).  The other data series is calculated from logged Fuel Pressure (comes in as a EGR voltage, so it's evgs in the table) which then gets converted to PSI for easy lookup/calculations (marked FP).&lt;br /&gt;Once we know the nominal flow of the injectors and the real Fuel Pressure, we can calculate the real flow of injectors (labeled IFRfromFP, blue dots, yellow background in the table)&lt;br /&gt;As you can see, the blue dots are nowhere near pink dots.  Apparently measuring the fuel pressure at idle (no load) doesn't give you the best numbers.  That's fine, that means you just need to reconfigure IFR for new FP, right?  Wrong!&lt;br /&gt;Not only the FP numbers going in aren't close to what they are, they are also non-linear.  We need to update the IFR spreadsheet to be able to take various FP inputs, depending on the MAP.  Easy enough I think, and quickly make some adjustments to the spreadsheets.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="IFRerror2" href="http://flickr.com/photos/92934077@N00/325272119"&gt;&lt;img src="http://static.flickr.com/136/325272119_9812ef514d_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Fuel Pressure drop seemed significant enough that I wanted to understand it deeper, it didn't just seem to be some underpowered aftermarket junk part, but a more complex issue.  I wasn't quite convinced that the Fuel Pressure drop was solely a function of MAP/Manifold Vacuum.  So I started graphing FP against various entities to get a better feel for it.&lt;br /&gt;There was an obvious relationship between MAP/Manifold Vacuum and FP, as we already have seen with the data above.&lt;br /&gt;I graph it against RPM, and there's another definite relationship.  Now I'm confused--how can it be, if the crucial IFR table is purely manifold pressure based?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a title="RPMvsFP.png" href="http://flickr.com/photos/92934077@N00/329497928"&gt;&lt;img src="http://static.flickr.com/129/329497928_067a6fc2f2_d.jpg" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Another popular view is airmass based, like the timing tables, I thought, maybe it's load/compression/torque dependent, afterall that's when the most air gets consumed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="DYNCYLvsFP.png" href="http://flickr.com/photos/92934077@N00/329497917"&gt;&lt;img src="http://static.flickr.com/145/329497917_6fc95b15fd_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;I graph FP vs DynCylAir and I keep getting the same shape drop when I did when I graphed it against RPM.  Why not do a 3D graph of FP vs RPM and DynCylAir?  I'm starting to see a cleaner relationship, the more DynCylAir coupled with RPM the less FP we get.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="FPvsDYNCYLvsRPM.png" href="http://flickr.com/photos/92934077@N00/329549573"&gt;&lt;img src="http://static.flickr.com/136/329549573_27dba41294_d.jpg" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So I'm thinking:  DynCylAir is like torque, and DynAir is like horsepower, and TQ and HP are bound through RPM, so why not graph DynAir vs FP?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="AIRFLOWvsFP.png" href="http://flickr.com/photos/92934077@N00/329497908"&gt;&lt;img src="http://static.flickr.com/127/329497908_6e4334431f_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;BINGO!  This graph seems to be very linear, with a high degree of confidence.&lt;br /&gt;But then I start to think what does this mean--why higher Airflow makes the Fuel Pressure drop so consistently linear?  Obvieously more airflow needs more fuel flow, they're coupled through the AFR, RPM just enforces the time intervals to do the fuel injection in, and IFR tailors it to the injector size and fuel pressure.&lt;br /&gt;From the Speed Density paper I've discovered that:&lt;br /&gt;&lt;br /&gt;AIRFLOW=CYL&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;*&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;RPM*IPW*AFR*IFR/120&lt;br /&gt;and we know that&lt;br /&gt;IFR=IFR(rated)*sqrt(FP/FP(rated))&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;which for the purpose of this discussion(meaning keeping everything else constant) means that Airflow is directly proportional to RPM, and the square root of Fuel Pressure.  This is not what this graph says, at least with the given precision.  This graph, even though introduces a lot more noise for the high Airflow values, still seems to lay along a straight line.  So the possible explanation might be that because we're using a fairly small range of FP values, we don't get see the curve that would result from a square root relationship.&lt;br /&gt;Another explanation comes from the way I obtained the data for the Airflow vs FP graph itself;  I histogrammed the Airflow into 5g/sec bins, to equalize the number of samples along the axis, because it's hard to log large number of samples in higher airflow ranges on the street.  If I fit a line to a large number of samples, mostly in the lower ranges, the fit would be good there, but the scarse upper range data would be largely ignored.  While the histogramming first gets rid of the weighing to the large number of samples problems, it potentially loses a lot of precision, in our case enough to not be able to tell which type of relationship it is.&lt;br /&gt;&lt;br /&gt;So this investigation leaves us with more questions than answers:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Why does the FP drops so much more than it officially supposed to (proportional only to MAP)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;If the FP is so well proportioned to Airflow, is that by design or by accident?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Even if I log FP precisely for my fuel system and adjust IFR values directly based on that, the swings if FP values within the same MAP range (since that's all we can differenciate by in the IFR table), are still significant.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="FPspreadVSMAP.png" href="http://flickr.com/photos/92934077@N00/329537283"&gt;&lt;img src="http://static.flickr.com/155/329537283_e14064bf09_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;The only table that's able to account for the RPM swings is VE.  This is not what I wanted to achive here, I wanted to free the VE table to be the 'catch all fudge table' and have it become the true theoretical Volumetric Efficiency.  So where else could I move the fudging duty to?&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: verdana;"&gt;The good part is that now we know just how bad our fuel systems are when trying to hold up to a moderate (400lb/min of airflow ain't that much, I've seen cam-only LS2's flowing 450+) power.  Throw in a better flowing system, more cubes, or god forbid any forced induction, and our FP shrinks down in the moments when we need it most--WOT.  So, if you want to impulse buy anything this xmas, I highly recommend a return fuel system with a manifold pressure referenced fuel pressure regulator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This investigation started really small, I just wanted to see how badly does the Fuel Pressure drop and what effect it has on the IFR.  Now I see the shortcomings of the fuel systems, computer's inability to express all the changes that take place, and shortcomings of my own IFR spreadsheet (new version coming up shortly).&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: verdana;"&gt;There will definitely be a lot of other stuff coming out of these observations, as this is very scary, considering how much trust we put in aftermarket pumps, and they simply fall short of expectations.  I've always told people to get bigger injectors and run with a healthy margin left.  Apparently I didn't know just how right I was--in this case running with IFR falling 10psi from what your computer knows about yields 9% less fuel delivered!  When you're trying to get your AFR within 1-2%, 9% error in one of your data is going to seriously monkey wrench your system.&lt;br /&gt;&lt;br /&gt;So this xmas, be afraid, be very afraid...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a title="robotsanta.jpg" href="http://flickr.com/photos/92934077@N00/329560719"&gt;&lt;img src="http://static.flickr.com/159/329560719_586bf9d857_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: verdana;"&gt;New IFR spreadsheet, and then automatic translation of your VE based on the new IFR are going to be the next targets of attack for me toolwise. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Stay tuned,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Marcin&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-6971337863682153747?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/6971337863682153747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=6971337863682153747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/6971337863682153747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/6971337863682153747'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/under-fuel-pressure.html' title='Under (Fuel) Pressure'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-136732959437614867</id><published>2006-12-17T12:44:00.000-05:00</published><updated>2006-12-17T12:55:22.908-05:00</updated><title type='text'>Why tune VE?</title><content type='html'>This is a post in one of the forums, I usually don't like to duplicate information, but singular forums posts tend to get lost in the noise, so I'm posting it up here as this is something that should be very clear to everyone that's trying to tune their car.&lt;br /&gt;&lt;br /&gt;The question was:  &lt;br /&gt;Does this (VE tuning) gain me anything performance wise?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a very good question, I'm glad someone is trying to understand what it is that VE tuning is actually about, not just how to do it.&lt;br /&gt;&lt;br /&gt;1.  Without VE being perfect, you'll never be able to find out proper timing.  When computer detects the tiniest tendency to run lean, it will be very trigger happy to pull timing with usually no good reason.  Thus, if your VE is on the lean side (and it usually is, after all that's what adding better flowing parts is about--flowing more air) you will get a lot of knock in random spots, and no amount of pulling timing yourself will cure it, causing your car run like poo.&lt;br /&gt;2.  Sudden transitions are hard to get right.  Without VE being dead on, you are making it almost impossible to get right.  Bad transitions cause knock, which lingers around, doesn't last just when going over the areas that aren't perfectly tuned.  I've seen knock last over 5 secs.  If you're a drag racer, that's diminished performance for half of your run.  That's why it's also important to tune not just some of the VE, but ALL of it.&lt;br /&gt;3.  When your car develops a problem, you will notice it.  If your VE is well done.  airflow numbers will be down, knock will appear, but you know it's not the fault of the bad tune, but a result of some hardware component failing.&lt;br /&gt;4.  When VE is perfect, it is meaningful.  If you add a part that supposed to improve engine's breathing, your VE will go up, and if you get it tuned perfectly before and after, you will know just how well the part works, and for what MAP/RPM range.&lt;br /&gt;5.  With perfect VE, your airmass and airflow numbers will be meaningful as well.  with their close correspondence to torque and horsepower respectively, you can optimize your powerband. &lt;br /&gt;6.  Perfect VE enforces other tables to be meaningful as well.  For example, to obtain the same proper fueling with wrong VE, you will have to hack either your IFR or PE numbers.  With all of them perfect and meaningful, when you want a 12.9AFR, you can just command it in PE and it will happen, instead of taking stabs in the dark hoping that some arbitrary PE will make it happen by accident.&lt;br /&gt;7.  Since VE dictates airmass and airflow, everything based off such tables will work better as well.  Shift tables for automatics need to know how much power you're really making.  If you're lying about VE, then this power estimation is also wrong, making the transmission misbehave.&lt;br /&gt;&lt;br /&gt;In general, VE in itself is important.  A lot of other things are derived by calculations based on numbers calculated from VE.  It really ends up being a domino effect.  If VE is meaningful and proper, then it forces other things to meaningful and proper as well.  But if you botch/ignore VE, then the bad effects will propagate, making the entire tune a major hack, making the car drive horribly, and sending the tuner chasing his tail.   You pick which domino effect you'd rather experience.&lt;br /&gt;&lt;br /&gt;In the long run it's really just easier to do it Right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-136732959437614867?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/136732959437614867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=136732959437614867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/136732959437614867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/136732959437614867'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/why-tune-ve.html' title='Why tune VE?'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-9002784242377607372</id><published>2006-12-04T03:07:00.000-05:00</published><updated>2007-11-03T12:42:10.512-04:00</updated><title type='text'>Unscrewing a bad tune, Part 2</title><content type='html'>Sunday mornings are usually connected to fuzzy slippers, eggs and bacon, extra long lounging session in the tub...but not today.  Barely did I sit down in front of my computer, I was asked to look at some Forced Induction tunes.  The guy asking these questions was rather skeptical about the correctness of some examples he's received.  Of course, the people who he got the tunes were claiming their turbo setups running well.&lt;br /&gt;&lt;br /&gt;So I dove into one of the tunes, and all the usual marks of a bad tune were there:  arbitrary IFR, untouched VE and MAF curves, super aggressive PE triggers.  The whole tune was pretty much based on the PE table, assuming identical boost and airflow at the same RPM, and ignoring all other variables.  The car supposedly was running well at 10psi, making me wonder if I can learn something from it.  In order to do that, I decided to 'unscrew' the hacked up tune.  If the measured AFR was correct, that would indicate that the final fueling decisions were made correctly, despite the wrong input data.  Since this is a staple of every 'pro' tuner out there, I decided to see if it's possible to see if two wrongs can make a right.&lt;br /&gt;&lt;br /&gt;Since the car was running in MAF mode, and the MAF signal completely maxed out by applying some healthy 10psi, I knew that the airflow figures are going to be wrong.  While looking at the IFR table, I learned that the injector flow values were completely arbitrary.  PE was the only real tuning device, and the resulting Pulse Width was the only non-wrong, non-fake value in the whole setup.  Thus, task 1:  calculate the IPW.  &lt;br /&gt;&lt;br /&gt;&lt;a title="badtune.png" href="http://flickr.com/photos/92934077@N00/314754798" &gt;&lt;img src="http://static.flickr.com/118/314754798_7ebaf5785d_d.jpg" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This part is easy, I thought.  Plug in the wrong numbers, in my case 59lb/min of airflow (max'ed out MAF), 41.3lb/hr injectors, 11.15 PE value for 6400rpm which was the redline, into my VE2IPW calculator and be done.  I realized that's no so easy, as my VE2IPW calculator is optimized for working with Speed Density data, not MAF.  There is no field for Airflow, only its components, and Airflow gets calculated dynamically behind the scenes.  I looked into the Speed Density paper for some equations, but they were no help either, as they also expected either VE, GMVE, or rho (air density), and I didn't have any of them available.  If you want the hairy math details, read the updated paper.  If you don't, here's a short version:  &lt;br /&gt;&lt;br /&gt;IPW=120*Airflow/(Cyl*RPM*AFR*IFR)   &lt;br /&gt;&lt;br /&gt;This means now we can calculate Pulse Width directly from the airflow number, no matter what the source of it might be, MAF or Dynamic Airflow are both fully viable sources.  In the case of the hacked up FI tune I knew the car ran on maxed out MAF, so I just used the maximum value from the MAF table, 59.8 lb/hr.  Few quick unit conversions and simple math operations later, I arrive at the IPW at 6400RPM:  18.9 msec.&lt;br /&gt;&lt;br /&gt;&lt;a title="newspreadsheet.png" href="http://flickr.com/photos/92934077@N00/314754817" &gt;&lt;img src="http://static.flickr.com/118/314754817_99b0e854ae_d.jpg" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OK, so now what?  I figured I wanted to first see what the numbers would really look like if the tune was done properly.  I inversed the formula to calculate the Airflow from IPW:  &lt;br /&gt;&lt;br /&gt;Airflow= IPW*Cyl*RPM*AFR*IFR/120  &lt;br /&gt;&lt;br /&gt;The big change this time I wasn't going to go with fake, ridiculous PE and arbitrary IFR.  I found out what the injectors really were, calculated their flow against the fuel pressure I was told the car ran at (48.5 lb/hr).  I used the AFR values from what the car supposedly ran at, 12.0AFR.  Again, do some unit conversions, and out pops out the real value for airflow we should get:  576g/sec (75.6 lb/min), which is beyond the max value storable in the MAF table.  So yet again, MAF being useless on Forced Induction comes out again.&lt;br /&gt;&lt;br /&gt;Then I decided to compare this estimation of the real airflow with one of my older spreadsheets (&lt;a href="http://www.marcintology.com/tuning/INJsize.xls"&gt;INJsize.xls&lt;/a&gt;) to see how close the two are.&lt;br /&gt;&lt;br /&gt;So I quickly punched in 8 cylinders, 5.3L (it was a truck tune), 6400rpm redline, 100%VE, and 10psi of boost.  The result says 576.7 g/sec (76.1 lb/min) of airflow.  That's within 1%  I was happy to see consistency between the two completely different methods arriving at the same conclusion.  Of course, a quick glance at the injector sizing spreadsheet pointed out that he needs almost 100% of fuel flow capacity of 48.5 lb/min injectors, and that to make it go down to 80%, he'd need to flow about 60 lb/min.  Another popular myth busted--you can't run much of a FI setup on the popular 42 lb/hr (@3bar) injectors, need to step up to something bigger.&lt;br /&gt;&lt;br /&gt;&lt;a title="injsizeexample.png" href="http://flickr.com/photos/92934077@N00/314754812" &gt;&lt;img src="http://static.flickr.com/115/314754812_29f7263e56_d.jpg" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm posting the updated Speed Density paper &lt;a href="http://www.marcintology.com/tuning/HowSpeedDensityWorks16.doc"&gt;HERE&lt;/a&gt;, and the example 'bad2good' spreadsheet &lt;a href="http://www.marcintology.com/tuning/Airflow2IPW.xls"&gt;HERE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;happy unscrewing bad tunes,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-9002784242377607372?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/9002784242377607372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=9002784242377607372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/9002784242377607372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/9002784242377607372'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/12/unscrewing-bad-tune-part-2.html' title='Unscrewing a bad tune, Part 2'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-8681387281583090121</id><published>2006-11-04T01:30:00.000-05:00</published><updated>2006-11-04T02:03:31.206-05:00</updated><title type='text'>Terminology and Confusion, part 2 (OLvsCL)</title><content type='html'>Open Loop vs Closed loop tuning is another huge source of misunderstanding.  Partially because it's just few terms out of a huge body of Control Theory (PID also comes from the same area), without understanding the rest of the principles and theory behind it.  Another reason is because of how people use it, it's almost always referred to as 'OLSD', as if it was one thing, which it is not. &lt;br /&gt;&lt;br /&gt;Open Loop and Closed Loop are just a methods of control of fueling.  OL is basically a system with no feedback.  Think of a sprinkler system that sprays the lawn whether it needs it or not.  To contrast that, you have CL--a system which takes the output if its own operation as in input for the next round of calculations.  In practical terms, it would be a sprinkler system with a ground wetness sensor, and only activating the sprinkler system if the ground is dry.  The good part is not wasting water when the lawn doesn't need any more.  The bad part is that we actually need sensors, threshold levels, hysteresis models, and other scientific junk, just to keep the damn lawn from drying out.  This is definitely a place to consider effort vs benefit.&lt;br /&gt;&lt;br /&gt;So what does it mean for a car?  The main benefit of OL control is the direct relationship between what you tell it to do and what it does.  It will do exactly what you tell it to, which is good if you tell it the right thing, and potentially catastrophic if you don't.  That's why most tuning is done in OL--you want to see exactly how much airflow (MAF or VE) and which commanded AFR (OLFA or PE table) yields a particular AFR.    This is the entire logic behind tuning--once commanded and resulting PE agree 100%, you can back calculate the airflow from displacement, pulse widths, injector flow rate, RPM, MAP, IAT and AFR.  This is how you obtain airflow characteristics of an engine, no matter if it's with MAF or SD approaches.&lt;br /&gt;&lt;br /&gt;Once you obtained that airflow characteristic, you could continue running in OL, and all the environmental changes would show up as change in airflow numbers.  In SD, VE table is calibrated in what I call GMVE units, which take temperature and barometric pressure into account.  This means that if that pressure or temperature changes, it is easily recalculated to current conditions.  In MAF mode it's even simpler, more airmass cools the hot element of the MAF sensor better, automatically giving you a new, adjusted reading.  Both models work just in any condition.  (this is an answer to all the 'do I have to retune for weather?' questions that show up at least 3-4 times a week on forums)&lt;br /&gt;&lt;br /&gt;So if it works so well, then why would we ever need CL one might ask?  Doing math for all these models is great, everything agrees, but in practice, things like airflow measurement, or air fuel ratio measurement are an inherently difficult problem.  Tuners drive around and scan and know what to adjust when.  Normal people dont do that, they hop in and just want it to work, without scanning, analysis, and reflashing their car's computer.  Thus, CL became that automatic tuner.  It looks at data from different sensors, and if it consistently points at a new better setting, it adjusts.  It's a perpetual feedback loop, not so commonly refered to as the Closed Loop.  This model of course has its limits.  While it will adjust to things like weather changes, or driving through the Rockies,  it will not adjust for racing camshafts, huge heads, changes of displacement, and other significant changes to the airflow.  Car's computer is willing to adjust, but also must be able to detect hardware failures.  To a computer, airflow reading way out of its usual range is flagged as an abnormal event that should be looked at, while to a human it just might mean we put some heads on it.  Computer has no way of knowing which one it is, we must tell it.&lt;br /&gt;&lt;br /&gt;If you read and understood the last two paragraphs, you might have noticed, that a human tuner, and CL mechanisms (fuel trims) have the same function:  to observe and adjust airflow changes.  If you think about it, what we usually call the OL tuning method, is really CL--except that the mechanisms doing the adjustments are not automatic and computerized, but human, and done outside of the system.&lt;br /&gt;&lt;br /&gt;This brings me to conclusions:  in part 1 of this writeup we learned that MAF mode doesn't really work off MAF alone, and now we learned that Open Loop is a human powered Closed Loop.&lt;br /&gt;I think what happened here is that we got lost somewhere between lack of technical understanding, and the traditional American tendency to polarize and zealotize (is this even a word?) concepts.  This isn't your usual Coke vs Pepsi, Chevy vs Ford, Republicans vs Democrats war of ideologies.  Reality is complex, and simple models are just too simple to describe it.  That's why when we want a flexible system we end up doing hybrids, as there usually is no 'one size fits all' solution.  &lt;br /&gt;&lt;br /&gt;So the lesson from this is to learn, explore, and never be afraid to look at an alternative solution, as in more cases than not, you'll both be right and wrong at the same time, just for different set of parameters.  There are very few absolute rights and wrongs, but if you are comfortable with all the alternatives, then at least you have a good chance of picking the best solution for your application, your purpose, your environment.  If you're a tuner that always wants to run on the rugged edge and get as close as possible to 100% of potential, you probably want OL-SD.  For a daily driver that doesn't get scanned too often, CL-MAF or CL-SD are the way to go.  If you're  bracket racer and you want as much consistency and control as possible, OL-MAF will probably yield you the desired effect.  &lt;br /&gt;&lt;br /&gt;Don't be a close minded zealot--just because a buddy with a fast ride told you something, doesn't mean it's going to work for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-8681387281583090121?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/8681387281583090121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=8681387281583090121' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/8681387281583090121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/8681387281583090121'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/11/terminology-and-confusion-part-2-olvscl.html' title='Terminology and Confusion, part 2 (OLvsCL)'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-4853333760401353517</id><published>2006-10-18T15:32:00.000-04:00</published><updated>2006-10-18T17:04:04.345-04:00</updated><title type='text'>Terminology and Confusion, part 1</title><content type='html'>A lot of big words get thrown around on all the forums, but how many people actually understand what they're saying?  Once you actually read into their posts or problems, it quickly becomes obvious that they either don’t know what they're saying, or they just answered their own questions without knowing it.&lt;br /&gt;&lt;br /&gt;The usual example:  MAF tuning vs. SD tuning.&lt;br /&gt;MAF tuning is not a _pure_ MAF tuning.  During sudden changes in throttle input, or any other MAP jumps, the PCM prefers to refer to the VE table for airflow lookup/calculation.  If you're not sure how VE table express airflow can, I highly recommend reading my 'How Speed Density Works' paper.  If this was a "pure" MAF system, ALL requests would come from the MAF and MAF alone.&lt;br /&gt;&lt;br /&gt;GM decided to make it into a hybrid system.  Why would they do that, might you ask?  MAF can deliver very precise, low noise signals, providing simple devices that can be easily calibratable to different applications, and have a reasonable range and resolution.  But it also has a problem with not having the cleanest signal when not much airflow is going through the MAF sensor, or failing to deliver a smooth, universal airflow.  Speed Density calculations however are just that--math.  It's not dependent on physical conditions, thus not affected by the non-uniform airflow at lower MAF frequencies.  As long as all the necessary sensors (RPM, IAT, MAP) are healthy, and all the lookup values (VE, displacement, IFR) are correct, the airflow numbers are going to calculated correctly, despite physical conditions like low, or reverse airflow.  The PCM itself is very much airflow source agnostic and it uses whichever source is better suited, or at least yields less erroneous values.  Another neat side-effect of having both Speed Density and MAF working together side by side, that if you detect MAF failure (DTC codes P0102 or P0103), the computer seamlessly falls back onto then pure Speed Density mode, so you can safely drive it to the mechanic.&lt;br /&gt;&lt;br /&gt;So to all the MAF pundits:  you can complain about SD all you want, but the truth is, you're running in SD at least part of the time you run your car, as there is no such thing as 'pure' MAF move on our PCMs.&lt;br /&gt;&lt;br /&gt;Some smart guys saw it as strength, an advantage to this dual-source approach, and SD tuning became a reality.  Turn off MAF, run in pure SD, and dial in your VE, so it precisely describes the breathing capability of your setup.  What do we do with MAF then?  After 4000rpm it's going to take over completely, and we're going to be ignoring our new perfect VE!  That's when I figured out how to 'map' the airflow calculated from the VE table onto the MAF frequency-based scale.  This way we have brought back the dual-mode capability to the system, just like the system is designed to work, but now it has new data, tailored to our application.  Because of that single source of airflow data, if the PCM decides to jump from MAF to VE based airflow, the airflow numbers should be smooth fit, not causing wrong air mass readings (that's used to look up timing advance, which in effect can cause bucking), or airflow, which in effects causes knock, or at least hesitation, making for a terrible drivability.&lt;br /&gt;&lt;br /&gt;An alternative, interesting approach was to use AFR%Error to manipulate MAF airflow numbers, to establish the new MAF calibration.  While theoretically it should yield an identical result as it would with my Dynamic Airflow onto MAF frequency mapping, the reality is too fuzzy, and often yields discrepancies significant enough to cause the engine to get different numbers than it should have.  While I do not recommend this method for MAF tuning, I _highly_ recommend using it to verify the VE tune, as well as to observe daily environmentally influenced fluctuations.&lt;br /&gt;&lt;br /&gt;Another note to MAF pundits:  If you claim that MAF is better purely on basis of not being able to get SD working correctly, you might want to watch out for your 'MAF' tune (I put it in quotes because it's still a hybrid with SD).  Every time you get on the gas more vigorously, your untuned VE table will rear its ugly head, and give you an AFR spike, bucking, knock that's hard to reproduce, hesitation on takeoff and general unpleasantry.  There is no escape from doing VE on these systems.  Even the most hard-headed MAF tweakers out there have given up, and modify at least the idle areas of VE as without that, making the car idle is somewhere between difficult and impossible.&lt;br /&gt;&lt;br /&gt;To farther prove my point about the MAF having very different characteristics on low vs. high airflow situations, let me demonstrate a typical spread of samples from &lt; 5000Hz, and above 6000Hz.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="MAFhighairflownoise.png" href="http://flickr.com/photos/92934077@N00/273363912" &gt;&lt;img src="http://static.flickr.com/90/273363912_6259ed244a_d.jpg" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="MAFlowairflownoise.png" href="http://flickr.com/photos/92934077@N00/273363862" &gt;&lt;img src="http://static.flickr.com/106/273363862_b5b5cf8b67_d.jpg" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can notice, the scatter is quite significantly higher in the lower frequency areas (look at R^2 values).  I use different sets of parameters to filter out noise for these two distinct regions, because of their different characteristics, I use 5500Hz as the usual boundary between high and low noise areas.  I had a very large smile on my face, when I downloaded LS2 and LS7 stock tunes, and saw not one, but two MAF tables, switching at 5800Hz!  Apparently GM also has two different sets of filtering parameters for the two distinct characteristics of MAF and the signal quality based on airflow.&lt;br /&gt;&lt;br /&gt;In the end, remember what SD or MAF is:  a source for airflow figures.  If the PCM doesn't care where it gets the numbers from, why would you?  &lt;br /&gt;&lt;br /&gt;Most of the arguments out there stem from lack of understanding of how they work, and what are their limitations and applications.  There are a lot of myths out there, i.e. SD not being able to compensate for altitude or temperatures.  This is just plainly not true, as that's precisely why MAP and IAT sensors are there for.  MAF has problems with the small upper airflow limit, and reversion on some setups, so it's not perfect either.  Understand both, use what works better for you.&lt;br /&gt;&lt;br /&gt;Part 2 is going to be an Open and Closed Loop, should be up in few days.&lt;br /&gt;Hope this helps,&lt;br /&gt;&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-4853333760401353517?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/4853333760401353517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=4853333760401353517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/4853333760401353517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/4853333760401353517'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/10/terminology-and-confusion-part-1.html' title='Terminology and Confusion, part 1'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115931135256922065</id><published>2006-09-26T18:44:00.000-04:00</published><updated>2006-10-18T03:06:06.520-04:00</updated><title type='text'>Tuning Methodology</title><content type='html'>Someone brought it up on the forums, and it's a good thing, so I'm reposting it for the sake of completeness on my site.&lt;br /&gt;&lt;br /&gt;1. Try to keep tuning sessions as close to repeatable as possible, same gas, same route, same time (like driving to/from work) work great. This way you get approximately the same amount of samples in the same temperature range. If the weather is particularly extreme (super hot, extra humid) take a note of it, expect your values to skew one way.&lt;br /&gt;&lt;br /&gt;2. Long steady inputs--I can't stress this enough, this is #1 reason why most people never get their numbers straight. If you get on the throttle--hold it. If you get off throttle, don't half-ass, lift completely--this way it's easy to filter unwanted (transients/not steady airflow) cells. In HPTuners, there's now way to ask for a derivative of anything, so there's no way to know if you're accelerating or decelerating. EFILive has 'filter out if value changed more than X %' capability &lt;hint hint to HPT crew&gt;&lt;br /&gt;&lt;br /&gt;3. Warm up the WHOLE car, don't just look at the coolant temperature. Fuel warms up too.  If you don't believe me, go scan for a while, and then go fill up with new fuel, and continue scanning, I promise you your trims are gonna go nuts. Fuel temperature affects atomization, which affects how complete is the burn, which affects the resulting AFR. The rule of thumb here is 15 minutes of normal driving before you log for VE.&lt;br /&gt;&lt;br /&gt;4. No lugging it in tall gears (5-6th).  Laziness gets the best of you, and you end up tooling around at 1500rpm in 6th, give it more gas, it knocks. While it's not a real dangerous knock, but it will show up in your logs, and you might end up pulling timing where you really didn't need it.  Avoid doing it in general, not just for tuning, if you need to accelerate, downshift.&lt;br /&gt;&lt;br /&gt;5. Be creative -- use the environment. Hills are GREAT for getting the more extreme cells. how else you're gonna get these 20kPa at 4000rpm cells without decelerating?  (you can always use a real dyno, like &lt;a href="www.dynodynamics.com"&gt;Dyno Dynamics&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;6. Be observant, learn the ways of your car. There are things that are particular to every car, and the most seasoned tuner won't notice them, simply because they don't have the milage on your car you do.  Use it to your advantage.  My car, for example, has random knock 1600-2000 rpm;  it's just tight suspension on lousy roads, making things rattle and set of knock sensors.  If you give it more throttle and it binds up, then there's no knock, but driving gently makes it rattle.  Pure 100octane and lame timing won't cure it either.&lt;br /&gt;&lt;br /&gt;7. Organize, label, and take notes on your logs. Temp/pressure/humidity/terrain often explain a lot of goofyness in the logs. once I was chasing what I thought was an intake leak, but it turned out to be that the guy lived in some serious hills.  During a 20 minute commute between work and home, his WOT MAP would drop from 100kPa to 93kPa max. I didn't know that, he didn't tell me.  It took us a while to sort it out.&lt;br /&gt;&lt;br /&gt;8. Tuning is science--don't ever forget about that.  Repeatability, changing one thing at the time, taking notes, not falling into routine or assumptions, all these boring things psychotic science teachers tried to drill into your heads in high school--they weren't cool, but they were right, so deal with it.&lt;br /&gt;&lt;br /&gt;9. Keep your hardware fresh and clean.  If you see AFR scatter more than usual, check your filters.  If you see MAP not getting up to where it used to be in the same conditions as before--your cat might be clogged up.  If you installed headers and you're tuning for them and it's starting to converge on some new numbers but then out of nowhere they go crazy on you--retorque header bolts, something might have gotten loose after few heat cycles, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115931135256922065?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115931135256922065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115931135256922065' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115931135256922065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115931135256922065'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/09/tuning-methodology.html' title='Tuning Methodology'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115899811074367854</id><published>2006-09-23T03:22:00.000-04:00</published><updated>2007-08-05T00:28:47.251-04:00</updated><title type='text'>LS2 VE tuning spreadsheet</title><content type='html'>I've started reading LS2/GTO/Vette boards, and a lot of people seem to have a problem with tuning their VE, simply because it's different than what they're used to with LS1.&lt;br /&gt;The funny part is that the form we see in LS2's is not functionally any different from the old form.  It's just different numbers, but the shape of the 3d surface is the same.  Now that my Speed Density paper is out, we know that the factor is exactly R/CylinderVolume.  However, because it is a linear factor, mutiplying the VE table by AFR%Error should be the same, no matter what factor is there.  So viewing the table in the traditional VE is more for information than actual functionality.&lt;br /&gt;&lt;br /&gt;Theo ne new thing I'm trying with this spreadsheet is to see how people use them:&lt;br /&gt;Do you want everything on one tab?&lt;br /&gt;Do you want step by step on different tabs?&lt;br /&gt;Do you want everything on one tab, with multiple copies of the setup, so you can keep track of progress?&lt;br /&gt;&lt;br /&gt;Leave comments, send email/IMs or whatever, I just wanna know how I should make them for the future.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/LS2VE.xls"&gt;DOWNLOAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115899811074367854?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115899811074367854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115899811074367854' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115899811074367854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115899811074367854'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/09/ls2-ve-tuning-spreadsheet.html' title='LS2 VE tuning spreadsheet'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115899610170340863</id><published>2006-09-23T02:54:00.000-04:00</published><updated>2007-11-03T12:32:01.020-04:00</updated><title type='text'>How Speed Density works</title><content type='html'>This is the most important work I've ever done, or at least it feels like it.  It takes you from sensor data through calculating pulse widths, and all the forms of VE and their particular meaning.&lt;br /&gt;&lt;br /&gt;I feel particularly proud, because it all makes sense so far with everything else we've been discovering how these cars run, how the PCM operates and explains a lot of peculiarities of the model GM decided to employ.&lt;br /&gt;&lt;br /&gt;The understanding of concepts helped me tremendously.  Some things you take for granted, others you just kinda understand, but this puts it all in black and white, solid, precise numbers that show you what and how you wanna run in your car.&lt;br /&gt;&lt;br /&gt;I tried to make it as universal as possible, but because of the GM-particular VE form (that I refer to as GMVE) a lot of the paper deals with that.  However, the rest is just about universal.  Some of the language like ECT (coolant temp) or IAT (aircharge temp) might not be universal, but I tried to explain what they all mean at least at one point, so you can change IAT to AIT if that's what you're used to.&lt;br /&gt;&lt;br /&gt;The cool part is that I have gotten some data that confirms the formulas.  I've logged all the sensor data necessary, and tried to calculate data normally we'd obtain through PIDs.  Cylinder Airmass seems to be very close, with less than 2% error through the whole range of values.  Other values dont seem to be that far off either.  Considering how many filters there are on anything airflow related, I consider this to be a very good result completely backing up my work.&lt;br /&gt;&lt;br /&gt;Due to the fact I needed a lot of math formulas displayed nicely, I had to put it in a Word document, and not a webpage.  If you know a way to easily convert it over to a webpage, please let me know, until then, it's just a paper.&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/HowSpeedDensityWorks16.doc"&gt;DOWNLOAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also include a spreadsheet with stock 2004 Z06 values, and convert them to other forms using my math, side by side with the originals.&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/2004Z06VEs.xls"&gt;DOWNLOAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope you guys like it, cause this was a shitload of work.&lt;br /&gt;Enjoy,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115899610170340863?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115899610170340863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115899610170340863' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115899610170340863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115899610170340863'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/09/how-speed-density-works.html' title='How Speed Density works'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115785857275340364</id><published>2006-09-09T22:49:00.000-04:00</published><updated>2007-11-03T12:32:47.305-04:00</updated><title type='text'>Cylinder Volume Spreadsheet</title><content type='html'>This is so simple I'm embarrassed to post it.  At the same time, I've seen it messed up too many times to be unaddressed.&lt;br /&gt;&lt;br /&gt;Math:&lt;br /&gt;Cylinder Volume= Pi * radius^2 * height&lt;br /&gt;Engines:&lt;br /&gt;Cylinder Volume= Pi * (bore/2)^2 * stroke&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To justify releasing it, I integrated a trick where if you so far have tuned your VE but haven't changed your Cylinder Volume, I also give you a number to multiply your entire VE by.  This way you don't have to retune the whole VE again.&lt;br /&gt;&lt;br /&gt;Also, the inputs are in inches (unfortunatelly popular with the LSx crowd) but it gives you output in Liters, which are the units to be used in HPT's Cylinder Volume field.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.marcintology.com/tuning/borestrokecylinder.xls"&gt;DOWNLOAD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;enjoy,&lt;br /&gt;Marcin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115785857275340364?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115785857275340364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115785857275340364' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115785857275340364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115785857275340364'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/09/cylinder-volume-spreadsheet.html' title='Cylinder Volume Spreadsheet'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115760095745006744</id><published>2006-09-06T23:44:00.000-04:00</published><updated>2006-10-18T03:06:06.257-04:00</updated><title type='text'>Rated fuel pressure on SVO 42s is...</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Rated fuel pressure on SVO 42s is 43.5psi (3bar).  End of argument.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Here's a proof:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" title="flowsheet" href="http://www.flickr.com/photos/92934077@N00/236528258/"&gt;&lt;img src="http://static.flickr.com/79/236528258_5896a4b564_o.jpg" border="0" width="547" height="800" alt="flowsheet" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So apparently my empirical experiments year and a half ago were right 3bar it is.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;and now we know better...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;I got another one from another friend, so here's more examples on a typical flow spread&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/92934077@N00/253104409/" title="Photo Sharing"&gt;&lt;img src="http://static.flickr.com/114/253104409_c4dd0b7bb9.jpg" width="500" height="406" alt="svo42s_2" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115760095745006744?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115760095745006744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115760095745006744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115760095745006744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115760095745006744'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/09/rated-fuel-pressure-on-svo-42s-is.html' title='Rated fuel pressure on SVO 42s is...'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11379514.post-115696585853922514</id><published>2006-08-30T14:41:00.000-04:00</published><updated>2007-11-03T12:28:24.696-04:00</updated><title type='text'>Unscrewing a Bad Tune</title><content type='html'>&lt;span style="font-family:verdana;"&gt;This is something I keep happening time over time: you build up your car, you get a mail tune, or a dyno tune done by some hack, and you hate how the car drives and performs, so you save your pennies, get yourself a tuning package, and you try to do it all yourself. This is exactly how I started, and back then there was little in terms of writeups. These days the problem is that there's too many writeups, and some of them are better than others, however, as a newbie, you have no way of telling. Another big question that keeps coming up is 'What do I do first?' which is a great question, however there's no good answer to, as that depends on what's screwed up.&lt;br /&gt;&lt;br /&gt;So this writeup is pieced together from a long collections of emails and forums posts.&lt;br /&gt;&lt;br /&gt;1. Set IFR to your injectors and fuel pressure. Please measure it,&lt;br /&gt;see if it holds fairly stable when you give it some gas, you might be able to find a weak spot or a deficiency in your fuel system.&lt;br /&gt;2. Set Primary VE to something that makes sense. Start with a known good tune for a similar camshaft, heads, and headers. It doesn't have to match perfectly, as every car is different regardless, but it will get you in a good starting position.&lt;br /&gt;It wont be perfect, but it should be much closer to what you need than a stock tune.&lt;br /&gt;3. If you have older car with Primary and Secondary VE tables, then do an 'adaptive copy' (just&lt;br /&gt;copy the relevant rows) of the new Primary VE to Secondary VE , or use http://www.marcintology.com/tuning/VE2bar.xls&lt;br /&gt;to do it for you&lt;br /&gt;(http://redhardsupra.blogspot.com/2006/02/new-ve-tuning-spreadsheet_03.html&lt;br /&gt;has a description of what does it do)&lt;br /&gt;4. Copy high and low octane spark tables from that 'good' tune into yours. If you can't find a good one, I like to start with 02+ Z06 spark tables, as they account for more compression, better flowing heads and a higher lift cam, which makes it closer to what most modded cars have.&lt;br /&gt;5. Blend in the idle areas of spark with values that start at 36* at low rpm and end at about 30-32* at your rpm/cylinder airmass.&lt;br /&gt;6. Use the same blended values in idle areas of spark in the "idle&lt;br /&gt;spark in gear" table. If you have an automatic, also copy it over to "idle spark in park/neutral".&lt;br /&gt;7. Copy RAF drive table over from a good known tune. Again, just like in #3, it won't be perfect, but will be closer than stock. If you dont have a well tune RAF example, up the RAF values in the usual range of ECT by about 3g/sec.&lt;br /&gt;8. Put the car in SD (MAF Fail Frequency set to 0Hz). Start it up, verify&lt;br /&gt;that it goes into SD by reading DTC's (it should throw P0103). if it&lt;br /&gt;doesnt, turn it off, start it again, sometimes it takes 2 or 3 starts.&lt;br /&gt;&lt;br /&gt;At this point, you have 2 processes to go through: RAF and VE. VE&lt;br /&gt;has multiple ways of doing it, and of course everyone claims their to&lt;br /&gt;be the best, I'll show you the simplest one that should work perfect&lt;br /&gt;to get the initial 'daily drivability' to be really good, and can be done on any car as it uses stock oxygen sensors.&lt;br /&gt;&lt;br /&gt;If the car doesn't die, start driving around, logging for LTFT and&lt;br /&gt;STFT and O2s on both banks. (default setup will do that if you're unsure of what to log, just hit 'reset' in the 'Display Table')&lt;br /&gt;&lt;br /&gt;Again, these procedures only make sense in SD, so make sure you're truly in SD.&lt;br /&gt;One trick is to set the codes to set SES light upon the MAF faliure, this&lt;br /&gt;way when MAF fails (aka SD takes over) you get the SES light. I refer&lt;br /&gt;to it by now as the SD light ;)&lt;br /&gt;&lt;br /&gt;Drive around in SD, let's get the daily drivability done first, so&lt;br /&gt;keep it under 3-4krpm (depending on gearing and powerbands) logging&lt;br /&gt;fuel trims.&lt;br /&gt;&lt;br /&gt;Once you get about 25 samples per cell across the whole range you're&lt;br /&gt;trying to tune, stop, save the log. Then open up the VE2bar.xls I&lt;br /&gt;mentioned earlier, and copy and paste the appropriate tables into it.&lt;br /&gt;Let it do it's thing, and copy the results out of the full- and half- resolution tables, and apply them to the corresponding VE tables. On the&lt;br /&gt;beginning do 'paste special--% full' so it will get big changes done&lt;br /&gt;quickly. Once you get much closer to the target (less than 5% off) I do 'paste&lt;br /&gt;special--%half' so the changes are more subtle and you dont 'overshoot.'&lt;br /&gt;This spreadsheet is made so once you get some values within that -4 to&lt;br /&gt;0 range, it doesn't try to adjust them. The reason for it is that if&lt;br /&gt;you'll tune it perfectly for 0%, you'll have what I call a 'knifeedge'&lt;br /&gt;tune, a tune that will run rich or lean depending on atmospheric&lt;br /&gt;conditions, and as such, will be unpredictable. Once we're a little&lt;br /&gt;bit on the rich side, computer treats is as the same safe set of&lt;br /&gt;settings, and will not try to preemptively pull timing, like it would&lt;br /&gt;if some of the tune was on the lean side.&lt;br /&gt;&lt;br /&gt;Once you get a correction done, save it to a new copy of your tune,&lt;br /&gt;flash it, and then reset the fuel trims (that's in the live controls&lt;br /&gt;section of the scanner).&lt;br /&gt;Go for a 10-15 min drive. Because of the reset, the fuel trims will&lt;br /&gt;initially go nuts. That's good, that means it's learning aggresively, and&lt;br /&gt;trying to find it's new set of 'happy' settings. Stop the car, turn&lt;br /&gt;it off, start it up again, do NOT reset fuel trims now, just start&lt;br /&gt;another logging session. The second session has dual function:&lt;br /&gt;1. It verifies that the changes made sense, and they do work better&lt;br /&gt;than the previous setup.&lt;br /&gt;2. It gathers data for another iteration of the VE tuning.&lt;br /&gt;&lt;br /&gt;If you gather enough data (it's very useful to set the 'minimal cell&lt;br /&gt;count' to 25 on the LTFT and STFT charts, this way nothing will show&lt;br /&gt;up until you get 25 samples, which guarantees a clean, consistent&lt;br /&gt;dataset) just start looping through the process of&lt;br /&gt;scan/calculate/adjust/flash/reset/ride to adjust until the fuel trims&lt;br /&gt;will all come back in the -4 to 0 range.&lt;br /&gt;&lt;br /&gt;Once that's done, do RAF:&lt;br /&gt;1. Scan from full cold start to full warm. Turn off fans for this&lt;br /&gt;purpose to let the car warm up to ~220F. Scan for ECT and STIT.&lt;br /&gt;2. Create a custom histogram of ECT vs STIT, and display the gathered data in it.&lt;br /&gt;3. Do "Paste--Add" the resulting table to the corresponding RAF table.&lt;br /&gt;4. Wait till next time the car is fully cold, and redo the whole&lt;br /&gt;process again. Repeat until the STITs are &lt;0.1g/sec&gt;&lt;br /&gt;throughout the whole range.&lt;br /&gt;5. (automatics only) You get to redo the whole process again, but not in Park, but in Drive, as the RAF tables in Park/Neutral are little different.&lt;br /&gt;&lt;br /&gt;If the car doesn't want to idle with the initial settings, you have to&lt;br /&gt;ballpark the VE some more. Usually you're overfueling (which is made&lt;br /&gt;very visible by a 'surging' idle) so cut down the idle range VE values&lt;br /&gt;by 10% (select the cells in question, put it 0.9 and press * to bring it down to 90% of previous values), flash, try again, until it's reasonable enough to do a real VE scan which will get the VE tables set precisely. The whole goal of this 'ballparking' is to get it close enough that it can idle on its own, thus allowing us to gather data for a proper adjustment.&lt;br /&gt;&lt;br /&gt;If you're familiar with tuning VE with OL and WB, then you can do that&lt;br /&gt;instead, but it's really not much different, just few extra steps.&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Marcin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11379514-115696585853922514?l=redhardsupra.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://redhardsupra.blogspot.com/feeds/115696585853922514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11379514&amp;postID=115696585853922514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115696585853922514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11379514/posts/default/115696585853922514'/><link rel='alternate' type='text/html' href='http://redhardsupra.blogspot.com/2006/08/unscrewing-bad-tune.html' title='Unscrewing a Bad Tune'/><author><name>Marcin</name><uri>http://www.blogger.com/profile/13430951763613440179</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06928847689102108605'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>