Engine Starting Logic

For discussing and developing different RPM/Position decoders using our superior modular architecture! One thread per pattern, please.
Post Reply
User avatar
AbeFM
Post Whore!
Posts: 629
Joined: Sat Feb 16, 2008 12:11 am
Location: Sunny San Diego
Contact:

Engine Starting Logic

Post by AbeFM »

One of the worst parts since my conversion to an aftermarket ECU is the fact I have to run the starter for 5-10 seconds to get the motor to start. It's not hard starting, in starts way better than the OEM unit ever did. But it sits and watches the engine going around and around for no reason, then eventually throws a spark and BINGO! instant start, leaving you wondering why you had to hold the key so long. And god forbid your car should stall at a stop light, you'll be getting honked at before it runs again.

To give a little more background, I've used a JimStim on it's lowest setting (~45-50 rpm) to monitor the response of the MS-II - the MS-II sees crank pulse, cam pulse, 4 crank pulses, 2 cam, 4 more cranks, then another cam, and somewhere around there or the next crank pulse, it decides to fire.

This is totally illogical, especially on a bank fired motor. But even on a regular one, it's no big deal to run banked for a short time.

To steal some text from the MS-efi forums:
Playing the other side of the fence for a moment (I'll use the 99+ Miata as an example, I feel it's representative and I'm familiar with it) which works like so:
The crank has four teeth, two marks some distance before TDC, and two are just somewhere in between.
The cam had three teeth, a single at TDC cyl1 firing, and a doublet at TDC cyl 2 firing. Not exactly, but this is close enough.

To my simplistic view, two things will tell you where you are. Either
1) You see a signal on the cam sensor. You know you are near TDC on cyl 1 or 4
2) You see three pulses on the crank. You know you are a few degrees before TDC.

On a bank fired motor you can fire the ignition on coil pack A shortly after condition 2. You will have passed TDC, and even if you are a little retarded, the extra kick will get the motor going faster. For condition one, you likely can fire coil A by the same logic.

You could make the argument that you need to let that opportunity go by (though I don't think I would agree), but at most, two crank teeth later, you could fire the coil.

This should work for any bank fired motor. A missing tooth could be fired after only a few teeth to establish a time base and then a miss.

My only guess is that this is a noise rejection scheme, or to maintain compatibility for non-bank fire cars. Of course, nothing would keep you from firing pairs of coils until you achieve sync on a dedicated coil motor.

So, now that I've laid out the simple version, someone explain to me why it's a bad idea. The theory, while simplistic, seems workable to me.

....

Anyway, my real question is why not fire first, sync later? Is there a hole in my earlier logic? It would still be "cranking" and "unsynchronized", only it would fire the plugs.

I agree with this as written above - that you should define a state (which, for some engines you might not use!) where you know where TDC is, and/or you know what revolution you are on, and act appropriately. It'd be a "fast start" mode, where you don't need to be SURE you're firing at the right time, truely any spark after TDC can only help. So you bank fire the plugs and injectors as soon as you see the first pulse of any sort following a TDC pulse. If you wanted to push it you could do more guess work to figure other things out (more than half the crank pulses without a cam pulse means the second bank might be ready to fire), but all in all there's a lot of room for improvement.

And suggestions. Please do so!
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: Engine Starting Logic

Post by Fred »

If you have a look in the engine position/RPM interpretation thread you will see that I intend to have various flags as output.

There will be a flag that signifies that we have full sync with the engine and can enter fully sequential/COP mode, another that signifies that we have crank angle information for semi/wasted mode, and a third that signifies "rpm valid" to aid in early fueling (though this will need to be used with caution as excessive fuel dropped without ignition could create some massive explosions in the exhaust).

Along with the flags will be the data, ie, suspected rpm, suspected crank angle, and suspected phase. The code should be so generic that it doesn't care about what data is available, it will make the most of it.

I think you need to put a detailed post in the trigger requests thread about what exactly the miata triggers consist of.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
Post Reply