You can type here any text you want

Boost Controller Built into chip.

Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

BJM

Senior Member
Joined
May 25, 2001
Messages
905
My pet peeve with TRs is the factory’s open loop spike prone boost causing knock and of course limiting the amount of total boost I can run. I hate having to ease into the pedal, I want to tromp it at will. So, I have just implemented a proper boost controller patch in my stock ECM. All that’s needed is a boost harness and a properly programmed chip. I apologize for droning but read on. Net result, after tuning the parameters my car cannot overshoot its set point, at all, ever. It works nearly identically during up and down shifts which is great. I nail the gas, the boost races up to the set point and simply halts, no fuss no muss.

History

I bought my Buick 5 years ago and noticed right away that the boost spiked by 1-3 psi over the final level. Then I bought a Thrasher with its fast spool, and it was way worse, how annoying. In November I bought another chip with fast spool, same thing, but this one also had a massive tip-in problem that made the car either bog or outright die. Enough was enough, I downloaded the documented spreadsheet from the now missing GNTTYPE and started reading, learned assembler, and here we are.

How It Works

The normal code for calculating Wastegate PW is untouched. However the stock ramp up filter is replaced with a fast spool patch. We are using a controller now, we don’t need to ramp up the boost. This is closed loop boost control. As long as Boost mode is active and LV8 is less than 225, the PW is set to 255. Above LV8 of 225 the normal ~85% value in the chip’s tables are used. Normal scaling back in 3rd and 4th gear is retained. By the way, altering the factory ramp up coefficient is nearly the same as using a fast spool patch, 100% versus 85% does very little.

The factory code reads the MAT sensor (now actually boost) every 16 cycles (0.1 sec). The patch compares the boost from the previous reading to the current one and calculates a delta boost value. Multiply this by a gain value and subtract this from the normally calculated wastegate solenoid value. For anyone into control systems this is a derivative control loop. It pulls back the WG PW based on how fast the boost is rising. An added feature is the fact the loop is off until the boost hits a specified value (I chose 10 psi). This maximizes the effect of the fast spool features.

All my testing had been done with total boost of 15 psi because I am only using the stock 2 bar MAP used for the stock boost gauge. I have to splurge on a 3 bar and move on up in boost now that the spike is gone.

Results (all cases using 15-15.5 psi set point)
Below are my test cases in order of trials

Test Case, Peak boost, and Results

Stock code with fast spool, 17.5, plus knock
Controller Gain=1, 17, little effect on spike
Controller Gain=10, 15, fast rise to 10, halts, swings up to 13, then ramps up to 15 psi
Controller Gain=100 (for fun), 11, Boost oscillates ~3-4 times per second between 10 and 11 psi as WG PW goes full on and then full off again. Car can alter boost level within 0.25 –0.3 seconds.
Controller Gain=5, 15, Fast rise to 13, almost halts, then ramps up to 15 psi
Controller Gain=3, 15, Near perfect control.

I am putting this in the public domain. I would not have gotten here but for the efforts of Mike Pitts and Scot Sealander and whoever allowed their spreadsheet to be posted publicly. I want to give something back. No need to buy an expensive external controller, just alter the chip. If you like it and use it, please just give keep my name attached to it somehow.

Next post will be the actual patch.
 
Boost Controller Patch

Note: I made my own boost harness, on mine higher boost means lower temperature. This makes some of the branches look backwards.

This whole patch resides in the TCC Locked Spark Retard vs RPM table. This table is useless and is only needed if you are stuck using stock TCC unlock value which cause part throttle knock.

3874: 7E 32 06 JMP $3206 Branch up to 38DA, Replaced Store of Acc B into $CF

3202: FF rmin
3203: FF qmin
3204: 00 rnum
3205: 00 tcc locked spark retard vs rpm and load (1200). Space available from $3206-323B

Start of Patch, Acc B contains WG PW including filtering. Acc A was NOT zeroed due to JMP needing that address.

3206: D7 CF STAB $CF Store normal final WG PW.
3208: 96 5C LDAA $5C Load program cycles.
320A: 84 0F ANDA #$0F Filter down to bottom 4 Bits. Cycle count will be down to 0-15.
320C: 26 0D BNE $321B Each second is 160 cycles. Every 16 cycles at 0, patch will run. Every 0.1 seconds. Branch for cycles 1-15.

If here we create new delta boost and create old boost for next pass after 16 cycles. Error trap for negative delta.
320E: 96 4C LDAA $4C Load old boost
3210: 90 14 SUBA $14 A-M => A, Old boost minus new boost, result is delta boost.
3212: 24 01 BCC $3215 If A>=0, branch around clear function. Boost is rising or stable.
3214: 4F CLRA If delta boost <0, clear to zero. Here if Carry was set.
3215: 97 4D STAA $4D Store in delta boost. Value is either 0 or a positive value.
3217: 96 14 LDAA $14 Reload new boost
3219: 97 4C STAA $4C Create new old boost.

Here we will use delta boost. Calculated on cycle 0 and used unchanged 1-15.
321B: 96 14 LDAA $14 If we branched here we need to load boost, otherwise its program cycles.
321D: B1 37 9C CMPA $379C Compare to limit. Create new variable for threshold.
3220: 24 13 BCC $3235 If MAT < limit, branch. Since rising boost = falling counts.
3222: 96 4D LDAA $4D Load delta Boost
3224: F6 37 9E LDAB $379E Load B with derivative gain value.
3227: 3D MUL Product in Acc D is correction to WG PW.
3228: 4D TSTA If B>255 then A will be non-zero.
3229: 27 02 BEQ $322D If A=0, then branch because B<=255.
322B: C6 FF LDAB #$FF If D>255, set B to 255.
322D: 96 CF LDAA $CF Load WG PW.
322F: 10 SBA A-B=>A, WG PW minus correction. 3230: 24 01 BCC $3233 If modified A (PW) >=0, branch around clear function. Calculated value is greater than 0.
3232: 4F CLRA If new WG PW <0, clear to zero.

Here if Carry was set.
3233: 97 CF STAA $CF Store in WG PW. Value is either 0 or a positive value.
3235: 4F CLRA Prepare for return to code.
3236: D6 CF LDAB $CF Acc B contains modified WG PW.
3238: 7E 38 77 JMP $3877 Return to line below the JMP to this patch.

Ends at $323A

Table ends at $323B

New look up value at $379C for threshold below which controller is turned off.
New look up value at $379E for derivative loop gain value.
 
If you have a conventional chip, any competant chip person can put it in. The Extender has used up all the optional tables.
 
Very nice, Mike. I would quibble that I've not seen a knock problem with tcc lockup but I do prefer to drop the unlock thresholds in 4th.
 
Mike?

If you mean me, I'm Brian.

Seriously, I hope someone tries it out in their car besides me. Its works darn near perfectly and I would like to get the experience of someone who is using higher boost levels, I doubt the same settings would be optimal for someone using 2 radically different boost levels, track and street for instance.
 
Sorry Brian, just didn't remember what BJM translates into. Wonder how going from a stock low boost actuator to a high boost one with the stronger spring will affect your choice of derivative gain?
 
No problem, I can never remember names.

I just finally tried what I thought would be my ideal setting and I get about .75-1 psi overshoot. Teaches me not to change 2 things at once. My threshold is about 12 psi and a gain of 3. The loop doesn't have enough time to do its thing obviously.

I have to buy a 3 bar map sensor soon, I am stuck at 15.5 psi otherwise if I want the controller to work.

As far as a heavy duty actuator goes, as long as you are using high percentages of your solenoid to maintain your setting then the control loop has enough room to make corrections. It can only drop down to 0% to slow the boost down.

Can someone tell me what is used in the Turbo-Link boost harness? Are they using an op-amp to isolate the sensor from the ECM? I am just using some resistors.
 
Originally posted by BJM
No problem, I can never remember names.
Yeah, that's why I really like the way the gnttype list enforces people signing messages with their real names. Why don't people do that here? Doesn't credibility mean anything?
 
Very interesting info. Allow me to chime in on my little project as well as ask some questions if I may.

I have an 87 Fiero with a 3800 Series II engine and a stock GN turbo. Everything is controlled by a 1995 Bonneville PCM since I am using a 4T60-E electronic OD trans.

The PCM I am using is designed to work with a Supercharger, not a turbo, which created its own set of problems. Without going into great detail, the short story is I could not use the throttle body mounted MAF sensor because it did not react properly to boost. The 95 PCM is DIRECTLY compatible with the LT1 MAF sensor so I mounted one before the turbo like the stock GN. However, I was experiencing a stalling problem during spool-down as air bouncing back thru the induction was registering flow and the PCM was shutting off the IAC and doing wacky stuff with the fuel which caused an intermittent stall. To solve this problem I moved the MAF sensor to just before the throttle body and it works perfectly, not to mention throttle response and drivability improved by 200%.

Ok, now the boost control issue. The 95 PCM has an output for a boost solenoid. However, stock, it either commands 100% DC or 0%. It commands 0% Boost DC during decel and reverse. All other times the solenoid is 100%. The problem with this is there is no way for me to control boost electronically thru the chip or PCM. Any boost setting has to be done mechanically, which we all know is not percise.

Many thanks to this thread and BJM because it peaked my curiosity in using some of the tables in the stock chip to alter Boost DC%. I looked thru my disassembly for the $5B code (94-95 L67) and sure enough, there is a couple of tables and values in there that address Boost DC% vs. MAT. If you want me to post these tables I will, but for now I won't because I don't want to confuse anyone reading this thread.

Anyway, I have a few questions. First, you said you are using a 2-bar MAP sensor in place of the MAT sensor? If so, how do you have it wired up? Did you have to redo any other tables in the chip to compensate for the missing MAT sensor? Any info would be appreciated.
 
Darth Fiero

Try looking Here , you will see the same thread. There is a description of the boost harness. My current set up works but not perfectly, I have mismatched impedance between the ECM and the sensor. The op-amp solution will fix that, or the ECM can be modified.

On the GNs the look up tables let you vary duty cycle by RPM and scale it by TPS as well as your basic value. Then in 3rd and 4th gear its scaled back some more by a couple of constants. There are also provisions for scaling it due to excessive knock and being in PE for too long.

Nobody really does anything but fix the duty cycle at a constant value across the RPM band and they normally set the TPS scalar at 1 across the board as well. So your binary operation should be fine.

What my patch does is fiddle with the commanded value after its been calculated to control the rise rate of the boost, it just adds damping to the system. The wastegate will hold boost at the set point and be stable once settled in. It just has no means of anticipating the overshoot, its a purely proportional electro-mechanical control.

I just went beyond the capability of my 2 BAR sensor and my spike is back, although not as bad. More money to spend.
 
Back
Top