Go Back   EcoModder Forum > EcoModding > Instrumentation > OpenGauge / MPGuino FE computer
Register
Now


Reply
 
Submit Tools LinkBack Thread Tools
Old 08-04-2008, 08:30 AM   #1 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
high voltage injectors (HDi diesel)

I'm very interested in building one of these.

My car has a Peugeot/Citroen HDi engine. The injectors open at 70V, way above a conventional petrol injector. What additional circuit could I add to a) not interfere with the car and b) not fry the MPGuino's microprocessor!

Would a simple "potential divider" do the trick with suitable resistor values?

What voltage does the MPGuino want to see on the injector connection?

70V---
I
R
I
-----------MPGuino
I
R
I
----------GND

There is some introductory info on the engine at
autospeed.com/cms/A_109357/article.html
for those interested.

Thanks in advance,
Simon

PS Just realised that as my injection pressure can vary from 200 to 1350 bar (that's 1350bar) then I need to add this into the equation. I have a fuel pressure sensor. How hard would it be to add in another variable?


(Support Ecomodder.com & get rid of these annoying ads!)      
 

Last edited by ecoxantia; 08-28-2008 at 05:23 AM. Reason: PS
  Reply With Quote
Old 08-04-2008, 09:42 AM   #2 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
It will probably work as is. You are looking at 0.7 milliamps (tiny) with the standard 100k resistor on the mpguino schematic. The processors are pretty cheap ($4.00) so don't over engineer it too much, except to make the processor replaceable


re: fuel pressure, do you know what causes it to change? The other variable pressure schemes I've seen were to keep the pressure drop across the injector consistent and thus did not need accounting for.

Last edited by dcb; 08-04-2008 at 09:49 AM.
  Reply With Quote
Old 08-04-2008, 10:32 AM   #3 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
Thanks.

regarding fuel pressure, as I understand it the high pressure is there to enable pre-injection, for knock reduction; high atomisation and so efficient burn.

Of course generating such pressures takes power and this engine is aimed at economy- so the pump has an ECU- switchable extra piston for high pressure. So the fuel pressure isn't just engine speed dependent, the ECU will drop it at low loads.

I'll try the circuit as-is to start with.
  Reply With Quote
Old 08-04-2008, 10:40 PM   #4 (permalink)
SuperMID designer
 
Yoshi's Avatar
 
Join Date: Mar 2008
Location: Yokohama, JAPAN
Posts: 35
More importantly, there are three injections per single combustion cycle.
  • pre-injection
  • main injection
  • post injection
The current MPGuino program can't measure these pulses accurately.

Yoshi
  Reply With Quote
Old 08-04-2008, 11:44 PM   #5 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
Thanks Yoshi, that's a tricky pattern.

Sorry eco, didn't notice the link the first time: http://autospeed.com/cms/A_109357/article.html
"Pre-injection is designed to reduce combustion noise, and involves the injecting of a very small quantity of fuel (less than 1 milligram) prior to the main injection. This early injection allows the gradual increase in the temperature of the combustion chamber, slowing down spontaneous flame-spread and reducing the amount of fuel burned at the beginning of combustion. This reduces idle noise output by over 3dB. Pre-injection occurs only if the engine speed is less than 3200 rpm.

The start and duration of the main injection depends on the amount of load and whether or not a pre-injection process has already occurred. Main injection is cut if the engine exceeds maximum speed, or if there is insufficient fuel pressure in the injector rail (ie less than 120 Bar).

Finally post-injection can occur in engines equipped with a cat converter - presumably to quickly bring the cat up to operating temperature."

So it may work, it depends on the duration of that initial squirt. Sounds like it would work if you only drive above 3200rpm with a hot cat I won't be able to sort it out for you entirely, but of course you are welcome to do whatever you need to to the code. You *might* need to tap into the crankshaft position sensor to determine if the last pulse was a pre-ignition or what.

Last edited by dcb; 08-04-2008 at 11:55 PM.
  Reply With Quote
Old 08-05-2008, 02:20 AM   #6 (permalink)
SuperMID designer
 
Yoshi's Avatar
 
Join Date: Mar 2008
Location: Yokohama, JAPAN
Posts: 35
Quote:
Originally Posted by dcb View Post
So it may work, it depends on the duration of that initial squirt.
Do you have any clue how much the "Injector DelayuS" value would be?

add note:
The MPGuino program assumes the fuel pressure is constant thus the fuel usage is proportional to the injector ON time.
The article says...
Quote:
Unlike a petrol injection engine where fuel pressure is held a constant headroom above intake manifold pressure, in the HDi engine, fuel pressure varies with engine speed. Thus, at idle quite long injector opening times are used, because the lower fuel pressure means that there is less flow for a given pulse width. At higher engine speeds the time available to inject the fuel is less and so the injector opening times must be shorter. To squeeze the greater amount of required fuel through the injectors, the fuel pressure must be high. In fact, the 3D fuel map of the ECU uses these axes: fuel pressure, engine speed and fuel flow. In addition, other 3D ECU maps exist for the:
(snip)
I believe we have to have a kind of "3D fuel map" inside of the program to see an accurate fuel usage.

Yoshi

Last edited by Yoshi; 08-05-2008 at 02:41 AM.
  Reply With Quote
Old 08-05-2008, 06:54 AM   #7 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
3D maps certainly are used by the CPU, see
http://www.christiantena.pwp.blueyon...operation.html

It seems to me that to use the MPGuino on this engine there are too many variables to make it work - I think an OBD approach might make more sense.

Simon
  Reply With Quote
Old 08-05-2008, 10:14 AM   #8 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
Quote:
Originally Posted by Yoshi View Post
Do you have any clue how much the "Injector DelayuS" value would be?
No clue, I'm guessing it is a small amount of time. But I never even contemplated HDI till yesterday, have not hunted down injector specs, and don't know how long it takes to squirt out a milligram at unknown pressure at unknown flow rate. That's a measure it and see problem IMHO.

Quote:
Originally Posted by ecoxantia View Post
It seems to me that to use the MPGuino on this engine there are too many variables to make it work
The atmega in the mpguino is most certainly capable of performing accurate fuel consumption monitoring on an HDI with the right programming strategy. It may come back to monitoring the fuel pressure like you said, and applying that and the injector open time to a 2d map formula. It isn't that there are too many variables though, technically speaking.

But it might not be a very practical exercise if a $160 scangauge will tell you what you want to know. You would have to really want the additional precision an injection monitor can provide to go through the effort.
  Reply With Quote
Old 08-05-2008, 02:57 PM   #9 (permalink)
EcoModder
 
Join Date: Jul 2008
Location: Harvest, Alabama
Posts: 114

Suzi - '94 Swift GA
90 day: 48.55 mpg (US)

'01 Sentra - '01 Sentra
90 day: 33.53 mpg (US)
You could also build some sort of flow meter that you put in the fuel line. I know the guys that are doing the "pre-fuel injection" stuff have been looking at a solution doing something like that. The nice thing is that if you can get a flow meter, it should work on any vehicle, and you wouldn't have all the complexities. It may not be as accurate, but it would be doable in the short term.
  Reply With Quote
Old 08-05-2008, 05:59 PM   #10 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
Thanks for all these replies, its a great forum.

The flowmeter probably wouldn't be viable - as most of the fuel is in fact returned to the tank! I guess 2 flowmeters might...

Good to hear that you reckon it could be made to work, dcb. Time for me to look at some code I think.

BTW the scangaugeII won't work according to the european distributors. As I understand it, the CPU is only partly EOBD compliant. It's a "Bosch special". In Europe, only 2004-on diesels have had to be OBDII compliant.

Simon
  Reply With Quote
Old 08-07-2008, 10:55 AM   #11 (permalink)
EcoModder
 
Join Date: Jul 2008
Location: Harvest, Alabama
Posts: 114

Suzi - '94 Swift GA
90 day: 48.55 mpg (US)

'01 Sentra - '01 Sentra
90 day: 33.53 mpg (US)
3D mapping

You can make 3D maps in code pretty easily (it's time consuming, but easy enough). You first have to have something to base your graphs on, like LOTS of data points. I attached a picture of a graph that I have done. I would give the code, but it was done for work, and i don't think it's exactly the kind of stuff we can release, but the picture should be fine. This graph took nearly 100 lines of code to get in place, and that doesn't include the skipped lines and the lines for comments. As you can see, quite complex, but this is a 3D curve with some pretty incredible fidelity, all originating from an old scanned image. If you could get me data points, or if you could get me a picture of the graph with actual numbers somewhere, I could produce you a series of curves in the same manner that I produced this curve (in code form even), and you would be responsible for getting it into the Arduino program (since I really haven't dealt with that before).
Attached Images
File Type: jpg Bruhn_Graph_1.jpg (93.0 KB, 7 views)
  Reply With Quote
Old 08-27-2008, 06:35 PM   #12 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
OK, so I've got my MPGuino working! It's a freeduino-based version.

After many attempts I think I now have the right connections for speed and injector.

I set the speed pulses to 16000 to get a correct mph. For the injector calibration I set it to a very large number, for now.

At a steady speed it displays a believable mpg. However if I accelerate mpg goes very high, and if I idle mpg drops. I reckon this is because the injection pressure is varying so much. So around town it's of limited use as it stands, but most of my miles are on open roads so we shall see!

This is the signal that the mpguino sees for the injector. Sign is reversed; positive on the scope was connected to ground on the arduino. Is this going to be OK,given that it does not return to zero volts, and there are effectively 2 "leading edges" per injection?

2.0HDi injector pulse at about 1900rpm (after 100k resistor)

Last edited by ecoxantia; 08-28-2008 at 05:15 AM.
  Reply With Quote
Old 08-27-2008, 09:46 PM   #13 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
That is sweet!!!

Question, does the spacing of the main pulses vary with rpm? The fuel pressure is supposedly RPM dependent, so you might be able to do it all in software from this point.

Edit: Let me change that, the pulse spacing had better change with RPM This ain't TBI.

Last edited by dcb; 08-27-2008 at 10:03 PM.
  Reply With Quote
Old 08-27-2008, 10:51 PM   #14 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
I recon, one of the next tasks is to figure out the PSI to RPM Map. I don't suppose you have a 20,000 PSI pressure gauge? No? Ok, for now lets assume that 200 BAR is at idle, and 1350 BAR is redline, and that it is just a linear function.

I think the next step might be to figure out the RPM from the injector pulse, then figure out a "pressure multiplier" (linear function based on RPM) to combine with the usPerGallon figure, and I think you will be in the ballpark.
  Reply With Quote
Old 08-28-2008, 05:14 AM   #15 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
Thanks dcb.


This is the injectors at idle, 800rpm.
The picture in my previous post is at about 1900rpm.

So yes, you can see spacing varying with rpm.

The system does have a fuel pressure gauge! From the data I have it looks useful too - 0.5 volts at 100bar, 1.3 volts at 300 bar and assuming it's linear then 5 volts is about 1300bar, corresponding to max pressure.

I think this is the best solution since pressure is not quite linear with rpm, as there is a switchable 3rd piston in the injection pump. This is the "high presssure" piston. The idea is to only use highest pressures when necessary, so this 3rd piston is switched off in certain conditions. You can see why - 1300 bar don't come for free!!

So, next step - get the Arduino to grab the pressure. I have not even looked at the code so that's next...I seem to remember the memory is pretty full already, no?
  Reply With Quote
Old 08-28-2008, 07:17 AM   #16 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
Oh, a gauge, ok Can you confirm the voltage range of the pressure sensor @ 1350, and the correlation of voltage to displayed pressure?

It is just an analogRead to convert a 5 volt signal to a value from 0 to 1023. Recommend Analog Pin 2.

At the top of the loop, for a quick test anyway, you can do an

int press = analogRead(2) + 1;

then multiply the instant.injectorHiUS by press after copying it from temp but before updating the other trips.

Fudge microSecondsPerGallon to taste.

press *might* need an offset and a scaling factor, don't know yet.
  Reply With Quote
Old 08-28-2008, 01:48 PM   #17 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
According to some literature I've read (which was wrong on the connections for Vss but it's the best I have!!); yes it's a 0 to 5V signal, from a strain gage based sender. So that's good news.

Thanks a lot for the coding tips.

Do I need a resistor and diode in the circuit like the Vss and injector? I'd have thought as this is taking an analog value, it's unnecessary. Presumably the input impedance of the Arduino is high so I should not upset the voltage the car's ECU sees.

I'll try and implement! This is a lot of fun...
  Reply With Quote
Old 08-29-2008, 07:47 AM   #18 (permalink)
EcoModding Lurker
 
Join Date: Aug 2008
Location: UK
Posts: 44

EcoXantia - '99 Xantia HDi LX
90 day: 46.14 mpg (US)
So I've got the pressure input on pin2, and modified the code.

It doesn't work well! Instant mpg is zero, current is 999. What have I done wrong? CPU is at 500%...

This is part of the modified code, I've added 2 lines.
--------------------------------------------------------
#define looptime 1000000ul/loopsPerSecond //1/2 second
void loop (void){
if(newRun !=1)
initGuino();//go through the initialization screen
unsigned long lastActivity =microSeconds();
unsigned long tankHold; //state at point of last activity
while(true){
unsigned long loopStart=microSeconds();
int press = analogRead(2) + 1; //press is common rail pressure approx in bars
instant.reset(); //clear instant
cli();
instant.update(tmpTrip); //"copy" of tmpTrip in instant now
tmpTrip.reset(); //reset tmpTrip first so we don't lose too many interrupts
sei();

instant.injHius = press * instant.injHius; //correct injector for pressure variation
  Reply With Quote
Old 08-29-2008, 08:48 AM   #19 (permalink)
Master EcoModder
 
wagonman76's Avatar
 
Join Date: Jun 2008
Location: Northwest Lower Michigan
Posts: 377

Red Car - '89 Celebrity CL 4 door
90 day: 34.81 mpg (US)

Winter Wagon - '89 6000 LE Wagon
90 day: 26.47 mpg (US)
Did you possibly get the VSS and INJ wires switched around? I did even after checking quite a few times. Others have too, seems like a common mistake.
__________________

  Reply With Quote
Old 08-29-2008, 08:59 AM   #20 (permalink)
dcb
Master EcoModder
 
dcb's Avatar
 
Join Date: Feb 2008
Location: 3rd rock
Posts: 1,313

pimp mobile - '81 gs 250 t
90 day: 96.29 mpg (US)
Can you declare press in global scope (right before loop) and modify:
void doDisplayInstantCurrent(){displayTripCombo('I','M' ,instant.mpg(),'S',instantmph(),'C','M',current.mp g(),'D',current.miles());}

to
void doDisplayInstantCurrent(){displayTripCombo('I','M' ,instant.mpg(),'S',instantmph(),'C','X',press,'D', current.miles());}


and see what you are getting for press in the lower left corner?
  Reply With Quote
Reply

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
Mopar to offer Diesel Swap kit for Wranglers Red EcoModding Central 5 03-10-2008 03:35 AM
Video: first high voltage power up: Mazda RX-7 with homebrew controller MetroMPG Fossil Fuel Free 1 02-10-2008 11:17 PM
D15Z1 injectors? StorminMatt EcoModding Central 4 02-08-2008 07:46 PM
Better injectors for better FE tasdrouille EcoModding Central 6 01-31-2008 06:29 PM
VX Info...WARNING: lots of info! TomO Off-Topic Tech 0 11-14-2007 04:57 PM




Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0 RC5
All content copyright EcoModder.com