From 3142c3f16fd431ba1bc2981401a9f3e0784afdfe Mon Sep 17 00:00:00 2001 From: OrchardPerformance <49926376+OrchardPerformance@users.noreply.github.com> Date: Thu, 23 Apr 2020 21:23:35 +0100 Subject: [PATCH 1/3] Fuel Control start of the fuel control information --- .vscode/settings.json | 7 ++++ Fuel/Fuel_Control/AlphaN.md | 5 +++ Fuel/Fuel_Control/MAF.md | 61 ++++++++++++++++++++++++++++++ Fuel/Fuel_Control/Overview.md | 31 +++++++++++++++ Fuel/Fuel_Control/Speed_Density.md | 18 +++++++++ 5 files changed, 122 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 Fuel/Fuel_Control/AlphaN.md create mode 100644 Fuel/Fuel_Control/MAF.md create mode 100644 Fuel/Fuel_Control/Overview.md create mode 100644 Fuel/Fuel_Control/Speed_Density.md diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..ff1b4b98 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "cSpell.words": [ + "adjsuting", + "adjusutng", + "methotd" + ] +} \ No newline at end of file diff --git a/Fuel/Fuel_Control/AlphaN.md b/Fuel/Fuel_Control/AlphaN.md new file mode 100644 index 00000000..d2846837 --- /dev/null +++ b/Fuel/Fuel_Control/AlphaN.md @@ -0,0 +1,5 @@ +TPS-based table fuel lookup with interpolation (Alpha-N) + +fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * intake_air_correction_curve_lookup(INTAKE_AIR_TEMP) * fuel_table_lookup(RPM, TPS) + +where TPS is the reading at the start of engine cycle \ No newline at end of file diff --git a/Fuel/Fuel_Control/MAF.md b/Fuel/Fuel_Control/MAF.md new file mode 100644 index 00000000..fac11486 --- /dev/null +++ b/Fuel/Fuel_Control/MAF.md @@ -0,0 +1,61 @@ +# Current Status +The MAF based fueling of rusEFI is still undergoing development, the current status has the fueling functioning correctly but presents a few tuning challenges due to TunerStudio integration and the Spark Table still being reliant on the old engine load math. + +This is an evolving situation at present and thus MAF fueling is still considered experimental. +**Please only use for development work at your own risk.** + +# MAF fuel theory - The detail +The implementation of the MAF in rusEFI is intended to replicate the functionality of OEM systems and as such is more complex than some other systems. + +The foundation of the MAF system is the Mass Air Flow sensor itself, this is a device using a hot wire, hot film or vane to directly measure the flow of air into the engine. +Obviously this sensor does not give out an airflow value, it gives us a voltage, current or PWM signal that represents the flow. rusEFI can interpret a voltage or current MAF at this time via a transfer function table. + +[//]: # "Insert the MAF transfer function screen shot" + +The Transfer function table is used to convert the raw MAF sensor reading into a Kg/h (Kilogram Per Hour) airflow. + +This Kg/h value is then processed into a required fuel quantity by the following calculations: + + g/s = Kg/h * 1000 / 3600 + + n/s = rpm / 60 + + airPerRevolution = g/s / n/s + + cylinder Airmass = airPerRevolution / half Cylinder number + +In rusEFI we use a correction factor table to modify this measured air mass to allow correction of any errors in the measurement due to dynamic air flow effects. +To do this we to have a "load" value that allows us to have a Load Vs Speed fuel table. + + StandardAirCharge = engine displacement / number of cylinders * 1.2929 + +This produces the air mass for cylinder filling at 100% VE under standard SAE conditions. +Using this we can relate our cylinder air mass back to a standardised 100% cylinder filling and this we have a "load" value to use when tuning. + + airChargeLoad = 100 * cylinder Airmass / Standard AirCharge + +The required fuel is now simply corrected by adjusting the measured air by the value in the VE table, this value is simply a %. + + corrected Cylinder Airmass = cylinder Airmass * (VE map value / 100) + + fuelMassGram = corrected Cylinder Airmass / desired AFR + + pulse Width = fuelMass / injector flow (in g/s) + +Using this method rusEFI is able to directly measure the air flow into an engine and calculate the required fuel with minimal tuning. + +# MAF fuel tuning - The quick version + +To tune rusEFI using the MAF is probably the quickest and easiest method provided you have a working MAF sensor and the correct information to input in the Transfer Function Table. + + + +# Obsolete information below + +MAF-based table fuel lookup with interpolation + +fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * intake_air_correction_curve_lookup(INTAKE_AIR_TEMP) * fuel_table_lookup(RPM, MAF) + +where MAF is the reading at the start of engine cycle + +[//]: # "Comment" diff --git a/Fuel/Fuel_Control/Overview.md b/Fuel/Fuel_Control/Overview.md new file mode 100644 index 00000000..57202004 --- /dev/null +++ b/Fuel/Fuel_Control/Overview.md @@ -0,0 +1,31 @@ +The Air Fuel Ratio (AFR) is controlled by how much fuel is delivered to the cylinder for combustion. There are many factors and many sensors that come into play when trying to determine how much O2 is in the cylinder. RusEFI collects this information and makes a guess about how much O2 is in the cyl, then rusEFI has to determine how much fuel is needed to get the expected AFR and deliver that fuel charge. Below is a graphic that shows some common differences in AFR for a particular Toyota engine. Other engines are similar to this, but may have a different peak power area, or peak efficiency area, etc. To know this information for your particular setup you would need to run it on a Dyno, and determine the exact AFR's. + +Airfuel.jpg + +Original graphic found here [1] + +Most people who are installing tune-able ECU's like rusEFI are looking for more power at the track. However your fuel weight advantage is also commonly important. So it is common that an engine will be tuned for peak power when over a certain load, and peak economy when at a cruise load. OEM's are often concerned with minimal environmental impact, so they may tune to a different AFR. Once you have decided on what your AFR strategy is going to be, you'll have to tune rusEFI to deliver that strategy. As well you will probably use an wide band oxygen sensor to measure your AFR and ensure that your are meeting your desired AFT plan. + + +RusEfi supports mono, individual/sequential and batched fuel injection using one of the following fuel control algorithms: + +1) MAF-based or MAP-based table fuel lookup with interpolation - these algorithms are pretty rough since they do not account for ambient air temperature but not many sensor are required to run. + +2) TPS-based table fuel lookup with interpolation (Alpha-N) + +3) MAP-based Speed Density model, with fuel auto-tune provided by a fully registered copy of TunerStudio + +Wideband Oxygen Sensor is pretty much a requirement for both manual and auto-tuning. + + +T4dv3ed.png + +Within each fuel calculation mode there is coolant temperature correction ("warm-up mode"), battery voltage correction and injector open time ("injector lag") correction. + + +rusEfi could be used with MAF sensors sending out voltage (like Mazda Miata) or current (like Ford Aspire). + + +NXe9uWH.png + +(also some content at http://rusefi.com/forum/viewtopic.php?f=2&t=1124) \ No newline at end of file diff --git a/Fuel/Fuel_Control/Speed_Density.md b/Fuel/Fuel_Control/Speed_Density.md new file mode 100644 index 00000000..d2b9f0d9 --- /dev/null +++ b/Fuel/Fuel_Control/Speed_Density.md @@ -0,0 +1,18 @@ +# Speed Density +Speed Density is probably the most popular algorithm since with knowing MAP calibration, CLT, IAT and TPS and injector flow rate we get a good enough tune without much tuning (tuning would obviously be needed anyway) + +fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * (cylinder_displacement * VE_table_lookup(RPM, MAP) * MAP / GAS_R * charge_temp(COOLANT_TEMPERATURE, INTAKE_AIR_TEMP, TPS)) / target_afr_table_lookup(RPM, MAP) / injector_flow + +where + +MAP is the average of multiple 10KHz ADC readings within specified camshaft angle range, kPa + +VE is intake volumetric efficiency coefficient + +GAS_R is gas constant + +Speed Density calculation: http://rusefi.com/docs/html/speed__density_8cpp.html + +MAP sensor processing: http://rusefi.com/docs/html/map__averaging_8cpp.html + +charge_temp is charge temperature heuristic formula: Tcharge = CLT * (1 - Tcharge_coff) + IAT * Tcharge_coff Where Tcharge_coff is interpolated between 0.25 if RPMs are low or throttle is closed to 0.9 if RPMs are high and wide open throttle. See http://rusefi.com/math/t_charge.html \ No newline at end of file From 2887b31acd713281b704625adadd9e865420f171 Mon Sep 17 00:00:00 2001 From: OrchardPerformance <49926376+OrchardPerformance@users.noreply.github.com> Date: Thu, 23 Apr 2020 21:37:57 +0100 Subject: [PATCH 2/3] Added MAF tuning info --- Fuel/Fuel_Control/MAF.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Fuel/Fuel_Control/MAF.md b/Fuel/Fuel_Control/MAF.md index fac11486..47b68ef2 100644 --- a/Fuel/Fuel_Control/MAF.md +++ b/Fuel/Fuel_Control/MAF.md @@ -48,7 +48,18 @@ Using this method rusEFI is able to directly measure the air flow into an engine To tune rusEFI using the MAF is probably the quickest and easiest method provided you have a working MAF sensor and the correct information to input in the Transfer Function Table. +The first thing to do is input the voltage (or current) to Kg/h information into the Transfer Function Table in tuner studio. +Secondly you will need to decide what Air/Fuel ratio you would like your engine to run at and input this into the AFR table in tuner studio. +For a first start a value of 14 is perfectly acceptable for gasoline. +This table is the primary source of the desired fuel mixture, it will be this table that is tuned to decide the engines target AFR. +A future update will make this fueling table dynamic so that an input % of ethanol in the main fueling dialog will change the fuel density and thus the required fuel mass injected. The result of this will be that users can leave this table tuned as though it were for pure gasoline (14.7:1 stoiciometric) and the % ethanol input will make sure the fuelling stays at the same Lambda value. +This has the advantage of working well with aftermarket wideband controllers that generally work in AFR using pure gasoline as the standard. + +Before starting the engine for the first time it is wise to ensure the Fuel Table is filled with values of "100", a value of 100 means that the fuel calculation uses 100% of its measured air mass to decide on the fuel injection pulse. +Tuning this table will adjust for dynamic airflow effects that happen in the inlet of an engine and will allow small (or large but hopefully not) corrections to the fuel injection which may be required to have the engine meet it's desired air/fuel target. +This table should only be tuned if the engine is not meeting the desired air/fuel target under relatively steady state conditions (i.e. without any acceleration enrichment or overrun fuel cut). +If a different air/fuel ratio is desired at a specific load or RPM then the AFR Table is the correct table to adjust instead. # Obsolete information below From 18f23166a7d78d99448247e36b9a744db2223bd6 Mon Sep 17 00:00:00 2001 From: OrchardPerformance <49926376+OrchardPerformance@users.noreply.github.com> Date: Thu, 23 Apr 2020 21:42:19 +0100 Subject: [PATCH 3/3] add picture comments --- Fuel/Fuel_Control/MAF.md | 6 +++++- Fuel/Fuel_Control/Overview.md | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Fuel/Fuel_Control/MAF.md b/Fuel/Fuel_Control/MAF.md index 47b68ef2..98214945 100644 --- a/Fuel/Fuel_Control/MAF.md +++ b/Fuel/Fuel_Control/MAF.md @@ -56,11 +56,15 @@ This table is the primary source of the desired fuel mixture, it will be this ta A future update will make this fueling table dynamic so that an input % of ethanol in the main fueling dialog will change the fuel density and thus the required fuel mass injected. The result of this will be that users can leave this table tuned as though it were for pure gasoline (14.7:1 stoiciometric) and the % ethanol input will make sure the fuelling stays at the same Lambda value. This has the advantage of working well with aftermarket wideband controllers that generally work in AFR using pure gasoline as the standard. +[//]: # "Add AFR table picture" + Before starting the engine for the first time it is wise to ensure the Fuel Table is filled with values of "100", a value of 100 means that the fuel calculation uses 100% of its measured air mass to decide on the fuel injection pulse. Tuning this table will adjust for dynamic airflow effects that happen in the inlet of an engine and will allow small (or large but hopefully not) corrections to the fuel injection which may be required to have the engine meet it's desired air/fuel target. This table should only be tuned if the engine is not meeting the desired air/fuel target under relatively steady state conditions (i.e. without any acceleration enrichment or overrun fuel cut). If a different air/fuel ratio is desired at a specific load or RPM then the AFR Table is the correct table to adjust instead. +[//]: # "Add VE table picture" + # Obsolete information below MAF-based table fuel lookup with interpolation @@ -69,4 +73,4 @@ fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup( where MAF is the reading at the start of engine cycle -[//]: # "Comment" + diff --git a/Fuel/Fuel_Control/Overview.md b/Fuel/Fuel_Control/Overview.md index 57202004..6c29bc5a 100644 --- a/Fuel/Fuel_Control/Overview.md +++ b/Fuel/Fuel_Control/Overview.md @@ -1,6 +1,7 @@ The Air Fuel Ratio (AFR) is controlled by how much fuel is delivered to the cylinder for combustion. There are many factors and many sensors that come into play when trying to determine how much O2 is in the cylinder. RusEFI collects this information and makes a guess about how much O2 is in the cyl, then rusEFI has to determine how much fuel is needed to get the expected AFR and deliver that fuel charge. Below is a graphic that shows some common differences in AFR for a particular Toyota engine. Other engines are similar to this, but may have a different peak power area, or peak efficiency area, etc. To know this information for your particular setup you would need to run it on a Dyno, and determine the exact AFR's. Airfuel.jpg +[//]: # "Add picture" Original graphic found here [1] @@ -19,6 +20,7 @@ Wideband Oxygen Sensor is pretty much a requirement for both manual and auto-tun T4dv3ed.png +[//]: # "Add picture" Within each fuel calculation mode there is coolant temperature correction ("warm-up mode"), battery voltage correction and injector open time ("injector lag") correction. @@ -27,5 +29,6 @@ rusEfi could be used with MAF sensors sending out voltage (like Mazda Miata) or NXe9uWH.png +[//]: # "Add picture" (also some content at http://rusefi.com/forum/viewtopic.php?f=2&t=1124) \ No newline at end of file