Fuel injection

This is going on a previously carbureted engine (which was VERY poorly jetted, so anything will be an improvement)

I have already built the injection manifold (2 injectors in a throttle body injection setup), so it's non-sequential injection. Although I might try to set it up such that the injectors alternate, to better atomize the fuel.

There will be a total of 4 sensors:

  1. TPS (Throttle position sensor, or a 3-wire potentiometer)
  2. O2 sensor (my understanding is that it generates its own current, the one I chose is 1-wire and grounded through the body I assume)
  3. Temperature sensor (not necessary, but makes starting the car much more simple.)
  4. MAP sensor (Manifold Absolute Pressure, not necessary, but would help overall efficiency)

And a total of 2 outputs (possibly just one), the relays for the fuel injectors.

In a bare bones mode, you only need two inputs. The O2 sensor tells the unit what the air/fuel ratio is, and the processor can adjust the richness accordingly by varying the pulses of the injectors. The TPS tells the processor when you're stepping on the gas pedal so that it can give a little more fuel in prediction of the higher demand by the engine, and in the event of an O2 sensor malfunction gives the processor something to let you limp to your destination on.

On startup, the engine is cold and needs more fuel than air. In the past this has been accomplished using a manual choke or an electric choke. Since the position of the flap in the throttle body is dictated by the position of the pedal, an override needs to be done on the O2 sensor input so that the engine runs "rich" until the temperature gets above a certain level.

Tuning will be done once I have the basic layout completed.

The Arduino would be connected to the injector relay via a step-up SSR (like this one: http://www.ebay.com/itm/4A-200V-DC-Output-SIP-Soldering-Pin-Solid-State-Relay-/250949450397?pt=LH_DefaultDomain_0&hash=item3a6dc0ba9d#ht_1555wt_1181 )

I'm using an Arduino Duemilanove (ATmega328), I understand that I'll probably have to have the laptop running for the Arduino to be able to process all the information, and I'm open to creative ideas. ]:smiley:

Let me know what you folks think.

IF you can get the timings right, you can get real good on the setup.

You can use a simple if statement to say "If (ICT < 180F) then richen by 5%". You can also add a starter-sense wire (MSD's do this for start-retard on timing, since racecars run up to 38 degrees of timing) that will do a 200% fuel map while the starter is spinning.

The hardest part is setting the pulse width. This very idea is what got me intrigued in Arduinos. I'm going to take 8 LED's with a 8000RPM fan to mock everything up, using the fan as the crankshaft, and each LED is an injector.

What I came up with, is that a good baseline is to have the injector open for 25% of the time that the intake valve is open, based on the camshaft intake lobe centerline.

Our race engine (http://magnethead794.com/coppermine/displayimage.php?pid=2840&fullsize=1) has IVO at 43 degrees BTDC and IVC at 79 degrees ABDC, centerlined at 108 degrees, with a 302 degree duration (43 + 79 + 180 = 302). To have the injector open for 25% at the centerline, You'd have to calculate how long (TIME) 12.5% was, and apply that on either side of centerline (108 degrees). 108 degrees / 360 degrees = 0.30 of a rotation.

Since all the measurements are made relative to the crank, it simplifies things.

2000 RPM = 33.33 RPS = 0.030 seconds per rev = 0.009 seconds = 144,000 cycles to centerline @ 16Mhz
4000 RPM = 66.66 RPS = 0.015 seconds per rev = 0.0045 seconds = 72,000 cycles to centerline @ 16Mhz
6000 RPM = 100.0 RPS = 0.010 seconds per rev = 0.003 seconds = 48,000 cycles to centerline @ 16Mhz
8000 RPM = 133.33 RPS = 0.0075 seconds per rev = 0.00225 seconds = 36,000 cycles to centerline @ 16Mhz
10,000 RPM = 166.66 RPS = 0.006 seconds per rev = 0.0018 seconds = 28,800 cycles to centerline @ 16Mhz

Okay, so we know how long it is from Top Dead until we hit the intake lobe centerline. We can write a program to find that:

RPS = RPM/60 (Rotation per second = RPM over 60 seconds)
SPR = 1/RPS (Sec per Rev = 1 over rotation per second)
TATDC = SPR * (ICL/360) (time after top dead center = sec per rev times the percentage of the intake centerline to a 360 degree circle)

Convert that time to milliseconds, and we have something the CPU can play with.

Next, we need to find how long the intake valve is open. We know it's open for 302 degrees of the crankshaft, so...

IVOT = SPR * (IVD/360) (Intake Valve Open Time = Sec per Rev times the percentage of the intake duration to a 360 degree circle)

Again, convert to milliseconds, and it's something the CPU can understand.

Multiply that by an arbitrary value, say 12.5%. This will be ONE HALF of our injector pulse width.

PW = IVOT * 0.125

Are you still with me? Let's connect it all together.

Start at top dead center. Let's say you have a 1-pulse-per-revolution crank sensor that we're going to be operating off of.

Top Dead Center piston 1
(wait until time = TATDC - PW)
Open injector 1 (start spraying)
(wait until time = TATDC + PW)
Close injector 1 (stop spraying)

{fire next cylinder, #8}

{fire next cylinder, #4}

{fire next cylinder, #3}

Top Dead Center piston 1 again....but we're on a 4 cycle motor

Top Dead Center piston 6
(wait until time = TATDC - PW)
Open injector 6 (start spraying)
(wait until time = TATDC + PW)
Close injector 6 (stop spraying)

{fire next cylinder, #5}

{fire next cylinder, #7}

{fire next cylinder, #2}

and repeat.

Set the crank trigger as an interrupt, so that any miniscule time offsets can be corrected with every revolution.

You'll also have to calculate how long the delay is between closing one injector and opening the next on the firing order.

The 25% pulse width can be operated on by your IAT, CT, ect sensor readings as necessary.

On startup, the engine is cold and needs more fuel than air.

I find this a little hard to believe. More fuel than air? Starts better flooded, does it?

PaulS:

On startup, the engine is cold and needs more fuel than air.

I find this a little hard to believe. More fuel than air? Starts better flooded, does it?

Better believe it. The fuel injected quantity has more than 2 states, none and flooded. More than normal can be less than flooded, pretty sure this is the idea behind the accelerator system in general.

More than normal can be less than flooded, pretty sure this is the idea behind the accelerator system in general.

Sure, but the ratio of fuel to air never even approaches 1, let alone exceeds it.

PaulS:

More than normal can be less than flooded, pretty sure this is the idea behind the accelerator system in general.

Sure, but the ratio of fuel to air never even approaches 1, let alone exceeds it.

See your point. It needs more fuel and less air on startup, you're obviously a better pedant than me.

Ok, I'm going to make this simple... The LAST thing you want driving the fuel injectors is a relay. I'm assuming you're going to put it on the power side, and without a clamping diode across the relay, you're going to create some NASTY voltage spikes (relay coil is essentially the same as an ignition coil... think about it). Most ECU's are on the GROUND side of the driven outputs, and use simple switching transistors (I'd have to look up what the MSII uses for driver transistors) as most of the voltage is gone after the output coil(s).

And, in bare bones mode, considering most older electronic engine controls used a carburetor, you still need a manifold pressure and coolant/air temperature sensors, to smooth out the fuel/air mixture across the entire operating temperature range of the engine. Considering that the O2S is useless until it reaches 600F (around 160F indicated by the coolant temperature sensor), this is even more important. Unless you want to wire in a heated oxygen sensor and build a timer circuit to control the heater's relay coil...

PaulS:

On startup, the engine is cold and needs more fuel than air.

I find this a little hard to believe. More fuel than air? Starts better flooded, does it?

Never started a small engine before? You essentially have 3 main components in the tiny carburetor of a weedeater that are also on larger carburetors:

Venturi flap (regulates air intake)
Fuel inlet
Choke flap

The venturi flap regulates how much air can enter the engine, and the fuel inlet (often using a needle valve) regulates how much fuel enters. Both are actuated by the throttle cable. The choke flap (in this case, a manual choke) allows you to manually suppress the amount of air entering the engine, while keeping the amount of fuel the same. Hence making the mixture more "rich".

If you leave it choked and try to run it for any length of time, it'll begin to run horribly. As the temperature of the engine levels out, the air/fuel ratio gets closer to being stoichiometrically equalized. Thus you choke for starting, and turn choke off as soon as you can.

But let's stay on topic. :wink:

magnethead794, I've got to say that was one amazing reply. Hahaha.

Unfortunately all that was wasted on me, however, due to my using throttle-body injection. Sequential injection was a little much for my application.

It sounds as though you've done a lot of research on the topic! I'd love to have more of your input.

martianent:
Ok, I'm going to make this simple... The LAST thing you want driving the fuel injectors is a relay. I'm assuming you're going to put it on the power side, and without a clamping diode across the relay, you're going to create some NASTY voltage spikes (relay coil is essentially the same as an ignition coil... think about it). Most ECU's are on the GROUND side of the driven outputs, and use simple switching transistors (I'd have to look up what the MSII uses for driver transistors) as most of the voltage is gone after the output coil(s).

And, in bare bones mode, considering most older electronic engine controls used a carburetor, you still need a manifold pressure and coolant/air temperature sensors, to smooth out the fuel/air mixture across the entire operating temperature range of the engine. Considering that the O2S is useless until it reaches 600F (around 160F indicated by the coolant temperature sensor), this is even more important. Unless you want to wire in a heated oxygen sensor and build a timer circuit to control the heater's relay coil...

I really appreciate your simplicity. :slight_smile: That makes things easier for me, considering I'm electronically daft.

I did much consideration on the part of the relay, and chose it because the majority of vehicles in the past have utilized fuel injection relays also. Although this may not be the optimal path to take, it apparently works... If I am mistaken, please correct me. I'd rather this work. :smiley: One of my main concerns with the relay concerns the life of it. If the SSR I posted earlier could take the load of the injectors, I would be more than happy to forego the use of mechanical relays. I have yet to find reliable information on the draw of the injectors, though I highly doubt it exceeds 200V, 4A DC.

By "bare bones mode", I essentially mean "carburetor mode". Non computer-controlled carburetors do little more than match the fuel output to the air output by a linkage and specific "jets". So, really the only things needed to limp somewhere is an input from the TPS and a curve in the controller that tells it how many pulses, for how long, for a given input from the TPS (potentiometer). The addition of the O2 sensor further allows it to monitor the A/F ratio to make minute adjustments and increase efficiency. Temperature sensor adds the ability to start it in cold weather, and MAP sensor, to my understanding, allows it to change the A/F ratio to better accommodate heavy loads (when manifold vacuum would be low, such as when driving up a steep hill).

Perhaps EFI is the wrong term to use, as it implies a very very complex system of sensors, outputs and logarithms. Consider this to be a glorified, computer-controlled PWM carburetor. :slight_smile:

If it is something within my abilities, I would be more than happy to wire in a heated oxygen sensor. These would be more readily available anyway. Nonetheless, I am quite used to letting my car "warm up", so I could just sit there until the O2 sensor reaches an appropriate temperature and the "choke" over-ride turns off. Your input on the O2 sensor is very good! I've read many articles and did not run across the straightforward information you provided. Perhaps you can also shed more light on the mysteries of the MAP sensor for me? :slight_smile:

Also, here's a picture of the throttle-body injection unit I cobbled together that bolts in place of the stock carburetor.


Yes, the welds are not optimal... However, they are well-sealed. I was using a remote-air unit while welding galvanized steel (I'd ground most of it off while wearing a respirator, but there was still enough left to mess with my welds).

The tubes have slots cut in the sides, so that air will essentially have to flow in a figure-8 pattern on its way down the tubes. Should atomize the fuel well. :grin:

Awww, that's cute.

But again, let's stay on topic.

The venturi flap regulates how much air can enter the engine, and the fuel inlet (often using a needle valve) regulates how much fuel enters.

And the ratio of fuel inlet to air inlet should tell you something about the ratio of fuel to air. Never, no matter how much choke is applied, does the amount of fuel entering the combustion chamber exceed the amount of air.

If you can't get simple facts straight, I worry about your ability to construct something that does not end up looking like that Caddy,

PaulS:

The venturi flap regulates how much air can enter the engine, and the fuel inlet (often using a needle valve) regulates how much fuel enters.

And the ratio of fuel inlet to air inlet should tell you something about the ratio of fuel to air. Never, no matter how much choke is applied, does the amount of fuel entering the combustion chamber exceed the amount of air.

If you can't get simple facts straight, I worry about your ability to construct something that does not end up looking like that Caddy,

Well now, we have a royal smarta** here, don't we?

I've done full restorations on 3 vehicles, (1981 Chevy El Camino, 350ci carbureted, frame off restoration; 1966 VW bus built using the chassis from a '72, full engine rebuild by ME; and a 1979 Dodge Omni, which is what this blamed contraption is going on)
I've restored and customized a 1977 Honda CB 550 as a cafe racer, building all the parts myself. Soon to be FI also.
I have an AS in Mechanical Engineering with a concentration in manufacturing, a manual machine certificate, and I'm working on my welder's certification.
I have more hours in practical mechanical experience than you have sitting in front of a computer trolling people's stuff.

So tell me, ONE more time, that I need to get the simple facts straight. I've already seen some useful information in this thread, each person posting just ONE time. You've posted 3 different times, every time nothing useful coming from your fingers. That gives you a success ratio of 0:3. I highly suggest you don't increase said ratio.

Snide comments and blowing smoke aren't going to help anyone.

Here is some helpful thoughts.

A/F= air fuel ratio. 14.7/1 = 14.7 parts air to 1 part fuel. That is way more air than fuel in terms of volume.

A/F air/fuel ratio an engine can run on is approximately 9.5/1 to around 17.5/1 in my experience, although those are the extreme limits and not at all ideal. In theory 14.7/1 A/F is perfect for a stable running engine but, for max power you want around 13.5/1 and max efficiency you want 15.5/1 depending on the engine.

The amount of time a fuel injector needs to be open depends on several things. I will list a few.

  1. The size of the injector. The bigger the injector the less time required.
  2. The fuel pressure. Typical EFI pressure is around 42psi. You can run less but, the with more pressure the less injection time required.
  3. engine rpm. Engines draw the most air when they are running at peak torque. It depends on the engine to find where that would be.
  4. Atmospheric pressure. Higher elevation means less air, which means less fuel required. You need an atmospheric pressure sensor to go with your manifold pressure sensor.
    5)battery voltage. Less volts = slower injector response.

You need a wideband O2 sensor to tune an engine from scratch. The sensor you are wanting to use only works when the engine is tuned nearly perfect. This might interest you. http://www.elektor.com/magazines/2012/january/wideband-lambda-probe-interface.2023142.lynkx?tab=4

Something else you might be interested in is http://www.megasquirt.info/

Trust me when I say that 1. Those fuel injectors weren't designed for a TBI application, which uses higher-impedance injectors, and 2. That relay you linked to isn't going to work.

The fuel injection pulse width is in the millisecond range for TBI. So, you're going to be switching that relay on and off hundreds of times per second. Leaving 2 problems, 1, it's going to burn out pretty quick, and 2, you're going to create issues with the collapsing of the relay's field coil that many times per second (electromagnetic interference). Relays ALWAYS go on the power side of a circuit and, if they're controlled by a computer, are driven by a transistor switch, which can both handle the relay coil's current AND the rapid switching. The fuel injectors are also always driven by a transistor, be it an early TBI system from the 70s or a modern SFI system in a Cadillac.

cyclegadget, you forgot to add one thing on your #5 in that list... Low battery voltage also weakens the spark, which makes ignition of less fuel more difficult. I was going to post up the MegaSquirt info, but I decided against doing so (I'll be running one when I'm done putting mine back together).

Ok. I've finally figured out what has everyone confused. Yes, A/F= Air/Fuel ratio. Yes, it's optimally 14.7 to 1. All this is the same as usual.

What threw everyone earlier is that I said that a cold system "requires more fuel than air". I apologize for improper wording, as I should have said "requires an increase in fuel while leaving air the same" or something to that effect. By no means did I mean that I was going to have an A/F of 14.7/14.8 or anything of the sort. I was simply implying an increase in the amount of fuel, holding air the same.

Now, FINALLY, let's move on. Progress.

cyclegadget:

  1. The size of the injector. The bigger the injector the less time required.
  2. The fuel pressure. Typical EFI pressure is around 42psi. You can run less but, the with more pressure the less injection time required.
  3. engine rpm. Engines draw the most air when they are running at peak torque. It depends on the engine to find where that would be.
    Couldn't this be addressed by TPS?
  4. Atmospheric pressure. Higher elevation means less air, which means less fuel required. You need an atmospheric pressure sensor to go with your manifold pressure sensor.
    Addressed by O2 sensor instead of adding a atmospheric pressure sensor? To my knowledge, early FI systems didn't require any atmospheric pressure sensors. Not the ones I've worked on.
    5)battery voltage. Less volts = slower injector response.

1,2,5 are correct.

You need a wideband O2 sensor to tune an engine from scratch. The sensor you are wanting to use only works when the engine is tuned nearly perfect. This might interest you. http://www.elektor.com/magazines/2012/january/wideband-lambda-probe-interface.2023142.lynkx?tab=4

This I like. I'll need to do some research on it. Just a thought, could this be tied into the Arduino board and simply use the wideband to run on, vs the narrowband?

Something else you might be interested in is http://www.megasquirt.info/
I'd considered it, but I want to understand FI very well, and what better way to understand than by building your own? Plus, I want it to be completely open-source (so I can tinker with settings), and cheap. XD

martianent:
Trust me when I say that

  1. Those fuel injectors weren't designed for a TBI application, which uses higher-impedance injectors, and
    Yes, not designed for TBI; however, they're what's available. In very large quantity. My understanding is that impedance (low or high) is dictated by the setup, which we are currently creating.

  2. That relay you linked to isn't going to work.
    You do realize that it's an SSR, correct?

The fuel injection pulse width is in the millisecond range for TBI. Agreed. So, you're going to be switching that relay on and off hundreds of times per second. Leaving 2 problems, 1, it's going to burn out pretty quick (SSR, doesn't "burn out" unless you have an improperly rated one), and 2, you're going to create issues with the collapsing of the relay's field coil that many times per second (electromagnetic interference)(Again, SSR, no coil). Relays ALWAYS go on the power side of a circuit(Could you explain what you mean by "power side of a circuit" a bit? I'm not sure I follow.) and, if they're controlled by a computer, are driven by a transistor switch(SSR, actually a diode on the internals, well under the Arduino's max safe output rating), which can both handle the relay coil's current AND the rapid switching. The fuel injectors are also always driven by a transistor(consider the SSR to be a flashing LED, and nothing more. When the LED is on, the injector fires.), be it an early TBI system from the 70s or a modern SFI system in a Cadillac.

Please correct me if I'm wrong. I'm new to Solid State Relays.