DIY PROMDo It Yourself PROM chip burning help. No PROM begging. No PROMs for sale. No commercial exchange. Not a referral service.
Welcome to ThirdGen.org!
Welcome to ThirdGen.org.
You are currently viewing our forum as a guest, which gives you limited access to view most discussions and access our other features. By joining our community, at no cost, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is free, fast and simple, join the ThirdGen.org community today!
Hey guys, I have an 86 2.8 with a 2.8 FI. I have the 7730 ecm running the $88 BAWX .bin file. I can not adjust the open loop idle air/fuel ratio. I have tried using Tuner Cat and TunerPro with no success. I can adjust any table and lean out the air/fuel ratio - change the injector size - manipulate the base pulse width adjusters and the ecm will recalculate the airfuel mixture to always run rich. I have a new 4 wire O2 hooked up. When it fires up, the O2 (hot or cold) starts out @ .5mv and raises to .95+mv. You can smell the rich condition. The vehicle idles correctly. I have ruled out faulty sensors and vacuum leaks via testing. There has to be a table or constant missing from my definition files that controls this. Hopefuly someone will have some insight on this issue.
The car runs great in closed loop. I have tried different size injectors and have tested them to ensure no injectors are leaking. I am 99% certain it is a .bin parameter that needs adjusted.
Thanks....Red
This ad is not displayed to registered members. Register your free account today and become a member on ThirdGen!
Sponsored Links
Registered users do not see this ad. Click here to register for free!
The idle PW is calculated from the airflow. The calculation for the airflow value takes into account the MAP, Barometric pressure, engine RPM, IAC position, IAT, and CTS.
From that airflow value the code uses a BPC value that is specifically for idle. This is found at $6BA
Note that there are three BPC values in the code. The one above used for idle, another that is used for n-alpha fueling during cranking. Then a table of BPC values vs EGR for when the engine is running (and not in idle).
To turn off the idle based on airflow there is an option bit. Note that I'm not saying to do this, just that it is there. Location $6B5 bit 2 is the option flag. A 1 for idle PW based on airflow, a 0 for "same as running engine PW calculation."
Alright! I'll mess with that and see what it does. Do you know how the $88 code mask calculates the airflow. I know it must be on a table or calculation due to the lack of MAF.
Actually, the location at $6BA is really an injector flow rating. Not a BPC. It consists of 2 bytes that is a value to define the seconds of injector open time to flow one gram of fuel. So the larger the injector the smaller this value.
Figure I'd correct myself on that point. As it will make a difference when trying to tune.
Note that the idle injector PW calculation still uses the commanded AFR variable. So changing that will also change the idle PW and the resultant AFR.
This is the ECMs calc for the airflow at idle. I'm not sure which table should be changed due to the change in engine displacement. My first guess would be the IAC airflow, second guess would be the TPS% offset vs RPM table.
Code:
; -----------------------------------------------
;
; SubRoutine
;
; Used in idle fueling routine
; -----------------------------------------------
LCC5C: LDAB L001B ; a/d baro counts, kpa = (N + 28.06) / 2.71
;
BRCLR L0038;$C0,LCC66 ; map hi, lo malf bits
;
CMPB L005A ; filt map ADC cnts
BRA LCC68 ;
;
LCC66: CMPB L0053 ; map ADC cnts
;
LCC68: BHI LCC6F ; bra if baro > map
LDX #$FFFF ;
BRA LCC82 ;
;
; create map & baro terms
;
LCC6F: CLRA ;
LSRB ; baro /= 2
ADDB #14 ;
;
PSHB ; move baro into X
PSHA ;
PULX ;
;
LDAB L0053 ; map ADC cnts
BRCLR L0038;$C0,LCC7E ; map hi, lo malf bits
LDAB L005A ; filt map ADC cnts
;
LCC7E: LSRB ; map /= 2
ADDB #14 ;
;
; X = (MAP / BARO ) * 65535
;
; The higher the map, the higher the result
;
FDIV ; X = (AB / X) * 65535
;
LCC82: PSHX ; move result into A with a / 256
PULA ; (MAP / BARO ) * 256
INS ; cleanup stk
; ----------------------------------------------
;
; Table vs MAP / BARO ratio
;
; 0x8A43: 231 231 234 236 239 239 241 245 248 250 253 255 255 255 255 255 255
;
; ----------------------------------------------
CMPA #207 ; range lookup index
BLS LCC8B ;
LDAA #207 ;
;
LCC8B: SUBA #80 ; lower limit
BCC LCC90 ;
CLRA ;
;
LCC90: ASLA ; A *= 2
LDX #L8A43 ; table address
JSR LF4A1 ; 2d lookup, no LCnt
PSHA ; save result(1)
; ----------------------------------------------
;
; Table vs IAT/CTS term
;
; 0x8A54: 172 165 156 149 142 137 132 127 122 118 114 110 106 104 100 97 95
;
; ----------------------------------------------
LDAA L019F ; slow filtered IAT/CTS term, øC = (N * 0.75) - 40
LDX #L86B5 ; == 4Ch, 0100 1100
BRCLR 0,X;$20,LCCA4 ; b5 clr, do bra
LDAA L00C6 ; IAT
;
LCCA4: LDX #L8A54 ; table address
JSR LF4A1 ; 2d lookup, no LCnt
PSHA ; save result(2)
; ----------------------------------------------
;
; Table vs BARO
;
; 0x8A65: 162 186 211 240 255
;
; ----------------------------------------------
JSR LF13C ; get scaled baro
LDAB #80 ; lower limit
LDX #L8A65 ;
JSR LF49D ; do 2d lookup, w/SBA scaling
PSHA ; save result(3)
; ----------------------------------------------
;
; Airflow (GMS/SEC*16) vs. IAC position
;
; 0x8A6A: 0 5 11 18 24 30 37 43 50 54 62 69 75 102 156 196 255
;
; ----------------------------------------------
LDAA L0014 ; current IAC position
CMPA #48 ;
BCC LCCC1 ; bra if IAC >= 48 steps
;
ASLA ;
ASLA ;
BRA LCCC7 ;
;
LCCC1: ADDA #144 ;
BCC LCCC7 ;
LDAA #255 ;
;
LCCC7: LDX #L8A6A ;
JSR LF4A1 ; 2d lookup, no LCnt
PSHA ; save result(4)
; ----------------------------------------------
;
; IAC steps vs. baro compensation
;
; 0x8E16 12 9 6 3 0
;
; ----------------------------------------------
JSR LF13C ; get scaled baro
LDX #L8E16 ;
JSR LF49D ; do 2d lookup, w/SBA scaling
;
ADDA L0016 ; minimum IAC position
BCC LCCDD ;
LDAA #255 ;
;
; ----------------------------------------------
; ----------------------------------------------
LCCDD: CMPA #63 ;
BLS LCCE3 ;
LDAA #63 ;
;
LCCE3: ASLA ;
ASLA ;
LDX #L8A7B ;
JSR LF4A1 ; 2d lookup, no LCnt
PULB ; get result(4)
ABA ;
BCC LCCF1 ;
LDAA #255 ;
;
LCCF1: CLRB ;
LSRD ; AB /= 16
LSRD ;
LSRD ;
LSRD ;
;
PSHB ; save on stack(5), IAC grams/sec
PSHA ; Save Iac grams/sec
; ----------------------------------------------
;
; table TPS% vs. scaled/limited rpm
;
; 0x8A3A: 35 52 68 85 101 118 142 185 215
; ----------------------------------------------
LDAA L00C4 ; rpm (dual range to 4800)
LSRA ; rpm /= 2
ADCA #0 ;
LDX #L8A3A ;
JSR LF4A1 ; 2d lookup, no LCnt
;
LDAB L006D ; tps%
MUL ;
;
TSX ; X addy
ADDD 0,X ; result(5)
BCC LCD0E ;
LDD #65535 ;
;
LCD0E: STD 0,X ; working location
TSY ; Y addy
;
LDAA 2,Y ; result(3)
JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256
STD 0,X ; working location
;
LDAA 3,Y ; result(2)
JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256
STD 0,X ; working location
;
LDAA 4,Y ; result(1)
JSR LF5D7 ; 8 x 16 mult: AB = (*X * A) / 256
;
INS ; clean up stack
INS ;
INS ;
INS ;
INS ;
LSLD ; AB *= 2
BCC LCD33 ;
LDD #65535 ;
;
LCD33: STD L1E1A ; optional ram, idle airflow
RTS ; and back with result in AB also
First off, THANKS for taking the time to post this info. It has been VERY helpful. (AND FAST TOO!!) Okay, I have added the tables to my tunerpro XDF files and using the addresses you gave, the data lines up exaxtly(using an AZTY1407 .bin) I guessed IAC position from 0-120 scaling 7.5(8)steps down until the airflow was zero and the IAC was closed(Also 0).
I was unable to calculate the baro compensation factors(IAC STEPS vs Baro Comp) nor could I figure out the TPS% Vs. scaled limited rpm Table, the IAT/CTS table parameters(I found the row units in deg. cel in a Moates hack/-40 to 152 @12 step inc.) or the MAP/Baro ratio .
I truly believe you have pointed me to the areas in my bin that need tweeking that have been locked...UNTIL NOW!!!!
I tried the "idle based on airflow" switch added to Tunerpro but the vehicle would not idle and would die if I took my foot off the accelerator. I am going to look at modifying the airflow per IAC count table. Maybe a reduction in the airflow estimate will reduce the fuel added @ idle.