Injector resistance measure

Hi to all. I am building an injector tester machine for 4 petrol injectors. I am still in development of code, based on mega2560 and 1.55inch OLED and some pots and swiches. I can not post code or shematic now because its pretty messed and not finished. Main functions are all working, but i wanted to add function to measure resistance of all 4 injector independently before testing them, and display it on oled. Injectors goes from 3 to 20 ohm.
I tried with analog inputs and LM317 but can't get satisfied and accurate results.

Once finished project will be public, for now i have few more things to finish (pump, valves for drain of measure glass.....)

If anyone have idea how to measure resistance it would be great. I dont need help with code, but with hardware/circuit. I can add relays for swiching between driving and mesauring for all 4 injectors so measuring circuit would be disconnected from output. Thanks

You can use a current source to pass a fixed, know current through the injector and measure the voltage across it. Ohm's law will tell you the resistance.

And use the internal reference for the voltage measurement . The injectors probably have significant inductance so give them time to settle .

Is the resistance liable to change or would it be enough that the coil is continuous ?

PerryBebbington:
You can use a current source to pass a fixed, know current through the injector and measure the voltage across it. Ohm’s law will tell you the resistance.

Thanks for replay. Ok i can make separate power source, can i use a two analog inputs as a probes and ‘measure’ diference voltage between them and than calculate resistance?

hammy:
And use the internal reference for the voltage measurement . The injectors probably have significant inductance so give them time to settle .

Is the resistance liable to change or would it be enough that the coil is continuous ?

I need to know resistance value. First for checking all 4 injectors similarities, and Second to set driving curent limiter based on resistance, for example a 16ohm injector can be driving directly on 12V but 3ohm injector will take too much curent and it can burn down (thay are driven with PWM on car and some older car uses big resistor)

savke989:
Thanks for replay. Ok i can make separate power source, can i use a two analogue inputs as a probes and 'measure' diference voltage between them and than calculate resistance?

You need a current source, so some well regulated voltage and a resistor in series with the injector. Use and analogue input to measure the voltage at the junction of the resistor and the injector. No, you can't use 2 analogue inputs, measure with respect to ground with one end of the injector connected to ground.

You can use an LM317 as a constant current source. This diagram shows the basic configuration; you would change the LED shown to your injector coil:

Set R1 to 6.8-ohm (a Stackpole RNMF12FAC6R80 or equivalent will do) which will give a test current of 183mA.

To power the LM317 you'll need a supply greater than 3V + 1.25V + Iref x Rinjmax; for a 20-ohm injector and an Iref of 183mA the minimum supply voltage for the LM317 would be >8V. I would use a low-power relay to switch power to the LM317.

Connect the ADJ pin of the LM317 to your A0 Arduino pin through a ~330-ohm resistor with a Schottky diode to 5V to protect the analog pin. You need that there in case there's no injector (or the injector is open circuit).

By measuring the voltage at the ADJ pin you are measuring the voltage across the injector and from that you can determine its resistance.

Steps would be something like:

  • turn on relay to power the CC source
  • allow a few mS for the LM317 current to stabilize
  • take a few ADC readings and average them
  • turn off the relay
  • compute the resistance.

Injector resistance would be:

const float fRpgm = 6.8;            //6.8-ohm programming resistor
const float fVref = 5.0;            //ADC reference voltage
const float fIref = (1.25 / Rpgm);  //LM317 current programming
const float fCountsFS = 1024.0;     //ADC maximum # counts
.
.
.

    float Rinj = (fVref * (float)Counts) / (fIref * fCountsFS);   //resistance in ohms

    Serial.print( "Injector resistance is " ); Serial.println( Rinj, 2 );

.
.
.

If you see a voltage higher than fIref x Rinjmax (so for 20-ohms, 3.68V or ~753 ADC counts) plus some margin you can say the injector is either absent or its resistance is otherwise too high.

If you see a voltage less than fIref x Rinjmin (so for 3-ohms, 551mV or ~113 ADC counts) minus some margin you can say the injector is shorted or its resistance is otherwise too low.

PerryBebbington:
You need a current source, so some well regulated voltage and a resistor in series with the injector. Use and analogue input to measure the voltage at the junction of the resistor and the injector. No, you can't use 2 analogue inputs, measure with respect to ground with one end of the injector connected to ground.

Ok, thanks for helping

Blackfin:
You can use an LM317 as a constant current source. This diagram shows the basic configuration; you would change the LED shown to your injector coil:

Set R1 to 6.8-ohm (a Stackpole RNMF12FAC6R80 or equivalent will do) which will give a test current of 183mA.

To power the LM317 you'll need a supply greater than 3V + 1.25V + Iref x Rinjmax; for a 20-ohm injector and an Iref of 183mA the minimum supply voltage for the LM317 would be >8V. I would use a low-power relay to switch power to the LM317.

Connect the ADJ pin of the LM317 to your A0 Arduino pin through a ~330-ohm resistor with a Schottky diode to 5V to protect the analog pin. You need that there in case there's no injector (or the injector is open circuit).

By measuring the voltage at the ADJ pin you are measuring the voltage across the injector and from that you can determine its resistance.

Steps would be something like:

  • turn on relay to power the CC source
  • allow a few mS for the LM317 current to stabilize
  • take a few ADC readings and average them
  • turn off the relay
  • compute the resistance.

Injector resistance would be:

const float fRpgm = 6.8;            //6.8-ohm programming resistor

const float fVref = 5.0; //ADC reference voltage
const float fIref = (1.25 / Rpgm); //LM317 current programming
const float fCountsFS = 1024.0; //ADC maximum # counts
.
.
.

float Rinj = (fVref * (float)Counts) / (fIref * fCountsFS);   //resistance in ohms

Serial.print( "Injector resistance is " ); Serial.println( Rinj, 2 );

.
.
.




If you see a voltage higher than fIref x Rinjmax (so for 20-ohms, 3.68V or ~753 ADC counts) plus some margin you can say the injector is either absent or its resistance is otherwise too high.

If you see a voltage less than fIref x Rinjmin (so for 3-ohms, 551mV or ~113 ADC counts) minus some margin you can say the injector is shorted or its resistance is otherwise too low.

Thanks for replay. I had already made a LM317 but wasn't satisfied with results, meybe i used wrong resistors. I will try your method and than post results. Thanks again for help

Some update about a project. I have tried LM317 with 10ohm resistor so curent is 125mA and it seams to work good. As someone mentioned it just need a little time to settle up, few sec. Still didnt try to read it with arduino but i get satisfied results measuring with multimeter and calculating results, i am geting under 5% error and thats perfect . There is also a trick with voltage, that i was not realised first time i tried LM317 (before making this topic). I was setting lower voltage and didnt measure curent because i had one multimeter, so injector draw about 100-110mA depending on voltage (4-5V) and there was problem when calculating i have used 125mA. Thanks everyone for ideas and helping, i was making some pause with project but now i am on it. Once finished it will be public

Actually, you don't need a constant current source, with a regulated voltage and a resistor in series you can determine the resistance, it is just not a linear relationship. Certainly not a problem for a "go/ no go" decision.

Paul__B:
Actually, you don’t need a constant current source, with a regulated voltage and a resistor in series you can determine the resistance, it is just not a linear relationship. Certainly not a problem for a “go/ no go” decision.

Tnx for replay. Actualy i have tried that metod, but it does not give good results.
First - you need to change comparator resistor for diferent resistance measure, because injector resistance goes from 3-20ohm
Second - injector is coil (inductive resistance) and if there is no curent limit it is realy hard to make measure because in some point injector starts to open depend on voltage.
Both methods are good, but in this case in practice this one gives better result. Tnx again

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.