Monday, August 21, 2006

From Airflow to Pulse Widths

Ultimately, the function of the PCM is simple: measure airflow, and provide engine with enough fuel to match that airflow.

As just about anything in life, it's easier said than done. Airflow measurement is a notoriously tricky subject, and injecting fuel with a constant size injector against wildly varying pressures in the manifold isn't exactly easy either.
However, the principles of Physics always hold. Things like density, ideal gas law, proportions, and timing allow us to approximate the duration at which we want to hold the injector open. Putting all these things together, I was able to come up with a model that can approximate the pulse widths based on airflow fairly accurately. The concepts however weren't trivial, so I decided to make a full standalone application to demonstrate these concepts.

The real motivation behind this project were people, miserably failing at understanding the relationships between airflow, fuel, pressures, temperatures and all the other important. I am not the teacher type, and I do not take pleasure at explaining the same basics over and over, and have them doubt me. I remove doubt by introducing physics and quantification of entities involved.

So here it is, my first GUI application. I've always sucked as a coder, but the new VB express 2005 I must say made my life easier on this project.

During the development I tried to remember everything that annoys me about most applications, and keeping that in mind, I tried to avoid it. There is no annoying 'calculate' button, the whole application is 'live'--every time you change a value, all the results and prerequisite intermediate steps get updated. Another annoyance of Windows programs is the inability of looking at more than one instance of what I'm playing with at the same time, thus: the Clone button, which gives you another instance of the program, for your 'compare and contrast' pleasure. Also, there's no limits (beyond available memory) to how many you can look at simultaneously. Defaults make sense, I made it with SVO 30s and stock cube LS1's in mind, but of course all of this can be changed to any value you want. I checked it by trying values describing BPU'ed Supras and stockish S2000's and they all make sense too.

So the most basic mode of operation is to check if what my setup flows can be supplied with enough fuel at my operational AFR, temps, altitudes and RPM range. This is simple, merely adjust the numbers for your hardware, and you will get the pulse width needed to complete a full injection cycle. If it's bigger than the duration of the cycle, you're in trouble (one of fields will go red/yellow to alter that you're past the limits). If it's in the safe zone, you can start playing with it. Here's some questions it can answer:
  • How much higher can I rev with these injectors?
  • Is my fuel system big enough to handle heads and cam?
  • Why do Forced Induction setups eat so much more gas?
  • What if one of my injectors flows 10% off others, what kind of conditions are gonna be in that cylinder?
  • If I go racing to some good Density Altitude track, what kind of fuel consumption can I expect?
  • Why do I run lean when I went to more cubes?
and so on... This is a useful litttle utility, especially for educating yourself on what makes injectors work harder, what kind of hardware is really needed to race safely, and what conditions are desirable.

I'm planning on expanding this utilty to have a more precise Air Density calculations, helpers for injector sizing and cylinder displacement, etc.
Please comment, report bugs, give me ideas, etc.

The only problem with this software is that it requires Dot Net 2.0 on your computer. Most HPT users already have it on their computers, and if not, please download/update what you need.


enjoy, Marcin


Post a Comment

Links to this post:

Create a Link

<< Home