Jump to content
Ultimate Subaru Message Board

How do i retard spark timing on an ej without reflashing the computer or going to megasquirt?


Recommended Posts

can it be done?

 

i cant find any info on what signal (cam or crank) the computer uses to determine when to spark.   We just need some way to redneck retard the crapinator - 'driveability' isnt an issue.  Its just to avoid WOT, MAF-torching, air-filter-exploding nitrous backfires. we have the technology to modify a trigger wheel or slot the cam pulley back a few degrees, but i'm just not sure how to make it work.

 

any ideas? 

 

oh and it has to be done by friday...

 

 

*edit*  its running an OBD 1 NA legacy computer 

Edited by matts87glsedan
Link to comment
Share on other sites

IIRC the ignition timing is triggered from the crank position sensor, with the cam sensors telling the computer which TDC is TDC of #1. You could:

 

  • Delay the signal from the crank sensor to the computer (Might not be able to delay it more than a few degrees without setting a code or throwing it into limp mode, not sure what the threshhold is for the difference between TDC on the cam and TDC on the crank, but if you delayed both by the same amount it wouldn't be an issue
  • Physically move the crank/cam sensors. This would most likely only give you a degree maybe two of adjustment.

Best way to do it would be to delay the signal, although you would have to have a way to vary the delay based on engine RPM, since a 10mS delay at 700RPM is not going to equal the same number of degrees of rotation as 10mS would be at 5000 RPM

 

The knock sensors will retard the timing based on detonation, sending the computer false knock sensor spikes will delay the timing, although I'm not 100% sure how much it will delay it, the way I understand it from the descriptions in the service manuals was when the computer detects knock, it retards the timing until it no longer detects the knock.

 

The sensor triggers are off the rear of the cam and crank sprockets, and there is a bit of an indentation in the back of the crank sprocket, might be possible to bore the center of it out so that the keyway doesn't interfere, and then slice the back off, drill and slot it for adjustment, that way the ignition timing can be adjusted wihtout affecting the cam timing. You'd need to do the same to the cam sensor ring though, and the cam sensor ring at least on the phenolic pulleys (depending upon the engine, the older ones had metal pulleys) might prove difficult to slot and adjust.

Link to comment
Share on other sites

presslab

 

hmm, so messing with the cam sensor also affects the injector timing?  i think i see that in there.  thank you for posting that link, i will ponder it and hopefully it will start making some sense to me...

 

it looks to me like the crank sensor determines rpm, which dictates how much spark advance is applied ( in conjunction with the load calculated by the MAF) , and the actual triggering of the spark is done by the cam? 

 

maybe hondasucks has the right idea with delaying the signal.  what if i go further down the line, to the signal the ecu outputs to the ignitor(s)? delay that somehow? i could live with it if the delay started small and got progressively longer as the rpm's went up - within reason of course.  maybe max 10 degrees of delay ... just a random number...  

Edited by matts87glsedan
Link to comment
Share on other sites

Yes all the evidence I've seen indicates that the actual timing of the spark firing is determined by the cam sensor.

 

There are nitrous/boost retard boxes that will delay the signal, they're kind of expensive though.  There are boxes that can go on the sensor or on the output as you're thinking.

 

I know you don't want to reflash the computer, but I think in the long term full adjustment of fuel and timing is needed on any modified motor.  I have hacked a EJ22E and a EJ20G ECU and can edit the tables in RomRaider.  The hardware needed costs about $150, a daughterboard for the ECU and an EEPROM programmer.  It'll take longer than Friday to get that running, though, but it's a good alternative if you have some brains but not a lot of money.

 

http://www.ultimatesubaru.org/forum/topic/129946-frankenmotor-and-ecu-hacking/

Link to comment
Share on other sites

the crank triggers the spark,

the cam triggers the fuel.

 

I've seen this posted over and over again.  Yet nobody can show the source of this information or provide any evidence.  It's like some kind of legend from many years ago passed down from the Elders.  But maybe today is my lucky day?

Link to comment
Share on other sites

How bout this... What is the reason for wanting to retard the timing?

 

If driveability isn't an issue you can just unplug the knock sensor and it should go into "limp mode".

 

Nitrous oxide.

 

The ECU will only retard so much, around 9 degrees at maximum load.

Link to comment
Share on other sites

The stock EJ22E runs a lot of timing, 36 degrees @ 3600 RPM full load.  The most timing advance I could get out of my frankenmotor was 24 degrees on 91 octane @ 3200 RPM full load.  What that means is when I had a stock tune, the ECU would only pull 9 degrees and I would still have uncontrolled detonation because I would be 3 degrees too far advanced.  And the way the ECU pulls timing, it only does it in the high load cells.  That means at lower loads there would be way too much timing and a ton of pinging.  Of course with nitrous it would only be used at full load.

 

I'm not sure how much retard is needed for nitrous, but I suspect 9 degrees isn't enough.  Also I suspect Matt is running an EJ25 block on an OBD-I EJ22E ECU, so there's probably too much timing even without nitrous.

Link to comment
Share on other sites

man, so much goin on here, thanks for all the replies...

 

 

I know you don't want to reflash the computer, but I think in the long term full adjustment of fuel and timing is needed on any modified motor.  I have hacked a EJ22E and a EJ20G ECU and can edit the tables in RomRaider.  The hardware needed costs about $150, a daughterboard for the ECU and an EEPROM programmer.  It'll take longer than Friday to get that running, though, but it's a good alternative if you have some brains but not a lot of money.

 

 

damn, i didnt realise this had been done - if i had known 2 months ago that you had figured this out i might have attempted it.  probably still will try it this fall when the pressure is off.. 

 

 

 
If driveability isn't an issue you can just unplug the knock sensor and it should go into "limp mode". 

 

do you know off hand what 'limp' timing is?  and does it even apply since this is an early 90's computer?  

 

 

 well, if you unplug the crank sensor you do not get spark.if you unplug the cm sensor you do not get fuel.unplug the cam sensor, spray in some starting ether, and it should run for a few seconds.

 


 

i will test this at ivans this week.  john, you should read that 'scope link, it may change your mind. 

 

 

 
I'm not sure how much retard is needed for nitrous, but I suspect 9 degrees isn't enough.  Also I suspect Matt is running an EJ25 block on an OBD-I EJ22E ECU, so there's probably too much timing even without nitrous.

 

Correct about the block and heads combo. but the new rods are shorter, so we have a reduced compression ratio of an unknown amount. 

 

unfortunately, i have no idea how much retard we need either.  but i will say that the knock sensor does not do the full job when you run 10lbs of boost and anywhere from 30 to 50 hp/cylinder of nitrous at WOT.  Even last weekend when we ran no turbo (heavy heavy loads though), the best we could do was run a 70 shot (17.5hp/cyl) without having bad nitrous pops out the intake. 

 

but the sanity (or insanity) of the crapinator isnt a rabbit hole i want to go down right now... all i'm hoping for is a way to pull timing for the race this weekend... 

 

your 'scope link shows a base timing of 10 DBTDC , is there a way we could lock the car at that, and test it? it sounds waay retarded, but with enough boost and nos, it might work. 

Link to comment
Share on other sites

but the sanity (or insanity) of the crapinator isnt a rabbit hole i want to go down right now... all i'm hoping for is a way to pull timing for the race this weekend... 

 

your 'scope link shows a base timing of 10 DBTDC , is there a way we could lock the car at that, and test it? it sounds waay retarded, but with enough boost and nos, it might work.

10 degrees is the timing at idle. I can't think of a way to keep the timing at 10 degrees without ruining the fueling.

 

You have EJ22E heads? How about pull the cam plug and stick on a Ford Escort distributor?

Link to comment
Share on other sites

My bad, i misremebered what the current motor is - they are EJ251 heads on what i think is a 25D block.  

 

i used to always think of that (the distributor mod) as going 'backwards' but now it seems like a good idea, has it been done on these heads before? i'll have to go search now... 

 

*edit for clarity*

Edited by matts87glsedan
Link to comment
Share on other sites

i found a description of a signal delay circuit... but it makes a delay in nanoseconds...  they do however give the formula for calculating the time delay based on what resistor and capacitor are used.  I wonder if a variable resistor was used, could you turn the delay up and down?

 

link to the description:

http://electronicdesign.com/analog/accurate-analog-delay-circuit

 

 

figure_01.gif

 

i have very minimal electronics understanding, but its a hobby i've been trying to teach myself... this looks pretty simple - but would it work on the ecu output to the ignitor?  

Link to comment
Share on other sites

It has been a few decades since I played with such stuff (analog), but I suspect that the signal would get distorted, possible enough that the ECU would no longer accept it.

 

Unless you want to go the route of a fully configurable ECU, your best bet might be to use an off-the-shelf microcontroller.  One possible methodology would be to run each sensor signal into an analog-to-digital converter (ADC) input, sample the resultant digital value and store it, and then after a program/user controlled time interval, feed the samples into a digital-to-analog Converter (DAC) to restore the analog waveform and feed that to the ECU.  If you do it on both crank and cam sensors, and the sampling rate is high enough to not distort the waveform too much, the ECU will not know the difference.

 

Once the sensor signal is sampled, the delay/retard value can be set in many different and combinable ways.

 

The basic hardware is cheap and readily available.

Link to comment
Share on other sites

i have very minimal electronics understanding, but its a hobby i've been trying to teach myself... this looks pretty simple - but would it work on the ecu output to the ignitor?

It would be fiddly and would affect the dwell, but it might work good enough. You'll want to make sure the op-amp you use has sufficient voltage range, like a LM324; tie the power rails to +12 and GND with a 0.1uF and 10uF cap for decoupling. It should have enough current drive for the ignitor, but be sure to put a limiting resistor on the output, say a 2.2k ohm. The resistor and capacitor you use forms a time constant, tau = R * C. A really rough calculation would be to set tau to half your delay required, and then pick a reasonable value for R like 10k ohms. A 10ms delay example: 10ms / 2 = 10k * C --> C = 0.005 / 10,000 --> C = 0.5 uF. Also Rg and Rf should be larger, like 2.2k.

 

You'll need two of these circuits, one for each coilpack. The LM324 has 4 opamps per package, tie the unused inputs to GND.

Link to comment
Share on other sites

Ah... I had assumed that the delay would be on the position signal side, not on the coil-drive side.

 

Edit: After some reflection, I think that the ECU would not like having its coil feedback disrupted.  I imagine that it will throw codes saying that all of the plugs are misfiring.

Edited by NorthWet
Link to comment
Share on other sites

It would be fiddly and would affect the dwell, but it might work good enough. You'll want to make sure the op-amp you use has sufficient voltage range, like a LM324; tie the power rails to +12 and GND with a 0.1uF and 10uF cap for decoupling. It should have enough current drive for the ignitor, but be sure to put a limiting resistor on the output, say a 2.2k ohm. The resistor and capacitor you use forms a time constant, tau = R * C. A really rough calculation would be to set tau to half your delay required, and then pick a reasonable value for R like 10k ohms. A 10ms delay example: 10ms / 2 = 10k * C --> C = 0.005 / 10,000 --> C = 0.5 uF. Also Rg and Rf should be larger, like 2.2k.

 

You'll need two of these circuits, one for each coilpack. The LM324 has 4 opamps per package, tie the unused inputs to GND.

 

Best answer ever... thank you for explaining this.  now i need some components...

 

so i need to determine how many degrees of delay i get per millisecond, at a chosen rpm... then build the circuit for that # .  

 

I also need to determine what kind of signal is being output by the ecu.  or should i go past the ignitor as well, and delay the signal right in front of the coils?  and consequently figure out that signal instead.

 

since i need two individual circuits, i guess i shouldnt try to make them variable, since id probably never get them set the same.

 

 

Ah... I had assumed that the delay would be on the position signal side, not on the coil-drive side.

 

Edit: After some reflection, I think that the ECU would not like having its coil feedback disrupted.  I imagine that it will throw codes saying that all of the plugs are misfiring.

 

hopefully the older ecu is dumb enough that it will keep everything else functioning even if its angry about the coil feedback. unless of course its used to control other things - that might be a problem. 

Link to comment
Share on other sites

I also need to determine what kind of signal is being output by the ecu.  or should i go past the ignitor as well, and delay the signal right in front of the coils?  and consequently figure out that signal instead.

 

The ignitor is the power transistor for the coils, no need to reinvent that. Here is a typical schematic of the coil circuit.

 

igntion-system-schematic.gif

hopefully the older ecu is dumb enough that it will keep everything else functioning even if its angry about the coil feedback. unless of course its used to control other things - that might be a problem.

 

I don't think it will complain, there should be enough loading with your circuit to fool it. The OBD-I ECUs don't have any kind of misfire detection.

Link to comment
Share on other sites

so lets say target rpm is 5000, target retard is 6 degrees (just for calculations sake)

 

5000 / 60 = 83.333 rev per second

 

360 degrees x 83.333 = 29,999.999 deg / second (im going with 30 000)

 

30 000 / 1000 = 30 degrees / millisecond

 

so .1 millisecond = 3 degrees

 

therefore delay should be .2 milliseconds ( i dont know the proper unit to state that with.)

 

make sense? thats much smaller than i was guessing.

 

At 3000 rpm, the retard would be 3.6 degrees.

 

so in reality the delay should probably be somewhere between .1 and .2 milliseconds

Link to comment
Share on other sites

The engine is a 2.51 with 2.5 turbo rods has reground cams but block height and head height is stock for ej2.51 but a.m unshure if the 2.2 mangment and 2.51 management is same distance between the cam / crank senser as the 2.2 so mabee is a difference there. Have tryed the 2.2 turbo mangment but was unreliabble and cut out at any boost over 8 psi and add nos total shutdown to mutch turbo ecu controls.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...