Switching between fuels
- read [Config/Table switching Help] first
- anytrim can be used to tune fuel injector pulsewidth in function of analog input (eg. based on in-tank Gasoline / ethanol ratio sensor or LPG pressure)
No matter what fuels you use, there is almost always the issue of switching between them. It might be possible to avoid it if:
- Both fuel systems are fully capable of starting and running the engine through its whole operating range.
- You plan carefully, so you never run either tank empty.
- There are no distinct advantages to either fuel that could make you want to switch on the way.
In practice, it is usually a desireable option, for any of the above reasons.
Especially with older venturi style fuel systems, "time to port" often differs between both fuel systems. Using a single point injector, nozzle or venturi, fuel has to travel down the intake manifold to reach the ports. This requires either some "overlap" (= time in which both fuel systems are active) or "dead time" (= time in which neither is enabled) when switching. For a smooth transition, timing is critical to avoid momentary leaning/flooding.
To calculate correct overlap accurately, distance-to-port difference (an estimated constant, in units of plenum/port/etc volume) and current airspeed need to be defined. I propose using a countdown, from the moment the driver flips the switch. The counter will be preset to a certain value, determined by distance-to-port. Then decrement this counter every time fuel is injected by an amount proportional to the amount of fuel injected, using that as an estimate of air consumption. Passing zero on the counter would mark the end of overlap/deadtime. This should allow smooth switching at any load, even variable loads, although the software should probably refuse to switch when on boost, just in case.
NOTE: it may also be necessary to add switch-on/switch-off time, from the moment the solenoids are given power until fuel reaches the intake and vice versa.
For gas injection, be it liquid or gaseous, it may be possible to smooth out the transition even better by tapering off one fuel while slowly increasing the next. Effectively running a WBO2-corrected mixture even during switchover, distributing the fuel requirement across two (sets of) injectors. Obviously this only works when both fuels are fully under VEMS control (which is something current firmware does not support yet), not for switching to and from mechanical fuel systems.
All "smooth" switching ideas should go out the window if "emergency switching" occurs because one tank is empty. It would be nice if these cases could be detected and switched automatically. One important thing to watch out for is intake backfires, that can occur if the engine tries to run on a lean gas mixture. They can be devastating and should be prevented at (almost) any cost.
- The LPG lockoff solenoids (and the pump, in case of liquid injection) would be powered from the fuel pump relay and therefore subject to the same safety circuitry/algorithms. Switching them would occur by ground as usual.
- Disabling petrol is done by no longer firing the injectors. The petrol fuel pump should continue to run. At reduced speed if you will, but if you stop the pump completely while running on LPG, the petrol fuel hoses in the engine bay will crumble and the injectors will seize. Even inactive, they need fuel flow. (I know this first hand...)
The old days
An entirely optional history lesson for those interested
Back in the carburetor age, things were simple. Install lockoffs for both fuels and switch power between them. A hiccup would often occur, but who'd really notice or care?
During the late 80s' and 90's, as fuel injected cars became the norm, switching between LPG and petrol was often accomplished by a small and simple device called the "petrol start unit". It would always start on petrol and then, if the dash switch is set to LPG, automatically switch over. Disabling petrol was done using ugly relay setups in the injector wiring. Because it would take some time for the gas mixture to reach the ports, there would be a certain amount of (fixed but adjustable) overlap, time in which both fuel systems are active. Required overlap would mostly depend on the length of the intake tubes between injectors/mixers of either fuel. Misadjustment could lead to momentary leaning and intake backfires. Switching would be smooth at idle but cause a stumble at any other load.
Switching back to petrol would usually be instant without any overlap or dead time, often causing a rich stumble or even flooding when the engine received a momentary double dose of fuel during switchover. Some LPG systems included a pressure sensor that would switch to petrol when the LPG tank runs empty.
The petrol ECU was tricked into thinking it was still running the engine, by dummy loads on the injector outputs and a sine wave at the O2 sensor input. Often this would STILL generate trouble codes, which was "solved" by removing permanent 12V from the ECU (to keep it from remembering anything) and disabling the warning light through a relay when running on LPG. Crude as they were, many thousands ran these systems. The installers simply told users to never switch while driving, and all was well. Only the occasional hot start was problematic, if the little box couldn't detect a hot start. Some gas mixture would still linger in the intake, and trying to start on petrol (as the system always does) would just flood it. But most people would know what to do, because flooding on hot starts is not uncommon with single fuel cars either.
- get a bit more familiar with firmware source code so I can more accurately name the variables I'd like to "tap into", and gauge the ease of implementation of a switching algorithm as a compile-time option.
- write more about other aspects of bifuel, for instance the case where both fuels are under VEMS control and each running its own set of injectors.
Don't forget about pressure sensor (MAP) inside LPG injection rail. LPG pressure at injector side isn't constant like petrol, so injection timings depends on pressure inside LPG rail also...
Why don't you make complete to sets of configuration? So you would have to have double memory space in FLASH, but, then LPG system set, and petrol system set would be 2 different sets? LPG needs little more advanced ignition and little more lean fuel. On input signal you would choose what set do you want... I'm not sure that stage1, stage2 system would work on bifuel..
Also implement a temperature parameter in the calculation of PW for the LPG injectors. As density is also dependant of LPG temperature along with pressure.
LPG temperature measured where, with what kind of sensor ? NTC ? What is density(T) ? Or is it only for very cold tank, when the pressure of the pressure regulator is not reached ?