Arduino in automotive?

I would like to begin with saying this is my first hearing of arduino and it looks like a great product a friend of mine suggested this it to me.

I would like the opinions of the professionals before i enter time and money into a arduino to see if it is at all plausible for my circumstance. what i would like to do with an arduino is take a signal from a internal combustion engine (input 1) and delay it by a fraction of a second (output 1)dependant on engine RPM (input 2). this is the simplest way of me explaining my situation.

More technical explanation for theses who are curious
what i want to do is take a injector pulse and delay it so that the injector pulses later. a Injection pulse happens once every 2 revolutions, for these of you who are familiar with a 4 stroke engine it is because fuel is add to once four piston strokes (2 revolutions) in industry it is explained like this, stroke one power stroke piston moves down after fuel has been ignited (180 degreess) stroke 2 exhaust stroke piston moves up exhaust valve opens pushing all exhaust out form cylinder (360 degrees 1 revolution) stroke 3 intake stoke intake valve open allowing new air and fuel to travel into the cylinder (540 degrees)stoke four compression stroke valves close squeezing the air and fuel to magnify the energy of the ignition (720 degrees 2 revolutions).
At the moment most modern vechicals have there injector pulse around the 420 degree area during the intake stroke. i want to take that signal and delay it till around the 700 degree area using the math below.

INPUT 1(value A)=revolutions per minute RPM
(value A)/60=revoultions per second (value B)
(value B)/(value B x value B)=1 revolution in a second (value C)
(value C)/360= 1 degree of rotation in seconds (value D)

INPUT 2(value Z)=injector pulse
constant number of my choosing=preset degree delay(value E)
(value Z)+(value D x value E)=OUTPUT 1 IS THE VALUE I WANT!!!!!!!!!

things that concern me, will arduino be able to work in that small fractions of seconds in real time (as engine is running) and will i be able to power a Arduino from a 12V A/C source without damaging it? finally these injection pulse have different (widths) as in how long the signal actually is, the equation above was just to alter the frequency of the pulse but not the length in time the signal is (or how long the injector will stay open) because that value not change.

like i mentioned this is all new to me and probably way over my head, but i want to learn the operation of an arduino if it will help me in my project.

Thank you :.

I can't speak for the suitability of an Arduino for that but I'm curious as to why you want to do it. If I understand you, you want to delay fuel injection until almost at the top of the compression stroke? Assuming it's technically possible, what advantages do you see?

Traditionally, the fuel was in the air as it's sucked in, since the carburettor relied on the air flow to drop the pressure in the venturi to get the fuel into the air. I suppose it doesn't matter where in the input/compression strokes the fuel is added to the air, as long as it's all in before ignition? But maybe it does matter.... mixing for example. If you inject fuel just before tdc on the compression stroke, will you get a good mix of the fuel into the air for a good burn?

Can the injector actually inject against that pressure by the way?

My intention is not to change the ACTUAL injector, but to retrieve a signal from it to active something else at that specific pattern.

Are you saying that you want to preserve the original frequency and duration but just phase-delay it? Is the amount of the delay a fixed time, or dependent on the signal frequency i.e. delay by a given crank angle? How is the time / angle of the delay to be defined?

Yes and the phase delay is constant when rpm is constant. But engines are always changing in rpm so there for the phase delay would change directly with that. But yes to be clear I want to preserve the duration of the signal. Refer to the equations above for determining phase delay at particular rpms

This is my attempt, obviously a lot of errors. but i am going to keep trying any input would be nice.

Thank you

int injectordelay = x;
int sensor value = 0;
int rpm = y;

void setup() {
pinMode(injectordelay, OUTPUT) ;

void loop() {

sensorVale = analogRead(injectordelay);


Hi, in the top right hand side of page is a search box. try fuel injection in it, a number of threads exist that will probably help you with your research.

Tom.... :slight_smile:

i guess what i really need to know is how to process these math functions, and which Arduino board to buy. i really need some direction.

You need to have two calculations running.

The first calculation will determine the engine speed by measuring the interval between successive changes on the input signal.

The second calculation will record when the input state change occurs and calculate when the corresponding output state change needs to occur. The engine speed will be one of the inputs to this calculation. If the input pulse duration is greater than the maximum delay needed then you can process positive and negative state changes in the same algorithm. Otherwise, you would need to apply the algorithm once for positive changes, and apply it separately for negative changes.