I'm wondering what exactly warmup enrichment is trying to achieve, and therefore how best to set the parameters.
As far as I understand it, it's more difficult to vaporise fuel when an engine is cold, therefore you need to add more than you "think" you need. (But surely this situation doesn't extend for long beyond starting - the temperature of the valves etc must rise quite quickly?)
So then, are we just aiming to run the engine a little rich until it's warm? If so, then why not have a lambda offset on the map and use feedback as soon as the sensor is active? Perhaps because it's unreliable when the exhaust is cold? Or it's easier to write the code to run in open loop with a % modifier on the base fuelling?
So are we trying to achieve a lambda that is inversely proportional to temperature, (is a linear curve OK, or should it be some kind of exponential decay or even a fixed lambda offset until the car is nearly warm, then tail it off to "normal operation"?
OK, what I have in the car works, but it isn't perfect, and I believe in the pursuit of perfection at reasonable cost...
Wow - bit late spotting this one!
You've made me realise I never did get around to writing that part of the fuelling guide (maybe I will eventually), so I'll answer your question here.
Your understanding is basically correct. When the engine is cold, the fuel does not vapourise, and in many cases actually forms droplets. These are simply too rich to burn. Therefore, we need to add excess fuel in order to end up with enough vapourised fuel to actually burn. This happens because fuel isn't simple - it comprises a number of components which vapourise at different temp/pressures. It is the volatile parts (sometimes know as the light ends) that we are actually using, and the heavier part of the fuel is effectively wasted.
In fact through the year, fuel companies continually alter the blend of fuel to vary the relative proportion of these ingredients. Therefore, samples of fuels taken across a year will have different vapour pressure's - winter being the most volatile (vapourises most easily) and summer the least voltile.
You are right that we do want to add an offset to lambda after start and control to it - however, under these conditions some of the fuel we put in just passes straight through and is 'lost' Therefore we still need to dd more fuel than we would calculate as required even at the richer measured lambda. Plus of course the sensor takes some time to become operational and accurate - but we want to be running the engine during that time. Therefore we need to get the initial open loop fuelling correct until we can trust the sensor.
Anyway, that is why we put excess fuel into the engine in the first place when its cold. Next, we need to know how to put it in.
Basically there are 3 stages to cold start enrichment. First is the crank/priming pulses. Their main purpose is create the initial fuel wall film so that subsequent injections will be used purely for combustion, though some of this pulse will also be used for the first combustions too before the engine passes the crank to run threshold.
Next is the afterstart enrichment. This is quite a large value at first but ramps out quite quickly, usually against revolution counts. This is compensating for the in cylinder temperature effects. As you can imagine, it doesn't take many combustions for the cylinder walls, valve heads etc to heat up quite a reasonable amount, even if the bulk temperature of the engine is still quite cold.
Lastly is the warmup enrichment. This is dealing with the cylinder head runner and injector temps - i.e. the the bits upstream of the inlet valve.
So the total fuelling requirement is all those added together - oon top of the normal calculated fuelling requirement.
In terms of the profile - the additional fuel at start is an exponential curve aginst decreasing temperature. So typically you'll need no additional fuel at fully warm (90C), maybe 10% extra at 60C, 50% at 40C, 100% at 20C, 500% at 0C, 1000% at -15 and 2000% at -30C - but only for the first few combustions.
The requirement then drops away very quickly (afterstart fuelling) - for example, for the 40C case, you would add 50% extra fuel for the first combustion, but by about 300cycles in (maybe 40 secomds running), you would be down to only 10% additional fuel as the cylinder walls and valves have warmed enough keep the fuel mainly as vapour once it enters the combustion chamber. The coolant temp sensor will barely have moved by this point, and you will now be running on the warmup curve, which is also an exponetial type decay as you move towards 90C.
Thats about it really. I hope that was clear, but as ususal any questions on bits I've not explained properly, ask away.