DIY PROM Do It Yourself PROM chip burning help. No PROM begging. No PROMs for sale. No commercial exchange. Not a referral service.

7730 w/$88 mask - rich open loop idle

Thread Tools
 
Search this Thread
 
Old Oct 21, 2009 | 01:10 AM
  #1  
Reddbird350's Avatar
Thread Starter
Junior Member
 
Joined: Sep 2005
Posts: 5
Likes: 0
7730 w/$88 mask - rich open loop idle

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
Reply
Old Oct 21, 2009 | 08:01 AM
  #2  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 234
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Re: 7730 w/$88 mask - rich open loop idle

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."

RBob.
Reply
Old Oct 21, 2009 | 11:37 AM
  #3  
Reddbird350's Avatar
Thread Starter
Junior Member
 
Joined: Sep 2005
Posts: 5
Likes: 0
Re: 7730 w/$88 mask - rich open loop idle

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.

Thanks again!!
Reply
Old Oct 21, 2009 | 01:29 PM
  #4  
RBob's Avatar
Moderator
iTrader: (1)
 
Joined: Mar 2002
Posts: 18,432
Likes: 234
From: Chasing Electrons
Car: check
Engine: check
Transmission: check
Re: 7730 w/$88 mask - rich open loop idle

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
Reply
Old Oct 21, 2009 | 04:21 PM
  #5  
Reddbird350's Avatar
Thread Starter
Junior Member
 
Joined: Sep 2005
Posts: 5
Likes: 0
Re: 7730 w/$88 mask - rich open loop idle

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!!!!
Reply
Old Oct 22, 2009 | 01:42 AM
  #6  
Reddbird350's Avatar
Thread Starter
Junior Member
 
Joined: Sep 2005
Posts: 5
Likes: 0
Re: 7730 w/$88 mask - rich open loop idle

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.
Reply
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
Fast355
DIY PROM
10
Apr 17, 2016 07:57 AM
BWilcox
Tech / General Engine
1
Sep 20, 2015 12:19 PM
Armored91Camaro
DIY PROM
3
Aug 12, 2015 09:41 AM
Ruiner
TPI
3
Sep 7, 2009 11:30 PM
87zjeff
DIY PROM
5
Jan 5, 2007 10:35 PM




All times are GMT -5. The time now is 08:51 AM.