Fuel Injection Project

Fuel Injecting a single cylinder engine

My colleague Jeff and I had the idea to take a single cylinder generator engine and add fuel injection. The engine had a plastic spacer between the carburetor and the head so Jeff installed a port in it to receive an automotive fuel injector. He left the carburetor in place so that we could use the throttle plate to contol the speed. I wrote and downloaded a Basic program onto a pic micro-controller to control the on-time of the injector. The output of the pic chip controls the base of a TIP 120 Darlington transistor. I wrote a Python GUI to interact with the pic controller and send different pulse width commands to the running engine. I used pySerial for the serial interface. It is a simple and nice module to work with. I needed to be able to change the pulse width on a running engine. My goal was to determine the best pulse width for different operating conditions.
Now that the optimum pulse width has been determined (fuel mapping) with my injector program, I will build a control module using a 555 timer. The engine will be used for demonstration purposes with a fixed speed and no load.
Another option would be to use the coil control wire to determine rpm and modify the program to open the injector based on rpm. Load could be accounted for by reading Manifold Absolute Pressure. This input would be used to increase the pulse width.


Software and Setup

I have included some snapshots of the software and setup. This allowed me to select different injector pulse widths on the fly so I could set up the fuel mapping.

Hardware

I made this soldered board to invert the signal from the usb port to the pic chip.



The Code

I also have a sample of the python code used for the injector program.

USB to prototype board

This is what I used to hook up the computer to the working injector



Videos of operation

Here is a video of the small engine in operation. I have a small gas tank and electric pump supplying fuel to the injector. The injector is being controlled by the pic micro-controller and you can see the Python injector program is up on the laptop. This program controls the on-time of the injector by communicating through the USB cable and my interface. You can hear it is a little rich, so I will take the fuel back a bit when I make the controller.




After using the program that I wrote to determine what the fuel mapping should be, the next step was to use a 555 timer in astable mode. I set the frequency and pulse width of the injector to match what worked the best from the program. Now I will construct a soldered microcontroller in a project box to be used as the stand alone controller for the injector. Here is a video of the engine running with a 555 timer controlling the injector.