MS1 AC Idle-Up Code Hack
#1
Elite Member
Thread Starter
iTrader: (4)
Join Date: Mar 2008
Location: Granbury, TX
Posts: 6,301
Total Cats: 696
MS1 AC Idle-Up Code Hack
The lack of an AC idle-up feature on the MS-1 is a real PITA, especially here in Texas in July. I've tried all the tricks listed in the stickies. For the most part, they "help" but aren't enough to solve the problem of AC idle droop (compounded, no doubt, by my 1.6 and R-134A conversion).
Most of you have gotten smart by now and moved on to MS-2 or 3. But I'm stubborn and cheap. Aside from the AC idle issue, I'm happy with my MSPNP -- it's served me well for years. Given that I'm already doing spark and fuel table switching based on AC clutch engagement (Pin 1J on the 90-93s), how hard could it be to add an idle-up?
As it turns out, not hard at all. But be advised, this is a code hack. One of the great things about MS is that it's "open-source." But that's a double-edged sword. If you're not comfortable with writing software, compiling, loading, etc. -- you probably better steer clear. Otherwise, the change is surprisingly easy.
Prerequisites: The only prerequisite for this change is to mod the MS to perform spark/fuel table switching based upon AC clutch engagement. This is covered in the stickies. More than likely, if you've been struggling with AC idle droop, you've already done this.
Basic Concept: What we are going to do in the software is monitor the input being used to switch the spark table and use it to bump up "Minimum DC" when the input is active. This provides an instant source of extra air to increase idle speed when the AC clutch is engaged. You'll have to experiment with how much bump-up you need (it's hard-coded). In my case, I'm bumping up 11 (from "19" to "30"). This amount of DC gives me about 1000RPM with AC+lights+maximum fan and about 1150RPM with AC+medium fan (my normal closed-loop warm idle target is 900RPM).
The code I started with was the standard MSPNP9093 software, MS1 Extra Version 029v. The attached zip contains both the original MS1 Extra 029v and the modified version. If you're not using 029v, you can at least take a look at what I did and make similar changes in your codebase (the idle code for all MS1 software versions should be similar). My modifications consist of:
1. A small routine called "Idle_done_CL" that is called instead of the normal "Idle_done" when any of the closed-loop idle functions finish. "Idle_done_CL" loads either "minimum DC" or an incremented "minimum DC" (depending upon the state of the AC clutch input) into register A and ensures that variables "Idledc" and "IdleLastDC" are at or above the dynamically set minimum. "Idledc" is the variable that directly controls the output to the idle control valve. "IdleLastDC" is a state variable that gives the idle routine a better starting point after an off-idle excursion. "idlemindc_f" is the "minimum DC" that you set in the closed-loop idle dialogue in MegaTune or TunerStudio.
The following WinMerge screen capture shows "Idle_done_CL":
2. Four places where "Idle_done" is changed to "Idle_done_CL":
That's it!
So, how does it work? Here are some MegaLog graphs:
This log shows the AC being turned ON and then turned OFF. With the turn ON, you can see the immediate jump in spark angle (from the spark table switching) and idle DC (from the code hack). There is little change in RPM upon engagement, it just smoothly increases from ~900 to ~1150. Upon turning OFF, spark angle returns to normal immediately but idle DC decrements more slowly under the control of the closed-loop idle algorithm. This results in a bit of an RPM increase followed by the re-establishment of a normal idle RPM.
This log shows idle recovery after a throttle blip with the AC OFF (just showing this to establish a baseline -- note the droop to ~750RPM before smoothly recovering to ~900RPM):
This log shows idle recovery after a throttle blip with AC ON, Lights OFF and Fan Speed Medium. Idle speed droops to ~800RPM before recovering to ~1150RPM.
This log shows idle recovery after a throttle blip with AC ON, Lights ON and Fan Speed High (worst case scenario). Idle speed droops to ~700RPM before recovering to ~1000RPM.
So, there you go! Works pretty well for such a simple hack.
Most of you have gotten smart by now and moved on to MS-2 or 3. But I'm stubborn and cheap. Aside from the AC idle issue, I'm happy with my MSPNP -- it's served me well for years. Given that I'm already doing spark and fuel table switching based on AC clutch engagement (Pin 1J on the 90-93s), how hard could it be to add an idle-up?
As it turns out, not hard at all. But be advised, this is a code hack. One of the great things about MS is that it's "open-source." But that's a double-edged sword. If you're not comfortable with writing software, compiling, loading, etc. -- you probably better steer clear. Otherwise, the change is surprisingly easy.
Prerequisites: The only prerequisite for this change is to mod the MS to perform spark/fuel table switching based upon AC clutch engagement. This is covered in the stickies. More than likely, if you've been struggling with AC idle droop, you've already done this.
Basic Concept: What we are going to do in the software is monitor the input being used to switch the spark table and use it to bump up "Minimum DC" when the input is active. This provides an instant source of extra air to increase idle speed when the AC clutch is engaged. You'll have to experiment with how much bump-up you need (it's hard-coded). In my case, I'm bumping up 11 (from "19" to "30"). This amount of DC gives me about 1000RPM with AC+lights+maximum fan and about 1150RPM with AC+medium fan (my normal closed-loop warm idle target is 900RPM).
The code I started with was the standard MSPNP9093 software, MS1 Extra Version 029v. The attached zip contains both the original MS1 Extra 029v and the modified version. If you're not using 029v, you can at least take a look at what I did and make similar changes in your codebase (the idle code for all MS1 software versions should be similar). My modifications consist of:
1. A small routine called "Idle_done_CL" that is called instead of the normal "Idle_done" when any of the closed-loop idle functions finish. "Idle_done_CL" loads either "minimum DC" or an incremented "minimum DC" (depending upon the state of the AC clutch input) into register A and ensures that variables "Idledc" and "IdleLastDC" are at or above the dynamically set minimum. "Idledc" is the variable that directly controls the output to the idle control valve. "IdleLastDC" is a state variable that gives the idle routine a better starting point after an off-idle excursion. "idlemindc_f" is the "minimum DC" that you set in the closed-loop idle dialogue in MegaTune or TunerStudio.
The following WinMerge screen capture shows "Idle_done_CL":
2. Four places where "Idle_done" is changed to "Idle_done_CL":
That's it!
So, how does it work? Here are some MegaLog graphs:
This log shows the AC being turned ON and then turned OFF. With the turn ON, you can see the immediate jump in spark angle (from the spark table switching) and idle DC (from the code hack). There is little change in RPM upon engagement, it just smoothly increases from ~900 to ~1150. Upon turning OFF, spark angle returns to normal immediately but idle DC decrements more slowly under the control of the closed-loop idle algorithm. This results in a bit of an RPM increase followed by the re-establishment of a normal idle RPM.
This log shows idle recovery after a throttle blip with the AC OFF (just showing this to establish a baseline -- note the droop to ~750RPM before smoothly recovering to ~900RPM):
This log shows idle recovery after a throttle blip with AC ON, Lights OFF and Fan Speed Medium. Idle speed droops to ~800RPM before recovering to ~1150RPM.
This log shows idle recovery after a throttle blip with AC ON, Lights ON and Fan Speed High (worst case scenario). Idle speed droops to ~700RPM before recovering to ~1000RPM.
So, there you go! Works pretty well for such a simple hack.
Last edited by hornetball; 07-06-2013 at 09:05 PM.
#2
Elite Member
Thread Starter
iTrader: (4)
Join Date: Mar 2008
Location: Granbury, TX
Posts: 6,301
Total Cats: 696
Spent the last couple of hours driving around DFW. Killer heat today (about 100F). Ran into lots of stop and go traffic and did a couple of hot restarts after stopping for errands. This mod is awesome. Back to OEM AC drivability. Should have done this years ago. I would say that this is THE fix for MS1 AC idle.
#4
Elite Member
Thread Starter
iTrader: (4)
Join Date: Mar 2008
Location: Granbury, TX
Posts: 6,301
Total Cats: 696
Yeah, I should have gotten off my rear and done this a couple of years ago. Probably would have helped a lot more people as MS1 was more mainstream then. It seems I'm one of the last MS1 holdouts.
#9
Elite Member
Thread Starter
iTrader: (4)
Join Date: Mar 2008
Location: Granbury, TX
Posts: 6,301
Total Cats: 696
Yeah, getting directly into the MS software is pretty hard-core customization.
Anyway, should be similar on an MS1 on another engine. Just remember that the 1.8 IACV is a different device from the 1.6, so the fixed amount you bump up for AC idle (all the inca statements) will definitely be different.
Get over to the DIY site and familiarize yourself with how you compile and burn the code. They have some pretty good instructions over there.
Anyway, should be similar on an MS1 on another engine. Just remember that the 1.8 IACV is a different device from the 1.6, so the fixed amount you bump up for AC idle (all the inca statements) will definitely be different.
Get over to the DIY site and familiarize yourself with how you compile and burn the code. They have some pretty good instructions over there.
#10
Moderator
iTrader: (12)
Join Date: Nov 2008
Location: Tampa, Florida
Posts: 21,026
Total Cats: 3,123
MS1 + A/C guy here, too. I missed this thread originally so I'm glad it was bumped. I may try futzing with this on the 1.8 at some point soon. I never used table switching on mine and still got it working pretty well just manipulating idle settings and dashpot adjustments.
Swim, definitely post an introduction thread so we can get to know you.
Swim, definitely post an introduction thread so we can get to know you.
Thread
Thread Starter
Forum
Replies
Last Post