Alfa Romeo Forums banner
581 - 600 of 817 Posts
The ML4.1 certainly doesn't have the smarts in it's code to talk to an immobiliser system, a "kill switch" would be a better way to describe it.
There's no communicatoin on that pin, just a simple check to see if it's off or on when the engine starts cranking and that's all it does.

My interest in this was because I needed a spare CPU I/O line, and there aren't any. In the last day or two I've re-written the "RT upload" routine and made a few circuit changes, and by borrowing the immobiliser's CPU pin I've overcome the problem that's been stopping me from going any further with the real-time system (and the immobiliser should still work, too).

So this afternoon for the first time I was able to tune the maps while the (simulated) engine was running, without corrupting the eprom or crashing the CPU:cool:
This is a major breakthrough, for the last few months I've been thinking that the RT system would have to be limited to uploading only while the engine was stopped, and I wasn't real impressed with that idea.
I held off sending out the beta test modules because of this issue, there was too much risk of the ECU becoming corrupted by "user error" (i.e. starting the engine at the wrong time) but looks like I'm back on track again...

There's still a few bugs that I need to resolve, but it's looking very promising right now.
 
And here's the proof - with the engine "running" at a steady rpm, I changed the dwell map's cell that corrisponded to the current rpm/battery voltage (using the data tracing "bubble" to identify the right cell) - and the log shows the result.
Of course I wouldn't recommend fiddling with the dwell normally, but this isn't hooked up to a real engine so I just picked a table to mess with that would show clear results ;)
 

Attachments

Discussion starter · #583 ·
For a 4-cylinder engine's (point's type of) distributer, the dwell is a bit over 45 degrees. Apparently this out the window with electronic ignition?

Can I assume that this affects both TS distributors simultaneously?

Neat stuff!
 
Umm yeah, good point ;)
The motronic aims for about 6ms dwell across the board, the dwell table is used to tell the ECU how early in the cycle it needs to start charging the coil to hit the target dwell time (higher rpm means start charging earlier in the rotation) and the battery voltage is taken into account because lower voltage means more dwell time is needed.
As each crank tooth "event" is seen, it looks up when it should start charging the coil and compares that to where the crank currently is - the dwell "switch on" point greater or equal to the "ignition firing" tooth, it starts charging the coil.
I'll have to re-visit the dwell function to see what a sensible unit/conversion is, but I'm sure it's not represented correctly at the moment ;)

And yes, it's the same for both coils because the ECU doesn't actually know there's two ignition systems paired up together.
 
I've put together a very basic XDF for the Alfa 33 1.7 16v w/cat.
ECU #0.261.200.147, chip #1.276.256.292
This is for the unleaded version, with O2 sensor and closed loop operation.
This is the configuration supplied to the Australian market, not the more common Euro market '142 ECU.

It covers basic things like eprom checksum, soft/hard rev limiters, idle speed, dwell etc.
Full and part throttle fuel and ignition maps are there too, but I haven't matched them to the 4 personality modes yet (high/low octane, cat/no cat) but anyone with one of these ECUs and an eprom burner should be able to work that out in no time - or just set all 4 sets of maps the same, then it doesn't matter ;)
Most of the other maps are defined, but some of their axis data and conversion formulas are missing/incorrect.
Think of it as a starting point for anyone who wants to work on refining an xdf for this ECU :eek:

Here are the XDF and bin files - please send any additions/corrections/etc to me and I'll update the original file.
 
And here's something I've been working on recently, perfect for the nannas :D
It's a customised firmware for the TS - not a major re-write, but has some nice features compared to the factory chips.
I'm calling it version '160S - S for Sports, Simple, Silly, Super... you pick ;)

* Real-time tuning support (needs RT hardware, so not just yet...)
* Simplified tuning - only the maps and settings of interest to a DIY tuner are needed, much easier to understand and quicker to tune.
* WOT ignition map has been expanded (doubled to 32 points), now supporting up to 7600 rpm with tuning points every 200 rpm for 1-5k rpm, then by 240 rpm steps to 7600. The original was 16 points with a max of 6k.
* Cat/no cat is selected from the S30 plug, but uses the same set of maps as non-cat (so tune to your needs)
* DTC (error codes) are all defined, and can be individually disabled.

Plus some other stuff that I forget just now ;)
I've got some final bench testing to do before I upload it, but here's a pic of the Tuner Pro menu that shows all the tuning parameters as well as the extended timing map.
 

Attachments

Discussion starter · #587 ·
Can everyone read this? With a bit of tweaking in Photoshop I can make out some of it. I really like "Desired idle speed" which implies to me that you might not actually get it, but festy has done his Very Best.

No, not remotely picking it apart. From what I can read, it looks like a very nifty solution for us 'unwashed' (non-pocket protecter group).

It appears to be a very elegant - plain English - solution. Why don't they write it like this in the first place? Job security?
 
Here's a list of the tuning options, is this more readable?
I've omitted the AFM and DTC items from this list, as they're probably of little interest to most people.

TABLE = map object (i.e. ignition map etc)
SCALAR = a number you can set (i.e. rev limiter, set to desired rpm of limiter)
FLAG = on/off selection (i.e. soft rev limit enable - untick that to disable the soft rev limiter)

Code:
FLAG: Checksum disable                                                   Set
FLAG: Rev limit - Soft rev limit enable                                  Set
SCALAR: Low rpm enrichment time after start (s)                             57
SCALAR: Max RPM for low speed enrichment                                   800
SCALAR: Minimum idle speed - A/C                                           840
SCALAR: Rev limit - hard                                                  6592
SCALAR: Rev limit - soft                                                  6320
SCALAR: Rev limit - Soft rev limit timer                                  1.50
SCALAR: Startup enrichment time (seconds)                                   57
SCALAR: VVT - cutoff RPM limit                                            5000
SCALAR: VVT - lower RPM threshold                                         1280
SCALAR: VVT - max RPM to enable                                           4840
TABLE: AE - enrichment for AFM +delta
TABLE: Desired Idle speed
TABLE: DFCO lower limit
TABLE: DFCO upper limit
TABLE: Idle target AFR
TABLE: Ignition advance - engine startup
TABLE: Ignition dwell (RPM vs batt V)
TABLE: Ignition Part throttle (VVT off)
TABLE: Ignition Part throttle (VVT on)
TABLE: Injector dead time (vs Batt V)
TABLE: Part throttle fuel (VVT off)
TABLE: Part throttle fuel (VVT on)
TABLE: RPM negative delta
TABLE: VVT load activation threshold
TABLE: VVT load deactivation threshold
TABLE: WOT fuel
TABLE: WOT Ignition
And that's it - probably simpler than tuning and balancing a set of webers :confused:

I was reading some of the old posts in this thread recently, and was reminded of the comments requesting an uncomplicated way of basic DIY tuning that didn't require a steep learning curve - so thought I'd give it a go...
 
It will work fine with the ML4.1 164 TS (with some map adjustments), and could probably be made to work with the 33 (disable VVT related DTCs, compensate for different AFM/injector/VE etc) but it would probably be less work for me to just make a 33-specific version. :eek:

There's not too much work involved in this, so if the TS version works as it should, I'll look into making some others.
 
That's great festy, luckily I still have my 33 16v and a spare ECU, too bad you didn't appear before, I had to use Megasquirt when I tuned the engine up with new cams and fuel injectors, tuning with alpha-n only (due to the itb's) wasn't very easy, plus I lost idle control wich I wanted for the air conditioning use.
 
I've been bench-testing "160S" and it's looking promising, I just need to fix a few things with my engine simulator harness to stop the ECU going into limp home mode from bad sensor signals ;)

Last night I added another feature which some here will appreciate - seeing as the high/low octane selection pin on S30 isn't needed anymore, I've found a good use for it.

When the engine is running, if "low octane" is selected at the S30 plug it now transmits high speed engine data out the diagnostics pin, perfect for datalogging.
It's not using the normal communications protocol so there's no need for request/acknowledge messages or the big delays that the protocol causes - it just pumps the data out as fast as it can.
You can open Hyperterminal and just watch the data pouring in ;)
I haven't written anything to actually display the data yet, so more on that later...
 
Festy, this thread has gotten absolutely huge! Awesome work! :D

Quick question and I'm pretty sure the answer will be 'yes', but do you think it is possible to replace the vane/flap AFM with a hot film AFM?

With all of the work you've done, it makes the idea of a turbo'd 75TS a very appealing 1! But in order to keep the volume between the AFM and the TB consistent, to maintain factory acceleration enrichment characteristics, I'm thinking that the set up would need to use a blow through AFM arrangement.
That would also help to make the set up more compact (AFM in front of the turbo would be a bit awkward to package nicely and 'no' I don't like the factory turbo set up ;)).
 
Yes, I think it's possible. The AFM curve is tunable, so you could either try and calculate the required curve in advance, or just hook up a wideband and tune it bit by bit until you find the curve that suits best.
I wouldn't even attempt this with a standard eprom setup, but with an RT module or an emulator you could dial it in with a laptop while the car was being driven around.
The 3rd option would be to stick the MAF in-line with the AFM, and log the voltages of both as you drove around for an hour or so. That would pretty much give you the curve you'd need.

The AE map would probably need some tweaks due to the difference in delta reaction speed, and the IAT bias map for the AFM would need to be zeroed but apart from that it would just take a bit of time and effort to tune.

I'm not sure exactly how well a MAF conversion would/could work, but I'd expect that a reasonable result could be reached.
 
Another pic of a datalog, this one shows the ignition advance being "tuned" in real-time while the engine is running.
I changed the part-throttle ignition map, knocking about 10* off the timing - then decreased the timing again by 10* a few seconds later.

This test was done using (RT-modified) '191 factory firmware, but works just the same using my 160S version.

So I think I can finally say ML4.1 real-time tuning is a reality :D
 

Attachments

Kewl!!!

What emulator are you using? I always thought the Moates Ostrich 2 look like some **** good value for money. Nearly went that path in the Nissan days.
 
I've sent the revised RT circuit board design off for fabrication, it will probably be a few weeks before I get the PCBs back due the christmas/NY interruptions :(
While I'm waiting I'll get to work on modifying some 12v v6 and 33 files for real-time use, the re-designed module should fit in these ECUs neatly.

I've started poking around inside the 164's 3.0 24v firmware, my initial feeling is that DIY tuning shouldn't be too far away for it...
 
So you've created your own RAM based interface then, to do your real time tuning?
 
581 - 600 of 817 Posts