NHTrailers    Buschwacker    BuschurFacebook
Results 1 to 1 of 1

Thread: How to control closed loop 02 with your wideband 02 system

  1. #1
    Join Date
    Jun 2005
    Location
    Everywhere
    Posts
    67

    Default How to control closed loop 02 with your wideband 02 system

    Update Sept 27, 2008: Added AFR16 scaling for people using older xml files.
    Update Sept 25, 2008: I've uploaded a slightly revised base ROM. If you downloaded the "88590015_front-rear_O2_patched_v10t.zip" before 9/26/2008, please download the revised one (same file name), and recopy the values to your ROM. There is only one change to the revised ROM, so it will look the same except for one line.
    -----
    -----
    how-to: Closed loop cruise AFR control for the 88590015 ROM
    This is a revision to the original patch.
    Both Innovate and Zeitronix provide simulated narrowband analog outputs that can be used in place of the front O2 sensor signal to make the car run at a single user adjustable AFR (usually leaner than 14.7:1 for better fuel economy) during closed loop cruise. This makes the ECU change the closed loop AFR value by causing the ECU to adjust the fuel trims to hit the target AFR programmed into the wideband controller. This is an "ok" method for controlling closed loop AFR, but it has two problems. First is that the car is limited to run a single AFR during closed loop cruise. For Evos with aftermarket cams or an aftermarket intake, a lean closed loop AFR may cause rough/unpredictable idle. It may also affect tip-in response from idle. Second is that for best control of AFR during closed loop cruise, the base fuel pulse needs to be set for the target AFR. The base fuel pulse is determined by the fuel map, but as we all know, in closed loop, the Evo ECU does not follow the fuel map. The base pulse is automatically for a 14.7:1 AFR.
    My closed loop cruise patch addresses all these issues and provides several other handy features. With this patch, the following things can be done:
    1) During closed loop cruise, the ECU will set the base fuel pulse from the fuel map.
    2) I have written an algorithm to convert the wideband O2 signal into a narrowband O2 signal with a crossover point that is determined from the target AFR from the fuel map. This works in conjunction with feature #1 to provide optimum closed loop adjustable AFR performance. The result is that the ECU will precisely follow the fuel map during closed loop cruise. Rich values can be used in the idle cells to help stablize idle with big cams or aftermarket intakes, and lean values can be used in the cruise cells for optimum fuel economy.
    3) To aid is cold engine performance, I have created a "cold engine" AFR setting. The cold engine AFR and coolant temperature value where the ECU switches from the cold engine AFR to following the fuel map are both adjustable.
    4) The closed loop cruise patch can be enabled and disabled with ECUFlash (provided that the front O2 sensor signal remains plumbed into the ECU).
    5) If you prefer to use the the front O2 ADC input for something else, I have created a unique RAM address and MUT port to read whatever is attached to the front O2 sensor ADC input.
    6) This patch by necessity includes my rear O2 sim algorithm.
    NOTE: At this time, I only have a patch for the 88590015 ROM. It will work for both the standard 88590015 ROM and the tephra v5.10 88590015 ROM. I'll port the patch to other ROMs as I have time.
    Instructions for applying the patch:
    NOTE: if you had installed the older patch from this thread[/URL], the new patch will disable and/or overwrite the old patch.
    1) It is necessary to wire an analog output from a WBO2 controller into rear O2 ADC input the ECU. Instructions are here.[/URL]
    Skip the "ROM Modifications" part of that how-to, but do everything else. In the last part of that how-to, there are instructions for calculating the WBO2 scaling formula for EvoScan. The values from that formula will need to be used for the closed loop WBO2 patch. The example formula for EvoScan in that how-to is:
    0.03137*x + 9.06
    In that example, mL = 0.03137, and bL = 9.06. For this patch, you'll need 1/mL and bL/mL. For this example,
    1/mL = 1/0.03137 = 31.9
    bL/mL = 9.06/0.03137 = 289
    2a) If you were running the original version of this patch, delete the old tables from your ECUFlash 88590015.xml file.
    2b) Copy the following tables to your ECUFlash "88590015.xml" file:
    ------ (Don't copy the "-------")
    <table name="Closed Loop Wideband On/Off" category="Front/Rear_02" address="8734" type="1D" level="1" scaling="uint8"/>
    <scaling name="AFR16" units="AFR" toexpr="14.7*128/x" frexpr="14.7*128/x" format="%.1f" min="8" max="20" inc="0.1" storagetype="uint16" endian="big"/>
    <table name="Cold Engine Closed Loop AFR" category="Front/Rear_02" address="8736" type="1D" level="1" scaling="AFR16"/>
    <table name="Min Coolant Temp To Use AFR Table" category="Front/Rear_02" address="8738" type="1D" level="1" scaling="Temp"/>
    <scaling name="mLinverse" units="1/mL" toexpr="x/8" frexpr="x*8" format="%.1f" min="0" max="100" inc="0.1" storagetype="uint16" endian="big"/>
    <table name="Wideband AFR Correlation 1/mL Value" category="Front/Rear_02" address="873A" type="1D" level="1" scaling="mLinverse"/>
    <table name="Wideband AFR Correlation bL/mL Value" category="Front/Rear_02" address="873C" type="1D" level="1" scaling="uint16"/>
    <table name="AFR Table Multiplier High Word" category="Front/Rear_02" address="8740" type="1D" level="1" scaling="Hex16"/>
    <table name="AFR Table Multiplier Low Word" category="Front/Rear_02" address="8742" type="1D" level="1" scaling="Hex16"/>
    <table name="Front O2 (ADC 04) RAM variable" category="Front/Rear_02" address="c2ba" type="1D" level="1" scaling="Hex16"/>
    <table name="Rear O2 (ADC 0A) RAM variable" category="Front/Rear_02" address="c2be" type="1D" level="1" scaling="Hex16"/>
    <table name="MUT12 Value (To Read Wideband)" category="Front/Rear_02" address="3eece" type="1D" level="1" scaling="Hex16"/>
    <table name="MUT19 Value (To Read Front O2 ADC)" category="Front/Rear_02" address="3eeea" type="1D" level="1" scaling="Hex16"/>

    <table name="ADC Value Mod Hook" category="Front/Rear_02" address="c250" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1" scaling="Hex16">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="10">
    <data>C250</data>
    <data>C252</data>
    <data>C254</data>
    <data>C256</data>
    <data>C258</data>
    <data>C25A</data>
    <data>C25C</data>
    <data>C25E</data>
    <data>C260</data>
    <data>C262</data>
    </table>
    </table>
    <table name="Hook For Closed Loop Pulse Control Hex" category="Front/Rear_02" address="182e4" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="8">
    <data>182E4</data>
    <data>182E6</data>
    <data>182E8</data>
    <data>182EA</data>
    <data>182EC</data>
    <data>182EE</data>
    <data>182F0</data>
    <data>182F2</data>
    </table>
    </table>
    <table name="Front/Rear 02 Sim Subroutine Part 1" category="Front/Rear_02" address="47f00" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1" scaling="Hex16">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="40">
    <data>47F00</data>
    <data>47F02</data>
    <data>47F04</data>
    <data>47F06</data>
    <data>47F08</data>
    <data>47F0A</data>
    <data>47F0C</data>
    <data>47F0E</data>
    <data>47F10</data>
    <data>47F12</data>
    <data>47F14</data>
    <data>47F16</data>
    <data>47F18</data>
    <data>47F1A</data>
    <data>47F1C</data>
    <data>47F1E</data>
    <data>47F20</data>
    <data>47F22</data>
    <data>47F24</data>
    <data>47F26</data>
    <data>47F28</data>
    <data>47F2A</data>
    <data>47F2C</data>
    <data>47F2E</data>
    <data>47F30</data>
    <data>47F32</data>
    <data>47F34</data>
    <data>47F36</data>
    <data>47F38</data>
    <data>47F3A</data>
    <data>47F3C</data>
    <data>47F3E</data>
    <data>47F40</data>
    <data>47F42</data>
    <data>47F44</data>
    <data>47F46</data>
    <data>47F48</data>
    <data>47F4A</data>
    <data>47F4C</data>
    <data>47F4E</data>
    </table>
    </table>

    <table name="Front/Rear 02 Sim Subroutine Part 2" category="Front/Rear_02" address="47f50" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="40">
    <data>47F50</data>
    <data>47F52</data>
    <data>47F54</data>
    <data>47F56</data>
    <data>47F58</data>
    <data>47F5A</data>
    <data>47F5C</data>
    <data>47F5E</data>
    <data>47F60</data>
    <data>47F62</data>
    <data>47F64</data>
    <data>47F66</data>
    <data>47F68</data>
    <data>47F6A</data>
    <data>47F6C</data>
    <data>47F6E</data>
    <data>47F70</data>
    <data>47F72</data>
    <data>47F74</data>
    <data>47F76</data>
    <data>47F78</data>
    <data>47F7A</data>
    <data>47F7C</data>
    <data>47F7E</data>
    <data>47F80</data>
    <data>47F82</data>
    <data>47F84</data>
    <data>47F86</data>
    <data>47F88</data>
    <data>47F8A</data>
    <data>47F8C</data>
    <data>47F8E</data>
    <data>47F90</data>
    <data>47F92</data>
    <data>47F94</data>
    <data>47F96</data>
    <data>47F98</data>
    <data>47F9A</data>
    <data>47F9C</data>
    <data>47F9E</data>
    </table>
    </table>

    <table name="Front/Rear 02 Sim Subroutine Part 3" category="Front/Rear_02" address="47fa0" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="18">
    <data>47FA0</data>
    <data>47FA2</data>
    <data>47FA4</data>
    <data>47FA6</data>
    <data>47FA8</data>
    <data>47FAA</data>
    <data>47FAC</data>
    <data>47FAE</data>
    <data>47FB0</data>
    <data>47FB2</data>
    <data>47FB4</data>
    <data>47FB6</data>
    <data>47FB8</data>
    <data>47FBA</data>
    <data>47FBC</data>
    <data>47FBE</data>
    <data>47FC0</data>
    <data>47FC2</data>
    </table>
    </table>

    <table name="Closed Loop Fuel Pulse Control Subroutine" category="Front/Rear_02" address="47fc4" type="3D" level="1" scaling="Hex16">
    <table name="Code" type="Static X Axis" elements="1">
    <data>Hex16</data>
    </table>
    <table name="Address" type="Static Y Axis" elements="16">
    <data>47FC4</data>
    <data>47FC6</data>
    <data>47FC8</data>
    <data>47FCA</data>
    <data>47FCC</data>
    <data>47FCE</data>
    <data>47FD0</data>
    <data>47FD2</data>
    <data>47FD4</data>
    <data>47FD6</data>
    <data>47FD8</data>
    <data>47FDA</data>
    <data>47FDC</data>
    <data>47FDE</data>
    <data>47FE0</data>
    <data>47FE2</data>
    </table>
    </table>

    --------
    3) Download the following ROM: 88590015_front-rear_O2_patched_v10t.zip
    http://se30.dyndns.org:8080/evo/8859...tched_v10t.zip
    4) Open the ROM in ECUFlash. Find the newly added entries in this patched ROM, and copy the values over to your ROM.
    5) If your 1/mL and bL/mL values are different than the ones listed above, then insert your values into the corresponding tables.
    6) Set your fuel table to whatever values you want for closed loop cruise. Also, feel free to try different values for "Cold Engine Closed Loop AFR" and "Min Coolant Temp To Use AFR Table". However, do not mess with the "AFR Table Multiplier" values.
    7) Upload the ROM to your ECU, and that's it.
    8) MUT12 will now read the wideband O2 analog signal value. EvoScan will read the wideband O2 signal if you followed the "Setting Up EvoScan" steps in the "how-to: Log AFR from the LC-1 w/o a serial cable" thread.
    9) MUT19 will now read whatever analog signal is wired into the front O2 ADC input.

    Source code for the patch is in the attached Excel File:
    Attached Files Attached Files
    Last edited by Admin; 12-10-2009 at 11:27 AM.
    EVERYONE READ THIS!! SITE RULES-JUST A FEW OF THEM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •