Instructions to change fuel maps on 14CUX Griffith, Chimaera

Instructions to change fuel maps on 14CUX Griffith, Chimaera

Author
Discussion

stevesprint

Original Poster:

1,114 posts

179 months

Tuesday 15th November 2016
quotequote all
davep said:
danbourassa said:
...I'm almost convinced that this is a completely useless sub-system and what I think should be done is the removal of the purge valve interrupt and all its related subroutines from the code.

There is one thing that could make me hesitate on this. Has anyone ever had a purge valve fault (code 88) and successfully fixed it by replacing the valve or canister?
Dan, since a good number of TVR owners have pruned the carbon canister and associated purge valve hardware out of the system I would expect fault code 88 to be commonplace. In these cases it's a shame that the 14CUX MPU is overlooked and remains burdened with having to comply with the purge interrupt, monitor HO2S levels, etc, etc, when in closed loop! I've looked for the earliest and most convenient point in the flow to take the purge code out but it's complicated by the fact that the main purge subroutine is called from other places, ECT for instance. Is it possible to simply disable the IRQ2 interrupt by tweaking the four purgeValveInt vectors in vectors.asm or is it hard coded?
You know I fitted 14CUX lambda probes to my Precat but I never fitted a carbon canister. I’ve ran map 5 on numerous occasions and never once experienced fault code 88, I would have noticed as my MIL lamp is connected and working.

Here's my unused purge valve connector

davep

1,143 posts

284 months

Tuesday 15th November 2016
quotequote all
stevesprint said:
You know I fitted 14CUX lambda probes to my Precat but I never fitted a carbon canister. I’ve ran map 5 on numerous occasions and never once experienced fault code 88, I would have noticed as my MIL lamp is connected and working.

Here's my unused purge valve connector
Steve, what's happening to your secondaryLambdaR value in your system, does it vary? (It's a battery backed value so you can check there). This value is used as a reference in the Purge Valve error check in the code, where it is compared with purgeValveValue, which if not in compliance will cause fault 88 to be set.

stevesprint

Original Poster:

1,114 posts

179 months

Wednesday 16th November 2016
quotequote all
davep said:
Steve, what's happening to your secondaryLambdaR value in your system, does it vary? (It's a battery backed value so you can check there). This value is used as a reference in the Purge Valve error check in the code, where it is compared with purgeValveValue, which if not in compliance will cause fault 88 to be set.
Dave
How can I see the values of the secondaryLambda's???

It would be really useful if Colin could display the battery backed up data in RoverGauge.


davep

1,143 posts

284 months

Thursday 17th November 2016
quotequote all
stevesprint said:
Dave
How can I see the values of the secondaryLambda's???

It would be really useful if Colin could display the battery backed up data in RoverGauge.
Here's a solution:

http://scanlime.org/2009/09/dsi-ram-tracing/

Apply to external RAM on the PAL chip.

stevesprint

Original Poster:

1,114 posts

179 months

Thursday 17th November 2016
quotequote all
danbourassa said:
Steve, you're paying attention. That's a great observation that also fooled me initially. What you will find in the code is this:

std  X0053

That location gets modified in several places as the 2nd byte of a 2-byte store.

It seems to me that both throttlePotMinCopy ($0053) and unnamedVariable ($0054) would need to be moved as a pair due to the double store. Locations $00A2 and $00A3 are both unused, so it may be possible to move them here. I mentioned earlier that variables can be freely moved with some limitations. This looks like one of those limitations.
Dan, thanks for your kind words and patience with a beginner, but you’re the one with the experience who knew to look for the long register instruction "std" which explains why $0053 & $0054 would have to be moved as a pair.

I see at start up (reset.asm) throttlePotMinimum is copied to throttlePotMinCopy and then back again to throttlePotMinimum at shutdown to allow room for the ram checksum.

If ramChecksum($0053) is used as a single byte could Mark copy the prom checksum fixer to $0054 in shutdown just before ramChecksum is calculated and store at $0053 and then Mark could test for a prom change in startup before throttlePotMinimum is copied back to throttlePotMinCopy. Just a thought as I'm sure you approach would be easier and safer.

stevesprint

Original Poster:

1,114 posts

179 months

Friday 18th November 2016
quotequote all
Dave or Dan
In the shutDown.asm code below does “Port P13 is condensor fan timer (high = OFF)” drive the Black/Green wire on pin 36 of the main harness that goes to the green/black relay base near the ECU?
;-----------------------------------------
; If ECT and EFT sensors indicate very hot
; turn on the condenser fan timer
;-----------------------------------------
ldaa coolantTempCount ; load ECT sensor count
cmpa hotCoolantThreshold ; value from XC1EF ($14 = 102 deg C)
bcc .shutdownRamChk ; branch ahead if eng temp is cooler than this

ldaa fuelTempCount ; engine is very hot, load EFT sensor count (fuel tmep)
cmpa hotFuelThreshold ; value from XC1F0 ($34 = 70 deg C)
bcc .shutdownRamChk ; branch ahead if underhood temp is cooler than this

ldaa port1data ; Port P13 is condensor fan timer (high = OFF)
anda #$F7 ; ground condenser fan timer to run fans for ~10 minutes
staa port1data

davep

1,143 posts

284 months

Friday 18th November 2016
quotequote all
stevesprint said:
Dave or Dan
In the shutDown.asm code below does “Port P13 is condensor fan timer (high = OFF)” drive the Black/Green wire on pin 36 of the main harness that goes to the green/black relay base near the ECU?
;-----------------------------------------
; If ECT and EFT sensors indicate very hot
; turn on the condenser fan timer
;-----------------------------------------
ldaa coolantTempCount ; load ECT sensor count
cmpa hotCoolantThreshold ; value from XC1EF ($14 = 102 deg C)
bcc .shutdownRamChk ; branch ahead if eng temp is cooler than this

ldaa fuelTempCount ; engine is very hot, load EFT sensor count (fuel tmep)
cmpa hotFuelThreshold ; value from XC1F0 ($34 = 70 deg C)
bcc .shutdownRamChk ; branch ahead if underhood temp is cooler than this

ldaa port1data ; Port P13 is condensor fan timer (high = OFF)
anda #$F7 ; ground condenser fan timer to run fans for ~10 minutes
staa port1data
Yes. BUT the 14CUX loom schematic for our cars shows the timing element for the Fan Control Module being initialised/energised with P13/pin 36 high = ON and permanently earthed. This is probably an error given that:

Fan Control Module (FCM)
The ECM remains powered for approximately five seconds after the ignition is switched to OFF.
During this time, it monitors under-hood temperature through the engine fuel temperature
sensor. If measured temperatures exceed 70° C (150° F), the ECM grounds the fan control
module, allowing the condenser fans to run for ten minutes.

Are you thinking of wiring the fans so that they remain On for a period of time at ignition Off?



Edited by davep on Tuesday 29th November 14:50

stevesprint

Original Poster:

1,114 posts

179 months

Friday 18th November 2016
quotequote all
Dave,

Not me, I’m just trying to help another 14CUX owner.

Do you know how the 10 minute timer works? Is the timer in the relay that plugs onto the black and green relay base? I wouldn’t have thought the ECU also stays powered up for the ten minutes as well.

It would be really cool if we could reprogram Port P13 to make pin 36 a normal thermostat output to control the engine cooling fans.

Here’s a diagram of the timer I ripped off one of your old posts.


davep

1,143 posts

284 months

Saturday 19th November 2016
quotequote all
stevesprint said:
Dave,

Not me, I’m just trying to help another 14CUX owner.

Do you know how the 10 minute timer works? Is the timer in the relay that plugs onto the black and green relay base? I wouldn’t have thought the ECU also stays powered up for the ten minutes as well.

It would be really cool if we could reprogram Port P13 to make pin 36 a normal thermostat output to control the engine cooling fans.

Here’s a diagram of the timer I ripped off one of your old posts.

This should do the trick:

http://www.ebay.co.uk/itm/282189687135?clk_rvr_id=...

The timer function is part of the relay. You'll need to verify the high or low status on pin 36 first.


eisdielenbiker

10 posts

93 months

Tuesday 29th November 2016
quotequote all
Hi,
I am the other 14CUX owner. It is really not only a case of 14CUX software to get the fan running on what a pity. The corresponding port 36 of the ECU is not used in my wiring harness setup. Therefore that relay would help indeed if I would not dread the installation itself.

I have got another topic to discuss. I hope it reveals just as simple math. I would like to change over my Lucas injectors for 3rd generation Bosch injectors. There are possibly no direct flow rate replacements available. The orignals are 185 ccm per minute. There are Bosch injectors at 252 ccm available. As I am not intending to go far beyond stock setup of my 3.9 engine the old flow rate is okay for my engine. If the injectors have too much flow the mixture is directly affected in proportion to the excess flow, isnt'it ? (Lambda closed loop issues taken out of consideration) Is the cure for that problem just to multiply my 16-bit main fuel scaler of actually $5D58 by 185/252 resulting in a new scaler $4486 ? A residual problem could evolve if the duty cyle becomes to short. Is that possible? I dont have my last Rovergauge logs handy to look for the actual minimum cycle. Is there any restriction on the idle mixture of the engine to be expected ?

Thanks
Mark L from Germany


Edited by eisdielenbiker on Tuesday 29th November 14:17

cmb

103 posts

175 months

Friday 2nd December 2016
quotequote all
Hi all,

I just wanted to mention that I'm working on a few fixes/enhancements to RoverGauge and I expect I'll have a new version ready fairly soon.

--Colin

eisdielenbiker

10 posts

93 months

Saturday 3rd December 2016
quotequote all
I am looking forward to this new version as I am still running 0.8.4

stevesprint

Original Poster:

1,114 posts

179 months

Friday 9th December 2016
quotequote all
eisdielenbiker said:
I would like to change over my Lucas injectors for 3rd generation Bosch injectors. There are possibly no direct flow rate replacements available. The orignals are 185 ccm per minute. There are Bosch injectors at 252 ccm available. As I am not intending to go far beyond stock setup of my 3.9 engine the old flow rate is okay for my engine. If the injectors have too much flow the mixture is directly affected in proportion to the excess flow, isnt'it ? (Lambda closed loop issues taken out of consideration) Is the cure for that problem just to multiply my 16-bit main fuel scaler of actually $5D58 by 185/252 resulting in a new scaler $4486 ? A residual problem could evolve if the duty cyle becomes to short. Is that possible? I dont have my last Rovergauge logs handy to look for the actual minimum cycle. Is there any restriction on the idle mixture of the engine to be expected ?
Yes you just need to lower the main table scalar and yes multiply $5D58 by 185/252 sounds logical but I bet it will come down to trial and error.

Here's a quote from Joolz on page 16

spitfire4v8 said:
The fuel map multiplier in my mind changes the time allocated to each bit (normally termed microseconds per bit in other aftermarket ecus). What I have been doing is to massage the fuel multiplier to get the fuelling correct at the richest point on full throttle power runs on the dyno with FF in the load sites passed through during the run, then leaving the multiplier alone and going back and correcting all the other fuel map sites to get the mixture where I want it.
In this way you can maximise the resolution of the fuel map which becomes important when you are dealing with small numbers in the fuel map around idle and trailing throttle.
The multiplier therefore does become engine size dependant because a big engine will draw more air, will require more fuel, or in the case of the multiplier part - more microseconds of fuel squirted per bit.

Make sense to anyone?

CGCobra

49 posts

93 months

Sunday 29th January 2017
quotequote all
Hi again.

Not been on for a while, busy with work and a bit too cold in the garage for 'playing' with the car.
Just bought another ECU, thought it may be easier swapping chips using separate ECUs rather then opening the 'main' one up all the time and also it seems like a good idea to have a backup unit for the future (not to mention got it for a good price). It fires the car up OK and all looks good in RG, then I opened it up and found it has a soldered in chip, not in socket like my original (maybe I just got lucky with that), was a bit peeved by this at first but as I want a lock/unlock holder anyway seems like it shouldn't be too difficult to remove the chip and solder in the locking socket rather than sitting one socket into another.
Obviously I'll probably fry the EEPROM removing it but I'm not bothered about that as I'm going to replace anyway but is there anything else I should look out for?

I also just downloaded RG9.2, I see there is now as setting to allow correction of the road speed, with a multiplier and an offset, this was something I "Wish-listed" a little while back, great to see that there, thanks very much gents. Not been through the new release yet (I was on 8.8 before) I guess there will be other new features, can't wait to get it hooked up to the ECU but looking at getting the body off and doing a bit of work on the oily bits over the next few weeks so may be a little while.
Thanks again guys

stevesprint

Original Poster:

1,114 posts

179 months

Monday 30th January 2017
quotequote all
CGCobra said:
Hi again.

Not been on for a while, busy with work and a bit too cold in the garage for 'playing' with the car.
Just bought another ECU, thought it may be easier swapping chips using separate ECUs rather then opening the 'main' one up all the time and also it seems like a good idea to have a backup unit for the future (not to mention got it for a good price). It fires the car up OK and all looks good in RG, then I opened it up and found it has a soldered in chip, not in socket like my original (maybe I just got lucky with that), was a bit peeved by this at first but as I want a lock/unlock holder anyway seems like it shouldn't be too difficult to remove the chip and solder in the locking socket rather than sitting one socket into another.
Obviously I'll probably fry the EEPROM removing it but I'm not bothered about that as I'm going to replace anyway but is there anything else I should look out for?

I also just downloaded RG9.2, I see there is now as setting to allow correction of the road speed, with a multiplier and an offset, this was something I "Wish-listed" a little while back, great to see that there, thanks very much gents. Not been through the new release yet (I was on 8.8 before) I guess there will be other new features, can't wait to get it hooked up to the ECU but looking at getting the body off and doing a bit of work on the oily bits over the next few weeks so may be a little while.
Thanks again guys
CGCobra
I'm pleased to hear you are back and still playing with the 14CUX. I'm sure if you offer Mark Blitzracing some beer money he'll de-solder the eprom and fit a socket for you.

Sorry, I’m to blame for the poor communications regarding the latest RoverGauge version. At the begin of Jan Colin asked me to test the new speedo re-calibration settings but due to the cold weather I’ve only managed to fire up the new version in the garage, therefore please everyone use with caution as it has not been road tested.

Colin
Please can I take this opportunity to thank you for the new RoverGauge features including the option to display the battery backup data that Dave and I are interested in.
Steve

blitzracing

6,387 posts

220 months

Monday 30th January 2017
quotequote all
If you want to remove the chip- cut its legs off, and use white spirit to dissolve the PCB sealant before removing the body. Then remove the legs one by one and remove solder with a solder sucker. Dont even attempt to remove the chip in one piece as you are likely to damage the tracks.

CGCobra

49 posts

93 months

Monday 30th January 2017
quotequote all
Hi Steve
I'll be testing the speedo' calibration feature when I can but not expecting to be back on the road again until March (and it better be then!) I'm working on getting the body off at the moment as I've got a few jobs to work on down in the guts, not least of which is changing the gearbox and clutch setup. Obviously I'll report back but confident it will be good smile
Just struggling to get time at home at the moment.
That battery backed stuff looks interesting

Hi Mark
Thanks for the advice, that was pretty much as I was aiming to do it (although didn't know about the white spirit bit.
Just waiting on a new solder sucker as mine appears to have gone AWOL, bet it will turn up when new one arrives!

Frol

16 posts

87 months

Wednesday 1st February 2017
quotequote all
Hello! I read all 57 pages of this topic. And 30 days used for Dan's google drive))) But still a have a lot of questions.
I have D1 97 year with 14cux. I want to understand logic of 14cux and may be play a little whith fuel maps. Tune 3604.
Can you explain to me some points according MAF calculation?
Linearizing more or less i understand. But when I try to calculate it manually i get absolutly wronf figures.
Also in prom we have MAF multiplyer, but i can't understand where it used?
And table 3x8 for MAF I can't understand what for? How it used for servicing maf?
Also i get problem with cold start in -32C- to reach. So I want to fix it a little, but this questions later ))))

COtrim also one thing, Value going to LT correction. Is it affect for all RPM table?


Thanks in advice.

PS: Sorry for my English, it's not my native language.


Edited by Frol on Wednesday 1st February 08:07

davep

1,143 posts

284 months

Thursday 2nd February 2017
quotequote all
Frol said:
... Can you explain to me some points according MAF calculation?
... Also in prom we have MAF multiplyer, but i can't understand where it used?
Frol, do you mean Fuel Map multiplier? If so it's used as part of Phase 1 Fuel Value Compensation:
Phase 1 Compensation
At this point, the uncompensated 16-bit fuel value is calculated and is in the AB register set. The range of this value is
determined by the range of values in the fuel map. For example, if the lowest and highest values in the fuel map are $14
and $FF, the range will be $1400 to $FF00 or 5120 to 65,280 decimal.

When the 16-bit multiply routine is called, it multiplies AB by the value in X00CA/CB. The earlier calculated compensation
factor (time, temperature, throttle & Lambda) is currently in X00CA/CB.

These are the steps that happen here:

1) Mpy uncompFuelInjValue by X00CA/CB (fuel map value by compensation factor)
2) Mpy value by 4X but limit to $FFFF
3) Mpy by fuel map multiplier (previously stored in X2008/09
4) Double the value
5) Limit to $FF00

.LE967 std uncompFuelInjValue ; save new fuel value here for use next time
jsr mpy16 ; mpy AB by X00CA/CB
asld ; double the value (MSB becomes carry)
bcs .LE972 ; if value > $FFFF, branch ahead to limit to $FFFF

asld ; double the value again
bcc .LE975 ; limit to $FFFF again, else branch ahead

.LE972 ldd #$FFFF ; limit value to $#FFFF

.LE975 std $00CA ; store for multiplication with fuel map multiplier
ldd $2008 ; fuel map multiplier value
jsr mpy16 ; mpy AB by X00CA/CB
asld ; double the value (MSB becomes carry)
bcc .LE983 ; branch if carry clr

ldd #$FF00 ; limit value to $FF00 (65280 dec)



Edited by davep on Thursday 2nd February 09:53

Frol

16 posts

87 months

Thursday 2nd February 2017
quotequote all
davep said:
Frol, do you mean Fuel Map multiplier? If so it's used as part of Phase 1 Fuel Value Compensation:


Edited by davep on Thursday 2nd February 09:53
Hello! No, i mean this- TABLE 1-5 MAF Scalar Offset at 0x1C7 in prom.
Also about COtrim am I right that in general it's same like change Fuel Map multiplier? All map is changing?