Firmware and MegaTune patch for 1.0.23 - ALS, Launch control, Soft revlimiter, etc
With this modification, the current ALS code reworked a little to meet racer's needs. Several options implemented, whose you see only on expensive professional systems before. Take a look to the setup window:
Let me explain the config variables:
Global settings
- Low RPM: ALS (retard, enrichment, spark-cutting) is disabled below this rpm to avoid engine stalling (you don't need this on a working system, only while experimenting). Suggested value: near your idle RPM without enabled ALS. Easy to misunderstand this. ECU will NOT try to maintain this "low-RPM" . ECU simply disables ALS below this RPM, which - depending on ALS setup might or might NOT result in maintaining this RPM. Eg you might not supply enough air to reach it and than RPM will be below this low-RPM. Not reached in normal operation (RPM kept above this; only to make engine-stall in strange conditions less likely)
- Deactivation time: ALS disabled after the specified interval. Suggested value: 5-15 seconds. set always!
- Deactivation EGT: ALS disabled if exhaust gas temperature is over the specified limit. Suggested value: 800 degrees Celsius. (under the melting point of your exhaust system material...) set always!
- Reactivation Minimum TPS: After deactivation (time elapsed), you only need to open throttle wider than this value to re-activate the ALS. Suggested value: 70-80%. Always set this higher than all 'Decrease end TPS'-es!
- Fuel enrichment: The fuel surplus while the ALS is active. Suggested value: 15-25%.
- Throttle kicker solenoid: Define an output channel if you have one (always-open-throttle-racecar-owners simply disable and forget this option :-) ). The firmware automatically release the TKS if the conditions disabled the ALS, even the ALS switch is on.
Igniton retarding and spark cutting is done as seen of the figure:
Note: the horizontal axis is labelled TPS, don't think that is RPM!
Ignition Retarding
- Maximum retard: The maximum ignition retarding value needed when you release the pedal. Suggested value: The highest ignition advance value plus 5-10. Zero disables retarding.
- Decrease start TPS: The maximum throttle opening you want to use the maximum retard. Suggested value: The TPS value you read with active throttle kicker plus 10-20%.
- Decrease end TPS: The minimum throttle opening you don't want to use ignition retarding. Suggested value: Set the minimum throttle where the engine can produce the desired boost. It must be 40-60%, or you need to re-think your engine implementation. If you set this too low: the turbo lag will be bigger. If you set this too high: the engine will be too weak.
Spark Cutting
- Maximum cut level: Percentage of sparks to be 'cut' (dismiss the event). The maximum ignition cut value needed when you release the pedal. Suggested value: 20-30%. Zero disables spark cutting.
- Decrease start TPS: The maximum throttle opening you want to use the maximum cut level. Suggested value: Simply set the TPS value you read with active throttle kicker. Add more 5%, when needed.
- Decrease end TPS: The minimum throttle opening you don't want to use ignition retarding. Suggested value: 10-20% bigger than start TPS.
You can enable ALS functions in my_make:\nÿ1ÿ
Override default maximum 20 degree ATDC limit:\nÿ2ÿ
The patch contains implementation of three new soft revlimiters. Soft revlimiters cut spark instead of cutting fuel if the desired maximum rpm are about to beaten. These are used for idle control, launch control and redline control. Idle control is TPS sensitive, and disabled, if ALS enabled and working. Launch control can be enabled with a button on the steering wheel, and it can be combined with the ALS. Redline control is for normal overrun protection without unsafe lean run, which is essential for the turbo engines. All (soft)revlimiters in one window:
And there is a little explaining about these.
Idle control
Used on racecars, where no other methods (IAC stepper, PWM solenoid) can be applied, especially where always open throttle is needed. The main function is to limit the rpm on a reasonable low range, when the pedal is depressed, and ALS is not active. See the figure.
- Enable: Enable or disable sparkcut based idle control.
- Minimum RPM: The operational range starting rpm. Suggested value: 800-1000.
- Maximum TPS: The maximum TPS where the idle control allowed to operate. Suggested value: The idle TPS value (0% in normal case), or add more 2-3%.
- Control range: The operational range. Suggested value: 200-300.
You can enable spark-cut based idle control in my_make:\nÿ3ÿ
Launch control
Used on start line, to achieve best performance with the less effort. Driver must press gas pedal to 100%, and press a button on the wheel. Launch control routine need to limit the rpm into a desired range, while the button pressed, and allow ALS to work (ALS normally disabled on so high TPS). See the figure how it is achieved:
- Minimum RPM: The operational range starting rpm. Suggested value: The highest torque rpm, or whatever.
- Control range: The operational range. This one can be set via the control range of the redline control. Suggested value: 200-500.
You can enable launch control in my_make:\nÿ4ÿ
- TODO: How to configure button input
Redline control
Simple sparkcut-based revlimiter, used below the hard RPM limiter, as you see on this figure:
- Minimum RPM: The operational range starting rpm. Suggested value: Hard rpm limit minus the control range.
- Control range: The operational range. Suggested value: 200-500.
You can enable launch control in my_make:\nÿ5ÿ
If you are understand and accepted the warnings generated in compile time, when using SOFTRPM based new functions, you can disable them with the following line in my_make:\nÿ6ÿ
Fero's ALS related suggestions
- under testing in stable1_1: +64 -64 degs of ignition window
- DONE in stable1_0: The retard degrees should be set from 0 degrees, instead of the actual ignition table setting.
- HMM: We could not confirm this: idle mode. It's important when using always a little opened throttle plate for extra air. So than the ECU holds the idle RPM via soft idle ignition cut. When the ALS is turned on than the ECU should be in ALS mode until the time limit is reached, even if TPS is 0% ! When the time limit is reached, than should be go into idle mode and hold the idle RPM. If i understand good, now the ECU turns off ALS if the TPS is 0%.
- no, it does not turn off ALS, it turns off the throttle kicker activation (when TPS released). It will leave throttle kicker on , see below
- DONE: Solenoid open all the time, when ALS switch is on. Solenoid is only switched off if any safety variables exceeded.
- POSTPONED: Solenoid PWM current limiting for high current solenoids.
- POSTPONED: smooth RPM range at the low RPM settings, (so ignition cut and the retard changes back smoothly). low-RPM is only a safety feature, not reached in normal operation.
How to disable ALS
The below config snippet (variables directly available since 1.0.32) disables ALS: (and kpa_conf configures reasonable unit for KPA-pressure related variables, 2 kPa for kpafac and 1 kPa for other variables including the k[] bins). kpa_conf=22 applies for the high-boost megatune profile (config units is 2kPa everywhere), for an engine that needs further retard and VE-increase above 256 kPa MAP (with this, engine mappable upto 510 kPa, above which further retard or VE-increase is not possible, but injector pulsewidth will continue to grow proportionally with even higher MAP of course).\n
als_cut_maxtps=00 als_cut_mintps=FF als_deact_egt=00 als_deact_rpm=FF als_deact_time=01 als_enrich=00 als_max_cut=00 als_react_tps=00 als_retard=00 als_retard_maxtps=00 als_retard_mintps=FF als_tks_channel=FF als_rev_limit=40 ign_balance=00 kpa_conf=21
Here is the quick path to start upgrade from a pre-ALS firmware to an ALS firmware. This minimizes the chance to get bitten by serious unintentionaly retard accidentally activated.
- save the above config snippet as config.txt
- save the (Man)mct dump to etc/mct.txt
- save the (Man)mcd dump to etc/mcd.txt (these will not have als_.. variables since you've started from a pre-ALS firmware)
- run make mtt (make_config.bat or whatever. It effectively runs perl bin/make_conf.pl global.h etc/config.txt etc/config.mtt command
- Any value in etc/mcd.txt will take priority over etc/config.txt
- TODO: verify if wintools notices etc/mcd.txt and uses the values to override the etc/config.txt
- save the error/output and examine any variables with warning or error
- upload etc/config.mtt to the ECM
Uploading the tables is similar (although it can be done from MegaTune - Remember to use a recent MegaTune for the ALS firmware):
- perl bin/make_tables.pl global.h etc/config.txt etc/config.mtt command
- upload the etc/tables.mtt
We tried 1.0.63,and its not working.With the same retard entered into launch control the car makes crazy laoud popping and flames,with als is just tries to maintain the low rpm entered,no matter what the air volume is (different tps positions).
Looks like something is not working in the als code,further (hopefully personal ) investigation needed.
-- What Retard are you running? -60 degrees is probably way too much and will cause engine to run bad, if not break down.
Tried with -20 as this engine should have?
ALS is de-activated under the low-rpm as you know, and thereof starting to run under that threshold, goes back above the threshold, then either killed by bad code or way too much retard. Please enclose details to any further tests, like config and engine details, i presume 4valve audi engine. 2 valve engines doesnt need as much as 20 DATDC timing.
// Emil Larsson
//Emil
tried -20 -40 -60 degs ,the less retard entered,the less ALS boost is produced,but marginally no change in als behaviour.Look,we programed approx 10 cars with ALS,i know what an engine like this needs,also spoke with Hungarys 2 fastest audis (10.4 and 10.8 on 1/4) and they also use -40 -50 degs ignition during ALS.Also im able to test the als code on 6 SAME ENGINED audis,all with coil type triggers work well,but the N-1 one looks not ok.
With real -60 degs there should be an insanely laud bumm coming from the exhaust WHICH IS HAPPENING WITH ONLY -20 -25 AT LAUNCH activated (60 retard entered, so appr 40-60=20ATDTC!
With ALS at >40 ATDC retard the engine torque weakened so much that it revs down to the point (low-RPM=3000 in your config as you said) =>IT LEAVES ALS !!! So it does not apply retard any more under low-RPM.
- move low-RPM lower, and operate ABOVE low-RPM
- only use retard that is still able to keep RPM above low-RPM
- maybe try to add slighlty more air if needed
//Fero
I think we definitely need the separated low RPM settings with RPM tresholds. If you want hi boost in ALS mode the you need high retard and much air. So the engine will not lost the RPM.
- We need cut the ignition, with an adjustable RPM range,but the retard should stay. So the RPM will fall but the boost will be there. For example, we retard above 1500 RPM, and start the IGN cut at 3500 RPM with an adjustable treshold.
- So when we release the throttle, and the rev is high, the engine goes into ALS mode. Retard and cut the ignition. It will run at about 3500 RPM, according to the IGN CUT RPM TRESHOLD and the IGN CUT RPM limit settings. But it stay retarded too! So the turbo'll boost. The RPM does not go below 3500 until the time limit reached.
- When it reached, the ALS mode is turned off, and RPM is limited by the fuel cut RPM limiter.
- We need a treshold for the retard too, for the smooth change. And also i suggest set the retartd from TDC absolute.
Treshold means, RPM ranges. So the Ign cut not apllies soon, but we could set an RPM range, for example 1000 RPM treshold, while the IGN cut starts, and reaches the maximum cut setting. And the same thing for IGN retard. But with another treshold setting. The retard start from 0 deg and slowly reaches the maximum retard that is set. So 2 variables, and 2 tresholds is needed i think. And the ALS mode turned off only when the time limit is reached. Until that the RPM settings do the things.
So i think we need low RPM variables and tresholds for ign retard and ign cut too. Beleive me, all the rally cars and wrc-s uses theese method for ALS, and this is configurable for drag race too. I've tuned several cars for this way. No stalling at all. RPM hold while boost at wherever you want, and idle mode comes only when the time limit reached.
- Low RPM limit
- Changed to be a minimum rpm to maintain using sparkcut, Air is added with the solenoid to stay enough above this RPM target, so with als function active, this rpm stays as a low side revlimiter
- Deactivation time
- Still needed
- Deactivation egt
- Still needed
- Reactivation min tps
- Still needed
- Fuel enrichment (%)
- Still needed, possibly also slowly removed at the same rate as retard?
- Maximum retard
- Still needed
- Retard decrease start tps
- Still needed
- Retard decrease end tps
- Still needed
- Spark cut max %
- SC decrease start tps
- SC decrease end tps
- ALS mode new idle tps%
- rpm range relative to the spark cut low rpm
- Spark retard low RPM
- Spark retard range relative to the spark ratard low rpm