Speed of an Arduino (Uno) for fuel injection system

Hello all

I searched around for this, but without finding the needed information. The question is pretty easy, to get to the answer maybe less :) [u]Context information:[/u] So I am working on a fuel injection moped engine (search for 'honda monkey engine' for an image). It's a very basic engine, it has electronic (CDI) ignition and a carburettor. But it's a modified drag race engine -yes those races excist :)- but I am willing to updrage my engine. There will be a NOS injection system and maybe super charged. But this is barely possible with a carburettor due to extra fuel needed for the NOS and a carburettor works only with negative pressure while the charger gives positive pressure... So an electronic injection system is the only option. [u]Input:[/u] I want to start to get the injection system up and running. The input I can gather from the engine are: - Crank position; I-0 when the flywheel passes the pick up. - Throttle position; simple potmeter. - Lamba sensor; voltage value between 200mV and 800mV (Air/fuel ratio) - Engine temperature

[u]Output:[/u] - Fuel injector; opens a small valve for x.ms long depending on the throttle position, lambda sensor and engine temp.

[u]Question:[/u] Is an Arduino board suitable for controlling and processing all those information when the engine speed goes up to 16.000rpm? It's a 4-stroke, so I will have 16.000 pulses/minute from the flywheel pick up, and need to give minimum 8000 pulses/minute to the injector. I have an arduino Uno for the moment, but I am not sure if I could use it.

Many thanks!

16000 pulses/min = 266 pulses/sec which is not really a difficult task for an Arduino. I also guess that opening the injector valve for several ms is much too long but your Arduino will give you a much higher resolution.

So the speed is almost surely more than acceptable, at least if you don't have other limitations (I'm not a motor expert). I guess the car ECUs are in the same performance range as an Arduino is.

I don't see any fundamental reason why you couldn't get something working with an Arduino, although you're going to have to be very careful about memory use and if you're using a toothed wheel input then just dealing with that is going to use up a substantial part of your CPU.

Changing to EFI is quite a lot of work and unless you want to do it for the sake of doing it, you need to decide whether it's actually worth the time and effort. Superchargers can be used with carbs, either using a suck-through carb or a blow-through carb which has been sealed and has a float chamber under boost pressure.

The hardware cost of something like a MegaSquirt would only be a small part of the cost of migrating to EFI and would give you a much better platform, along with an open source software implementation and tuning software, and easy solutions for the various rugged I/O driver circuits you're going to need. I'm reasonably sure you could get something working based on an Arduino, but that would not be my preferred approach.

Thanks for the moderator to replace my topic to the correct subforum! And thank you both for the reply. I'm going to use my arduino uno to test the basics, and see if that works out. Would there be a way to easily find out if the arduino can "read" and "write" the sensors fast enough?

It is not like a toothed wheel input, more like a small pin on the flywheel that closes a switch when passing in front of the pick up (due to the magnetic flywheel). So the switch closes when the flywheel is at TDC (top death center) or BDC (bottom dead center) and thus passes the pick up. You are certainly correct about the special carbs for the charger, but it's a small 50cc engine and they don't make them for such small intake valves :D

I'm also going to do some research about the mega squirt.

PeterH: I don't see any fundamental reason why you couldn't get something working with an Arduino, although you're going to have to be very careful about memory use and if you're using a toothed wheel input then just dealing with that is going to use up a substantial part of your CPU.

Changing to EFI is quite a lot of work and unless you want to do it for the sake of doing it, you need to decide whether it's actually worth the time and effort. Superchargers can be used with carbs, either using a suck-through carb or a blow-through carb which has been sealed and has a float chamber under boost pressure.

The hardware cost of something like a MegaSquirt would only be a small part of the cost of migrating to EFI and would give you a much better platform, along with an open source software implementation and tuning software, and easy solutions for the various rugged I/O driver circuits you're going to need. I'm reasonably sure you could get something working based on an Arduino, but that would not be my preferred approach.

edit: oh and for the injector timing: I would do a 3 times 5ms run in a 30ms timespan instead of just a full 15ms opening. Just to have a better mixture :)

saffe:
special carbs for the charger

It’s not normal to use special carbs, just ordinary carbs in a suck-through installation, or ordinary carbs which have been sealed and with boost applied to the float chamber in blow-throw installations.

Dear Saffe,

I have done some hobby work in automotive electronics, mainly ignition related. First of let me say its -not- an easy project, you need a lot of determination and time.

You are going to run into problems you wouldn't run into in most other environments, automotive is harsh on electronics. Lots of interferences (sparkcoil, etc), massive amounts of vibrations and heat variations.

Now that I have gotten that out of the way, let me share some things I have found out. When I started on my electronic ignition, I had big problems with accurate timing of the spark, this was mainly because of the interference my ignition coil was throwing at my hall sensor input. I solved this by using a slightly higher input voltage (make sure you power the sensor from the voltage supply and not the arduino) and some capacitors.

I am not familiar with the switch you are going to use as input, however the way I read it: if this in any way mechanically connected, you need to debounce the signal, because its going to be dirty, leaving you with a very unreliable input. I dont think its mechanical however, its probably an inductive pickup, which sends out a pulse when a magnet is passed with a certain speed. Another problem with that kind of sensor is that the signal spike moves in relation to time (as the RPMs change) and you are going to need extra circuitry to clean up the spikes, so that you get a reliable square signal (normal output is sine).

My advice is simple, use a hall sensor on the camshaft, not the crankshaft, you need to know in what stage the engine is, you cant really do that with crank triggered (might be compression or might be exhaust) sensors.

Probably not the advice you were looking for, however I'm going to say it anyway: start simpler, try and build an TCI or CDI box first, this way you only need one sensor at first (camshaft hall sensor) and it will allow you to get a good feel for the needs of an automotive design. If you can get that, you can introduce a second variable, throttle position sensor (TPS) so you can adjust the ignition timing according to a TPS percentage in combination with a RPM reading.

Hope I helped you out a bit.

Hi All

Sounds like a neat project moped drag bikes, can’t be any worse than flying weedwackers.

Anyway for those people unfamiliar with the types of carbs used on these small (50cc) engines it’s known as a diaphragm carb and is a bit like a mechanical fuel injector.

I would probably recomend using a spacer under the carb and running a fogger style nitrous nozzle with a pre-pressurized seperate fuel tank for the nitrous system. Then you could run on the “stock” carb durring non-nitrous operation.

I am also interested in using the arduino both for engine management and engine monitoring and diagnostic use. (two seperate systems)
I work in the automotive field troubleshooting ignition components and much of the available test gear has been simplified too much to track down anything but the most glarring problems.

The arduino has good speed especially with the digital I/O side (digital reads in one clock cycle). Since you just need to control switches and check for digital pulses you should be golden.

Remember that the arduino can only output small (<40ma) currents and your nitrous and fuel injectors use up to 40Amps (1000x more) so you will need power amplifiers for everything.

Recomend you debounce your mechanical breaker real good as previously posted. I like the inductive pickups more myself, much tougher than the hall switches. (Hall sensors are very sensitive to stray currents and bad grounds, first sign of a problem is a burned our hall sensor)

If you really want to have fun, put a reed valve below the carb but above the nitrous system. That will pressurize the intake and probably bust the motor but motors are cheap.

Recomend that you try to stay digital on the I/O much faster than the analog read system and well suited for the on/off sensors and solenoids you will be working with.

Good luck and keep us posted on your progress.(these editors are

any reason why you wouldn't use a megasquirt variant for this application?

if just for fun, and not for competition of any sort- then i understand.

i would look at how the megasquirt variants handle certain signals from whatever sensors you're using.

for example, gm, ford, nissan, toyota- all have different coil and injector drivers and sensor settings that need to be identified in a "universal" application. by looking at those certain settings that can be switched through on megasquirt, you can get a head start on how to get arduino to interpret the signal effectively. once you start getting into variable ignition timing control that increases or decreases away from base timing- things will get far more complicated.

it seems like megasquirt is a far more capable device for this- but I'm new to arduino so I'm just spreading my car knowledge at this point.

interested to see how it works out.

Hello, I just happened to come across your post and decided to sign up (don't know why I didn't sooner)! I just completed a fuel injected gokart using an arduino uno, and would be happy to help anyway I can! My first suggestion would be to start with a non-forced induction engine and add features as you go. Second be prepared to do a lot of preliminary testing or things can get expensive quick! What are your engine specifications... Make, Model, Modifications?

emz229:
Hello, I just happened to come across your post and decided to sign up (don’t know why I didn’t sooner)! I just completed a fuel injected gokart using an arduino uno, and would be happy to help anyway I can! My first suggestion would be to start with a non-forced induction engine and add features as you go. Second be prepared to do a lot of preliminary testing or things can get expensive quick! What are your engine specifications… Make, Model, Modifications?

Any more info on your project? I’m very interested in doing the same, I hate carbs