Is your CL Idle Hit or Miss?
#1
Retired Mech Design Engr
![](/mt2011/images_td/ranks/supporter1.gif)
Thread Starter
iTrader: (3)
Join Date: Jan 2013
Location: Seneca, SC
Posts: 5,011
Total Cats: 859
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
For MS2 and MS3. Definitely applies to MS3 FW 1.3.4, and earlier.
Does your engine "randomly" not catch closed loop idle?
Sometimes after start, or just going to idle, does it sometimes drop RPM reall low or stall?
The problem may be the IDLE Delay(s) setting. This setting, (see pic below) must be set to at least "2", [not "0" or "1"] to function reliably.
According to muythaibxr over on MSEXTRA, this is a timing issue in the code.
![](https://www.miataturbo.net/attachments/megasquirt-18/140903-your-cl-idle-hit-miss-80-capture_75a43629978f32c98ec5f98820de7efa5c5a876a.jpg?dateline=1433251369)
Yeah to easier Image Upload![Party Kitty](https://www.miataturbo.net/images/smilies/birthday[1].gif)
Does your engine "randomly" not catch closed loop idle?
Sometimes after start, or just going to idle, does it sometimes drop RPM reall low or stall?
The problem may be the IDLE Delay(s) setting. This setting, (see pic below) must be set to at least "2", [not "0" or "1"] to function reliably.
According to muythaibxr over on MSEXTRA, this is a timing issue in the code.
![](https://www.miataturbo.net/attachments/megasquirt-18/140903-your-cl-idle-hit-miss-80-capture_75a43629978f32c98ec5f98820de7efa5c5a876a.jpg?dateline=1433251369)
Yeah to easier Image Upload
![Party Kitty](https://www.miataturbo.net/images/smilies/birthday[1].gif)
![Party Kitty](https://www.miataturbo.net/images/smilies/birthday[1].gif)
#3
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
YES!!
So wait, it needs to e HIGHER? ughhhhhhhhhhhhhhhhhhhhhhhhh
And here I've been messing with this for weeks thinking the lower the better, and also trying every setting under the sun trying to eliminate the "dip".
Basically with mine it happens every now and then. Not all the time, and not even often. At VERY specific situations it will either drop down to like 500-600 (never stalls), then "catches" itself and goes back up.
Or
It will drop down to 100rpm over target like it's supposed to, then slowly dip to 500-600, then "catch" about 1-2 seconds later.
It never stalls, and happens so randomly that I pretty much gave up trying to fix it cause there is almost no rhyme/reason to it, just does it once in a while and then is perfect each time after.
Thank you David, I will try this tonight
So wait, it needs to e HIGHER? ughhhhhhhhhhhhhhhhhhhhhhhhh
And here I've been messing with this for weeks thinking the lower the better, and also trying every setting under the sun trying to eliminate the "dip".
Basically with mine it happens every now and then. Not all the time, and not even often. At VERY specific situations it will either drop down to like 500-600 (never stalls), then "catches" itself and goes back up.
Or
It will drop down to 100rpm over target like it's supposed to, then slowly dip to 500-600, then "catch" about 1-2 seconds later.
It never stalls, and happens so randomly that I pretty much gave up trying to fix it cause there is almost no rhyme/reason to it, just does it once in a while and then is perfect each time after.
Thank you David, I will try this tonight
![](https://www.miataturbo.net/images/smilies/smile.gif)
#6
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
*update: tried it, it seems to work ![Party Kitty](https://www.miataturbo.net/images/smilies/birthday[1].gif)
That's the good part. The bad part is that it bumped up my rpm quite a bit, so it was holding really high revs, so I had to decrease the valve dashpot adder.
The other bad part is now there's a VERY distinct transition between when it's holding just above target and then easing into the target. Like you'll let the rpm drop, it will hit 100rpm over, hold, and then BAM the drop from 950 rpm to 850 (my idle target) is really strong such that you can feel it.
I finessed a few things including getting the CL idle ve table and actual ve table to be closer in values to each other, adn that seemed to help.
More feedback soon as I try this out over the next few days.
![Party Kitty](https://www.miataturbo.net/images/smilies/birthday[1].gif)
That's the good part. The bad part is that it bumped up my rpm quite a bit, so it was holding really high revs, so I had to decrease the valve dashpot adder.
The other bad part is now there's a VERY distinct transition between when it's holding just above target and then easing into the target. Like you'll let the rpm drop, it will hit 100rpm over, hold, and then BAM the drop from 950 rpm to 850 (my idle target) is really strong such that you can feel it.
I finessed a few things including getting the CL idle ve table and actual ve table to be closer in values to each other, adn that seemed to help.
More feedback soon as I try this out over the next few days.
#8
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
I've tried everything from 2 (like you) to 10, and yes it changes the time, but still doesn't change the actual transition. What seemed to change the transition was lowering the dashpot adder to the valve and not raising the pid delay as high as 5, but keeping it at 3 max. Lastly I think I may have had an unrelated issue (the ve table was quite a bit higher than the idle ve table, and the shift during the switch would cause AFR to jump from 13.5-14.7). Again, maybe it's just my own ve table(s) issue.
Either way, now I can't get it to dip no matter what, which is very promising![](https://www.miataturbo.net/images/smilies/smile.gif)
We'll see
Either way, now I can't get it to dip no matter what, which is very promising
![](https://www.miataturbo.net/images/smilies/smile.gif)
We'll see
#9
Retired Mech Design Engr
![](/mt2011/images_td/ranks/supporter1.gif)
Thread Starter
iTrader: (3)
Join Date: Jan 2013
Location: Seneca, SC
Posts: 5,011
Total Cats: 859
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
<p></p><p>I have switched over to MAT. Here are my settings:</p><p><img src="http://cimg2.ibsrv.net/gimg/www.miataturbo.net-vbulletin/806x727/80-idle_targets_da798da3bba9d8d5277334430543481f57761 bba.png" title="" /><br /><br />This is working well for me. I set the Initials with heater fan on high and lights on, roughly maximum load, to be able to catch. Then with low load, RPM settles a little higher until CL brings it down.</p><p>Also running 9% adder on A/C (with 275 RPM add because I like it to work at traffic lights) and 3.5% dashpot.</p><p> </p>
#16
Elite Member
iTrader: (1)
Join Date: Jun 2006
Location: Warrington/Birmingham
Posts: 2,642
Total Cats: 42
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
<p>I dunno if anyone is interested, but I wrote this guide for another forum for tuning idle on MS3</p><p> </p><p>It's pretty wordy though, and no TL<img alt="" src="images/smilies/biggrin.gif" title="big grin" />R, apologies for that.</p><p> </p><p>
</p>
</p><p><strong>Tuning Idle MS3 – First steps & Info</strong></p><p>First off before you tune your idle valve, you need to ensure that your VE (fuel) and Ign (timing) tables are at a bare minimum sensible.</p><p> </p><p>By sensible I mean in the idle and fast idle, (fast idle being up to 3000rpm when manipulating the throttle when stationary), areas are hitting a stable AFR. If you want to pass a British MOT then this AFR with petrol needs to be 14.7:1 (or Lambda 1 for any fuel type if you prefer using Lambda).</p><p> </p><p>I’m making some assumptions in this guide.</p><p>You’re using a basemap from DIYAutotune/MSLabs and can reliably enter closed loop idle</p><p>You have a dashboard on TunerStudio with appropriate indicators setup so you know when you enter closed loop idle.</p><p>Your car starts and runs etc, but your idle isn’t ‘perfect’</p><p> </p><p>I recommend using the <em>initial values</em> table for closed loop. I used to recommend the last known good value setting. But after extensive use found it’s flaws irritating, I now prefer to use the initial values table. If you prefer to use the last known setting just skip the section on tuning the initial values table.</p><p> </p><p><em>A stable AFR and Ignition timing is essential for a stable idle</em>. Unstable AFRs cause the engine speed to fluctuate, as does raising and lowering the ignition timing. You’ll end up in a catch22 situation with the closed loop PID routine trying to stabilise a naturally wavering idle – The PID routine will never win this fight as the beed of air reacts much slower than changing fuel & altering timing.</p><p> </p><p>That’s not the point of closed loop idle. CL it’s there to maintain a consistent idle speed due to external variables i.e. temperate, engine load etc.</p><p> </p><p>The idle valve should only be used to compensate for changing external conditions. It shouldn’t be expected to keep a badly tuned engine running smoothly.</p><p> </p><p> </p><p> </p><p><strong>First Steps</strong></p><p>I have found that the best way to tune this is to first take the idle valve moving about under closed loop mode out of the equation. You can do this a number of ways, this is one way:</p><p>Switch the idle valve to ‘Open loop (Warmup)’ mode.</p><p>Start the car and warm it up.</p><p>As the car warms up you’ll need to adjust the open loop table to keep the idle at an appropriate speed.</p><p>Once the car is warmed up, remove as much electrical load as possible, i.e. turn off the interior fan, radio, any lights etc.</p><p>If you have A/C make sure that’s turned off.</p><p> </p><p>If you find the idle is too high/low in open loop mode then adjust the open loop curve until it’s close to what you want your target idle to be. I’d suggest aiming for 850 – 900rpm</p><p> </p><p>If your idle is hunting at this point the cause is either the fuel or ignition timing, the most likely cause is fuel. We know it can only be one of these two things as we’ve deliberately set the idle valve to a static position</p><p> </p><p>Now go to your VE table and in the 4 bins which are being used – or if the idle is hunting what they should be – set them to the same or very similar values at a rich-ish mixture i.e. an AFR or 13:1.</p><p> </p><p>You should find that the idle stabilises. If the idle is still hunting, take a look at your Ignition advance table, chances are you need to set the 4 bins that you idle in to the same ignition advance.</p><p> </p><p>I strongly recommend setting your ignition advance when you’re idling to 10deg BTDC. The reasons for this will become obvious later, but briefly you need to leave yourself a ‘reserve’ of ignition timing to catch additional loads.</p><p> </p><p>Typical idle map is around 30Kpa – if you’re idling significantly different to this you’re either using IRTB’s or you have a serious vacuum leak.</p><p> </p><p>For reference, this is my personal VE & Ign table.</p><p><insert picture example of timing & fuel table around idle></p><p> </p><p>Now you should have a nice steady idle when the car is warm. Before we continue, we need to check the idle valve settings are correct for your car. The idle valve on an MX5 is a PWM valve, (Pulse Width Modulation), that means that it’s turned on and off at various speeds to bleed air into the engine. 0% Duty Cycle (DC) means the valve isn’t being actuated at all and 100% means it’s just on. The valve will generally not start letting air in until around 30%DC and will fail to add additional air around 70%.</p><p> </p><p>Use the Idle test mode to work out what the closed and open values are. Simply start the test at 40%DC and then lower it until the idle speed stops dropping, that’s your closed idle DC number, raise it until the idle speed stops increasing, that’s your open idle DC number.</p><p> </p><p>Whilst at this point, you need to ensure that the car will still idle and not stall when at the closed idle DC%, do this by turning the bleed valve on the throttle body so the car is at about 450 – 500rpm with the idle DC at the closed value.</p><p>Once completed exit the idle test mode.</p><p> </p><p> </p><p>The next job is to ensure that the engine can cope with additional loads without any input from the closed loop idle code. The more the engine can look after itself, the less work the closed loop code has to do and the nicer your engine will behave.</p><p> </p><p><em>Typically you’d aim for Stoich (14.7:1 with petrol) at idle, however depending on what injectors you have fitted though this may not be possible. If you find you have idle instability as you reach 14.7:1 but it’s fine at richer mixtures, you may have to settle for a slightly richer idle. Feel free to lean out to stoich at this point if you wish.</em></p><p><em>N.B. if you have stock injectors fitted, a stable Stoich idle is perfectly possible to achieve, if you have old style injectors i.e. RX7 (Bosch EV1’s), then this will be difficult. Running a slightly faster idle can help immensely i.e. 1000rpm and this is still a valid idle speed for an MOT emissions test. Fully sequential injection also helps, so if you have an early 1.6, and EV1 injectors it’s well worth the modifications to move to fully sequential injection.</em></p><p> </p><p><strong>Idle RPM Timing Correction</strong></p><p>MS3 has a nice feature called ‘Idle RPM Timing Correction’ this manipulates the ignition timing to raise/lower the idle speed to keep it hitting the closed loop idle speed target. Engines react much faster to ignition changes than to airflow changes, so by using this you can catch any additional loads much better than relying solely on the idle valve.</p><p> </p><p>This is why it’s important to not set the idle timing to a high number; if you do you don’t have any timing advance left to work with. Additionally high timing at idle can cause high CO emissions during an MOT (I think it’s CO emmissions).</p><p> </p><p>You need to configure this setting so that it engages at a different time to your closed loop idle PID loop. If they engage at the same time, they both react to what the engine needs to hit the target idle which can cause undesirable behaviour. i.e. don’t use PID idle activation, use the setting ‘use normal activation’</p><p> </p><p>The setting is found under the ‘Idle Advance Settings’ screen. The actual table has its own screen.</p><p> </p><p><Insert picture of Idle RPM Timing Correction settings></p><p> </p><p>Tuning this is easy, once the option is turned on you’ll notice an indicator on TunerStudio go green to indicate the setting is engaged. If it’s not tweak the activation settings until it engages. If you don’t have an indicator in TS, add one!</p><p>Now with the engine idling, add some load, i.e. turn the interior fans on. You’ll note that the engine speed drops. Adjust the curve so at that load more ignition advance is added. You’ll notice that the revs rise back to the target idle. Keep adding more loads and tweaking the timing.</p><p> </p><p>Add and remove loads suddenly and watch as the engine responds. You should be able to hit your target rpm with no changes in airflow and very little idle speed movement when adding and removing small/medium loads.</p><p>If you want to test heavier loads, try holding the power steering at the lock stops. If you have electric windows, try holding 1 or both switches up when the windows are already fully up.</p><p> </p><p>Also try revving the car up, then turning the fans on full and turning on your headlights, then letting the engine return to idle. Correctly tuned the car should not stall and any dips below target rpm will be minimized.</p><p> </p><p><strong><em>Now</em></strong> you can tune the closed loop idle valve.</p><p>
#17
Elite Member
iTrader: (1)
Join Date: Jun 2006
Location: Warrington/Birmingham
Posts: 2,642
Total Cats: 42
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
<p>x2 posts as it hits the word limit</p><p> </p><p>
</p>
</p><p><strong>Tuning the PID routine</strong></p><p>Turn on closed loop idle</p><p>Turn on last known good value – I just use this for tuning the PID routine when the initial values table isn’t configured yet.</p><p>Set target idle values you’re happy with (suggest 850 – 900 when warm, ~1400 when stone cold)</p><p>Ensure you have an indicator on your TunerStudio Dashboard to indicate when CL PID is active</p><p>Set the Tuning mode to Advanced</p><p>Set the P and I values to 100, set the D to zero.</p><p>Set the Tuning mode to basic</p><p>Now move the slider to close to zero, and slowly move it to higher numbers until your idle hits your target rpm. You’ll find that when you’ve gone too far the idle will oscillate, just back off the sensitivity slider in this case.</p><p>Once you’re happy with the sensitivity, blip the throttle and let the idle settle again to make sure it PID re-engages and your idle returns to target.</p><p>Set the tuning mode to Advanced.</p><p>Now start adding load to your engine, i.e. if you have PAS turn the steering wheel, for lots of load, hold it against the lock stops.</p><p> </p><p>If the idle takes a long time to react then adjust the ‘I’ until it reacts how you’re happy. You’ll likely need to add ‘P’ as well.</p><p> </p><p>If you find that you can get the idle to react fast, but remains unstable adding some D will help to dampen the response.</p><p>This is all a balancing act, but you don’t need it to be hyper sensitive to changes. If you have it that sensitive then changing external conditions will cause you grief.</p><p> </p><p>Try blipping the throttle and seeing where the idle settles to before entering the PID loop, you want it a few 100rpm higher than the target. The Dashpot adder is what adds this additional idle DC%</p><p> </p><p>I’d recommend having the PID Ramp To Target Time at 2 seconds and the PID Delay at least 1 second, any faster and IME the idle can misbehave by dropping the idle DC too far.</p><p> </p><p>Leaving the last known good value on is your choice, but I prefer the initial values table now as the last known value can mean high idles when the last known value was from starting the car when cold etc.</p><p> </p><p> </p><p> </p><p><strong>Tuning the Closed Loop initial values table</strong></p><p>The first thing you need to do is to ascertain what idle DC% does what with relation to the engine speed, you can do this by dataloging the car idling from cold . Then load the log and in MLV use the scatterplot function to map idle DC against intake temp. Where you have lots of hits for each temp is the DC number you want to enter into the initial values table</p><p>Or you can do it manually</p><p> </p><p>First change the idle valve to ‘Open loop (Warmup)’, then start your car, you need to be quick to get the cold values, so it might take a few days of cold starts if you’re slow!</p><p> </p><p>Next go to the idle valve test mode.</p><p> </p><p>Keep open in a window the ‘Closed loop idle initial values’</p><p> </p><p>Set the PWM Idle Duty% to a low-ish figure i.e.35% and start the test. This will set the idle valve to 35%DC.</p><p> </p><p>Not look at the coolant temp and move the idle valve to a DC that’s close to the target idle speed for that temp, once you have the number enter it in the initial values table.</p><p> </p><p>Keep doing this until you have the initial values table filled out. You might need to wait for the weather to get really cold to get some values, but take a ‘best guess’ for now.</p><p> </p><p>Once complete you can end the idle valve test.</p><p id="99">
#18
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
Oh my ******* God...
Between DNMakinson's posts (including switching to MAT initial duty table from last known good) and richyvrunlimited's guide (actually, I googled the original just for readability's sake - credit to Mr Slow) my idle just automagically turned from being a surging piece of **** to something gloriously reliable (exaggeration: PID could still use work).
Put some time into cold starts idle duty the following night (it's winter here), and managed to get that quite reliable too.
May of killed two very big birds.
Cheers guys.
Between DNMakinson's posts (including switching to MAT initial duty table from last known good) and richyvrunlimited's guide (actually, I googled the original just for readability's sake - credit to Mr Slow) my idle just automagically turned from being a surging piece of **** to something gloriously reliable (exaggeration: PID could still use work).
Put some time into cold starts idle duty the following night (it's winter here), and managed to get that quite reliable too.
May of killed two very big birds.
Cheers guys.
#19
Retired Mech Design Engr
![](/mt2011/images_td/ranks/supporter1.gif)
Thread Starter
iTrader: (3)
Join Date: Jan 2013
Location: Seneca, SC
Posts: 5,011
Total Cats: 859
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
<p></p><p>Much as I hate to encourage Brain, I did play (work really hard) a bit more. Thought, why have the delays at all? So, I got the MAT table pretty good, so CL caught even with lights and fan on high, then set Idle Delay and Delay to target both to zero. Now, instead of RPM coming to 1100, staying there 3-4 seconds and then moving to 800; things just sort of move at varying quickness right down to the target. Sometimes (I suppose due to no Idle Delay, CL will start at about 1500 RPM, but no matter, it still moves right down to target. I suppose I could fool it by staying in gear until 1000 RPM and have the CL try to regulate speed... well I have tried that, and things still don't mess up.</p><p>And the circle is complete.</p>
#20
Elite Member
iTrader: (1)
Join Date: Jun 2006
Location: Warrington/Birmingham
Posts: 2,642
Total Cats: 42
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
<p>I'd undo that circle and add a delay in of 1 second. There's a bug which will mean that the initial value isn't used and you'll either suffer from awful idle dip, or it'll just stall.</p><p>See post number 1 in this very thread.</p><p>For reference, I used to do the exact same thing and ran with delays of zero. I've since added in small delay of 1 for both as the stalls got tiresome</p>