Tricks for Tuning Engine States
#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)
So I thought I'd go ahead and move to 1.5.X. I would like to determine the engine state values while still on 1.4.0.
I have the MS manual as a guide.
Are there any tricks or anecdotal advice for getting / setting the values? Places where cheating low or cheating high produces best results?
Thanks,
DNM
EDIT: Apparently there is good info on the MS3-PRO manual, compliments of irodd:
(MS3Pro, fw 1.5.1, Oct 31, 2018) See Below:
"Slow acceleration threshold - This number should be set to the RPMdot range observed while slowly
accelerating in high gear. It should be high enough to distinguish RPM jitter from intentional acceleration. If
you see the slow acceleration status triggering at idle, this number needs to be raised.
• Slow deceleration threshold -EDIT: See post #23 of this thread to see why this is a bad instruction and will give too small (absolute value) a number. Like this will give something like -300, when -700 might be needed in some circumstances. To set this, cruise in a high gear, then see what RPMdot value you get by
lifting off the throttle fully and decelerating. Set this value slightly above that RPMdot value. If you see the
slow deceleration status triggering at idle, this number needs to be raised.
• Throttle closed TPS threshold - Defines the maximum throttle position for idle functions. Typical values
range from 0.5% to 1.0% depending on how noisy your TPS signal is.
• Wide open throttle threshold - TPS value above which the engine is considered to be at wide-open throttle.
Typical values range from 99.0% to 99.9%, depending on the amount of noise in the TPS signal.
• Overrun MAP threshold - Below this MAP value, the engine is considered to be decelerating in gear instead
of idling.
Here are some general pointers for tuning the engine states.
Only use the VSS on vehicles capable of engine braking. The VSS should be turned off if your vehicle needs to
idle while in motion. The most common example would be a car with an automatic transmission set up to freewheel
on deceleration. If you have trouble with the engine stalling while the vehicle is moving, but it idles with no problem
while stopped, turn this setting off.
If closed loop idle fails to engage properly, check to be sure the TPS reading does not go above the throttle
closed TPS threshold and that neither the slow deceleration state nor the slow acceleration state are active while
idling. If any of these states are false triggering, increase the threshold values. Also make sure the MAP sensor
reading does not go below the overrun MAP threshold at idle.
If the idle valve closes or opens abruptly when the engine is not idling, you may need to reduce the slow
acceleration or slow deceleration threshold.
If overrun fuel cut fails to engage, check the throttle closed TPS threshold and MAP overrun MAP threshold to
be sure both sensor readings are low enough.
If the engine stalls if you let off the throttle and disengage the clutch at high RPM, check if the overrun fuel cut
engaged. If so, decrease the fast deceleration threshold to lock out the overrun fuel cut in these conditions."
I have the MS manual as a guide.
Are there any tricks or anecdotal advice for getting / setting the values? Places where cheating low or cheating high produces best results?
Thanks,
DNM
EDIT: Apparently there is good info on the MS3-PRO manual, compliments of irodd:
(MS3Pro, fw 1.5.1, Oct 31, 2018) See Below:
"Slow acceleration threshold - This number should be set to the RPMdot range observed while slowly
accelerating in high gear. It should be high enough to distinguish RPM jitter from intentional acceleration. If
you see the slow acceleration status triggering at idle, this number needs to be raised.
• Slow deceleration threshold -EDIT: See post #23 of this thread to see why this is a bad instruction and will give too small (absolute value) a number. Like this will give something like -300, when -700 might be needed in some circumstances. To set this, cruise in a high gear, then see what RPMdot value you get by
lifting off the throttle fully and decelerating. Set this value slightly above that RPMdot value. If you see the
slow deceleration status triggering at idle, this number needs to be raised.
• Throttle closed TPS threshold - Defines the maximum throttle position for idle functions. Typical values
range from 0.5% to 1.0% depending on how noisy your TPS signal is.
• Wide open throttle threshold - TPS value above which the engine is considered to be at wide-open throttle.
Typical values range from 99.0% to 99.9%, depending on the amount of noise in the TPS signal.
• Overrun MAP threshold - Below this MAP value, the engine is considered to be decelerating in gear instead
of idling.
Here are some general pointers for tuning the engine states.
Only use the VSS on vehicles capable of engine braking. The VSS should be turned off if your vehicle needs to
idle while in motion. The most common example would be a car with an automatic transmission set up to freewheel
on deceleration. If you have trouble with the engine stalling while the vehicle is moving, but it idles with no problem
while stopped, turn this setting off.
If closed loop idle fails to engage properly, check to be sure the TPS reading does not go above the throttle
closed TPS threshold and that neither the slow deceleration state nor the slow acceleration state are active while
idling. If any of these states are false triggering, increase the threshold values. Also make sure the MAP sensor
reading does not go below the overrun MAP threshold at idle.
If the idle valve closes or opens abruptly when the engine is not idling, you may need to reduce the slow
acceleration or slow deceleration threshold.
If overrun fuel cut fails to engage, check the throttle closed TPS threshold and MAP overrun MAP threshold to
be sure both sensor readings are low enough.
If the engine stalls if you let off the throttle and disengage the clutch at high RPM, check if the overrun fuel cut
engaged. If so, decrease the fast deceleration threshold to lock out the overrun fuel cut in these conditions."
Last edited by DNMakinson; 05-12-2019 at 09:48 AM.
#5
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
Megasquirt/TunerStudio "Tips and Tricks"
Its this sticky in this section, about 5th post down. I don't know if there is a newer version but I think this is what is being referenced.
Its this sticky in this section, about 5th post down. I don't know if there is a newer version but I think this is what is being referenced.
#6
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
So I thought I'd go ahead and move to 1.5.X. I would like to determine the engine state values while still on 1.4.0.
I have the MS manual as a guide.
Are there any tricks or anecdotal advice for getting / setting the values? Places where cheating low or cheating high produces best results?
I have the MS manual as a guide.
Are there any tricks or anecdotal advice for getting / setting the values? Places where cheating low or cheating high produces best results?
Could you please add an info from a MS manual(MS3Pro, fw 1.5.1, Oct 31, 2018) to the your first post to avoid oudated /repetitive/already in manual/etc. advices:
"Slow acceleration threshold - This number should be set to the RPMdot range observed while slowly
accelerating in high gear. It should be high enough to distinguish RPM jitter from intentional acceleration. If
you see the slow acceleration status triggering at idle, this number needs to be raised.
• Slow deceleration threshold - To set this, cruise in a high gear, then see what RPMdot value you get by
lifting off the throttle fully and decelerating. Set this value slightly above that RPMdot value. If you see the
slow deceleration status triggering at idle, this number needs to be raised.
• Throttle closed TPS threshold - Defines the maximum throttle position for idle functions. Typical values
range from 0.5% to 1.0% depending on how noisy your TPS signal is.
• Wide open throttle threshold - TPS value above which the engine is considered to be at wide-open throttle.
Typical values range from 99.0% to 99.9%, depending on the amount of noise in the TPS signal.
• Overrun MAP threshold - Below this MAP value, the engine is considered to be decelerating in gear instead
of idling.
Here are some general pointers for tuning the engine states.
Only use the VSS on vehicles capable of engine braking. The VSS should be turned off if your vehicle needs to
idle while in motion. The most common example would be a car with an automatic transmission set up to freewheel
on deceleration. If you have trouble with the engine stalling while the vehicle is moving, but it idles with no problem
while stopped, turn this setting off.
If closed loop idle fails to engage properly, check to be sure the TPS reading does not go above the throttle
closed TPS threshold and that neither the slow deceleration state nor the slow acceleration state are active while
idling. If any of these states are false triggering, increase the threshold values. Also make sure the MAP sensor
reading does not go below the overrun MAP threshold at idle.
If the idle valve closes or opens abruptly when the engine is not idling, you may need to reduce the slow
acceleration or slow deceleration threshold.
If overrun fuel cut fails to engage, check the throttle closed TPS threshold and MAP overrun MAP threshold to
be sure both sensor readings are low enough.
If the engine stalls if you let off the throttle and disengage the clutch at high RPM, check if the overrun fuel cut
engaged. If so, decrease the fast deceleration threshold to lock out the overrun fuel cut in these conditions."
#8
Tweaking Enginerd
![](/mt2011/images_td/ranks/supporter1.gif)
iTrader: (2)
Join Date: Mar 2013
Location: Boulder, CO
Posts: 1,809
Total Cats: 366
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
The tool tips in the beta are decent. Honestly, I don't know what all the fuss is about, I haven't really had much of an issue with engine states.
Edit: on 1.51. I will be trying the 1.5.2 beta 4 here soon when I get a chunk of time to play.
Edit: on 1.51. I will be trying the 1.5.2 beta 4 here soon when I get a chunk of time to play.
#9
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
The main issue with engine states is when you dont use initial table for CL Idle, and only use Last Value.
Decelling at low rpm where RPMdot is low (so low that its in the noise for RPMdot at idle). This will trigger idle at say, 2000rpm. On the other hand, when your closed loop brings your RPM down fast, this can trigger slow decel and bring you out of CLidle.
This happens a lot when you start the car and drive with it cold, and only stop when its already warm. RPM will sit at 1500 at the first stop because it hasent engaged since you cold started, and as CLidle starts pulling RPM down, it will move fast enough to bring you out. You then have to wait for the time delay again before it enters CLidle.
Its really annoying. Before 1.5 this all worked flawlessly EVERY time.
Interested in the latest beta, they removed slow decel, what does that mean for tuning this?
Decelling at low rpm where RPMdot is low (so low that its in the noise for RPMdot at idle). This will trigger idle at say, 2000rpm. On the other hand, when your closed loop brings your RPM down fast, this can trigger slow decel and bring you out of CLidle.
This happens a lot when you start the car and drive with it cold, and only stop when its already warm. RPM will sit at 1500 at the first stop because it hasent engaged since you cold started, and as CLidle starts pulling RPM down, it will move fast enough to bring you out. You then have to wait for the time delay again before it enters CLidle.
Its really annoying. Before 1.5 this all worked flawlessly EVERY time.
Interested in the latest beta, they removed slow decel, what does that mean for tuning this?
#11
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)
Last Value is to get you running so you can log real numbers to put into Initial Table.
Sounds like by the time they are finished, Engine States will be all of the same parameters used in 1.4.X, only in a different place and with the One Stop Shop annunciators. AND a better example of what RPMdot values make sense.
Sounds like by the time they are finished, Engine States will be all of the same parameters used in 1.4.X, only in a different place and with the One Stop Shop annunciators. AND a better example of what RPMdot values make sense.
#12
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
Don't see how last value would be to "get you started". If the last time you were idling it was fine, the next time it should be very close (once slightly warmed up, my rpm always drops to 100rpm above target(. Initial table seems like extra complexity for something very simple.
Always tuned idle like this, before engine states it was OEM-like with no issues.
Anyway 1.5.2 seems to have all the fancy EGO stuff I ever wanted so I will give it a shot, if it doesnt improve engine states I might try Table mode.
Agree that at this rate they are just reverting to old behaviour...
Always tuned idle like this, before engine states it was OEM-like with no issues.
Anyway 1.5.2 seems to have all the fancy EGO stuff I ever wanted so I will give it a shot, if it doesnt improve engine states I might try Table mode.
Agree that at this rate they are just reverting to old behaviour...
#13
Tweaking Enginerd
![](/mt2011/images_td/ranks/supporter1.gif)
iTrader: (2)
Join Date: Mar 2013
Location: Boulder, CO
Posts: 1,809
Total Cats: 366
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
You can see significant differences in the required manifold absolute pressure (load) at idle due to: cooling fans, ac, headlights, power windows, mat, clt (proxy for other), turn signals, oil temp, giant stereo, altitude ...
IAC position is dependent on several things, including required manifold pressure.
Last value should not be used IMO. My criteria for idle quality may be different than others.
IAC position is dependent on several things, including required manifold pressure.
Last value should not be used IMO. My criteria for idle quality may be different than others.
#14
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)
OK. So I went to 1.5.1. It was not hard to set up the Engine States. The only new parameters were the RPMDots. I took some logs before going over and settled on +300 and -300.
Seemed to work perfectly.
However, The EBC tuning was horribly off. I full duty cycle until MAP reached Target. Needless to say, lots of Overboost Protection kicking in. They made the controller WAY more sensitive than in 1.4.X.
And I found that they have not fixed 2 issues that I had hoped would be: That the lower Boost Limit during Limp Mode does not work; that the IAC Duty Cycle does not correctly "Taper" after starting according to the value set.
So, I returned to 1.4.0.
The SD card logging of P, I and D for control was a great feature, but that was the only one that meant anything to me.
Seemed to work perfectly.
However, The EBC tuning was horribly off. I full duty cycle until MAP reached Target. Needless to say, lots of Overboost Protection kicking in. They made the controller WAY more sensitive than in 1.4.X.
And I found that they have not fixed 2 issues that I had hoped would be: That the lower Boost Limit during Limp Mode does not work; that the IAC Duty Cycle does not correctly "Taper" after starting according to the value set.
So, I returned to 1.4.0.
The SD card logging of P, I and D for control was a great feature, but that was the only one that meant anything to me.
#15
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
I am enjoying 1.5.2 EGO features a lot, it finally works like EGO is supposed to! (it not longer resets back to 100 all time time, it just freezes and resumes as you would expect) PID algo is also different and more sensitive.
This makes it awesome as EGO is always near the optimal (last value) so it won't have to re-adjust from scratch every time you enter overrun or some other trigger that disables it.
As for response time, without touching my PID values I cannot say yet, but thats usually not an issue unless you are way out of tune.
@DNMakinson From other people that had slight EBC issues between cold and hot days (having to adjust EBC targets because EBC algo refused to go any higher in summer, so it would not reach target for instance), this version greatly improves that.
I don't have an EBC so I can't personally comment (and am not well versed in EBC tuning) but it might be relevant to you.
@Ted75zcar My idle criteria is: I don't want garbage: It has to be equal to or better than OEM. This was met by pre-1.5.0 code.
The main difference seems to be that the previous code didn't dump you out of CLidle when the RPM was dropping fast after entering it.
Your argument can easily be turned around on you, having a static table for "what works usually" means it works for the parameters it was tuned at, but every time you stop you are farther from ideal and you have to rely on the PID to bring you to target from a larger delta.
None of the parameters you mention that change IAC position have anything to do with this problem, and at worst they are opposed to the notion of having an initial table at all, IMO
If you car was idling correctly last time, why would the last value (+dashpot) not work well next time you stop?
I would even be willing to bet that a lot of OEMs use something similar to Last Value
Don't know where you both came up with the notion that "It's just used to get your car going before you tune it". It is nonsensical because you could just set the initial table to similar values as the cranking table to get it running from a base map too...
I'd be interested in how many people here are using it, actually.
This makes it awesome as EGO is always near the optimal (last value) so it won't have to re-adjust from scratch every time you enter overrun or some other trigger that disables it.
As for response time, without touching my PID values I cannot say yet, but thats usually not an issue unless you are way out of tune.
@DNMakinson From other people that had slight EBC issues between cold and hot days (having to adjust EBC targets because EBC algo refused to go any higher in summer, so it would not reach target for instance), this version greatly improves that.
I don't have an EBC so I can't personally comment (and am not well versed in EBC tuning) but it might be relevant to you.
@Ted75zcar My idle criteria is: I don't want garbage: It has to be equal to or better than OEM. This was met by pre-1.5.0 code.
The main difference seems to be that the previous code didn't dump you out of CLidle when the RPM was dropping fast after entering it.
Your argument can easily be turned around on you, having a static table for "what works usually" means it works for the parameters it was tuned at, but every time you stop you are farther from ideal and you have to rely on the PID to bring you to target from a larger delta.
None of the parameters you mention that change IAC position have anything to do with this problem, and at worst they are opposed to the notion of having an initial table at all, IMO
If you car was idling correctly last time, why would the last value (+dashpot) not work well next time you stop?
I would even be willing to bet that a lot of OEMs use something similar to Last Value
Don't know where you both came up with the notion that "It's just used to get your car going before you tune it". It is nonsensical because you could just set the initial table to similar values as the cranking table to get it running from a base map too...
I'd be interested in how many people here are using it, actually.
#16
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
DNM I recently went back and looked to see where my engine states should really be and I had very similar #'s however I set them +500 -800 just to be safe and make sure any stalls were unrelated. I'm going to be setting them much closer to 300 and see if I have any hiccups.
On the initial values table vs last value I'm kind of in the middle. I see both arguments and I have always used initial value by clt. FWIW with no accessories on and just driving country roads my car needs 23% duty on the IAC to idle at 900 on the ocassional stop. When I'm in stop and go Chicago traffic for 1 hour the car is heatsoaked, headlights on, interior fan on, radio on, and needs close to 30% IAC to idle at 900. I have my initial value set to 25-26 so it's in the middle and my dashpot is 2.7% but this means when I'm stuck in my city traffic scenario everytime I use clutch move forward a few feet then have to stop the idle dips below target before it catches. If I set dashpot or initial values any higher then my idles catches annoyingly high and takes time to come to target in my first scenario.
My current solution to this is moving to a MAT base initial value table because most my scenarios where I need a lot more idle valve seem to also be tied to times when MAT is high: stop and go traffic with accessories on. And when MAT is cooler: country roads ocassional stop lights, I need less.
I think ideally a blend of initial value and last value would be cool to see. Using initial value on its own can be crappy for times when things change a lot like if I'm super heatsoaked need a lot of IAC but then traffic frees up I drive a few miles and the car cools down and my next stop idles gonna be super high because my last value was from a time with a much different situation where the car needed way more IAC.
On the initial values table vs last value I'm kind of in the middle. I see both arguments and I have always used initial value by clt. FWIW with no accessories on and just driving country roads my car needs 23% duty on the IAC to idle at 900 on the ocassional stop. When I'm in stop and go Chicago traffic for 1 hour the car is heatsoaked, headlights on, interior fan on, radio on, and needs close to 30% IAC to idle at 900. I have my initial value set to 25-26 so it's in the middle and my dashpot is 2.7% but this means when I'm stuck in my city traffic scenario everytime I use clutch move forward a few feet then have to stop the idle dips below target before it catches. If I set dashpot or initial values any higher then my idles catches annoyingly high and takes time to come to target in my first scenario.
My current solution to this is moving to a MAT base initial value table because most my scenarios where I need a lot more idle valve seem to also be tied to times when MAT is high: stop and go traffic with accessories on. And when MAT is cooler: country roads ocassional stop lights, I need less.
I think ideally a blend of initial value and last value would be cool to see. Using initial value on its own can be crappy for times when things change a lot like if I'm super heatsoaked need a lot of IAC but then traffic frees up I drive a few miles and the car cools down and my next stop idles gonna be super high because my last value was from a time with a much different situation where the car needed way more IAC.
#18
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
My target RPM is 850, same as OEM for the NB afaik. Its always been 850 even when I had ITBs (using OEM IAC valve), I have a rotrex now. Engine is fully stock internally
That's the post I was referencing about parameters.
I dont have AC, but AC and the Cooling fan have individual idle increase when they turn on so it doesnt affect idle much, if they turned on while you were cruising and came to a stop.
Altitude at least with my ECU and when I had ITBs, going from 500m ASL to 1200m ASL (I only stopped to idle at the top) did not make the car dip below 850 rpm. I live at roughly sea level most of the year.
In the case of altitude, if you had initial table it would behave worse; If your car was tuned at sea level, the initial would always be way off when at altitude every single time you enter closed loop right?
All the other transient loads like power windows, brake lights, turn signals have no bearing on CL idle. As for more constant loads, the same as altitude, if you tune your initial table when all the loads are disabled (defroster, stereo, headlights, etc..) when those are on you will constantly have RPM dips when entering closed loop. If you tune for them being enabled, then when they are disabled you will settle above your target rpm until you are pulled down by CLidle.
With last value, unless you turn all of them on at the same time, which is unlikely, you are always ready, unlikely your headlights turned off or on since last time you entered idle.
BTW I idle at 18 degrees advance, have timing based idle control as well as IAC control and full time EGO, so any dips are quickly fixed.
Am I missing some behaviour for Initial Table that I am not aware of? (Since I've never used it much)
You can see significant differences in the required manifold absolute pressure (load) at idle due to: cooling fans, ac, headlights, power windows, mat, clt (proxy for other), turn signals, oil temp, giant stereo, altitude ...
IAC position is dependent on several things, including required manifold pressure.
Last value should not be used IMO. My criteria for idle quality may be different than others.
IAC position is dependent on several things, including required manifold pressure.
Last value should not be used IMO. My criteria for idle quality may be different than others.
I dont have AC, but AC and the Cooling fan have individual idle increase when they turn on so it doesnt affect idle much, if they turned on while you were cruising and came to a stop.
Altitude at least with my ECU and when I had ITBs, going from 500m ASL to 1200m ASL (I only stopped to idle at the top) did not make the car dip below 850 rpm. I live at roughly sea level most of the year.
In the case of altitude, if you had initial table it would behave worse; If your car was tuned at sea level, the initial would always be way off when at altitude every single time you enter closed loop right?
All the other transient loads like power windows, brake lights, turn signals have no bearing on CL idle. As for more constant loads, the same as altitude, if you tune your initial table when all the loads are disabled (defroster, stereo, headlights, etc..) when those are on you will constantly have RPM dips when entering closed loop. If you tune for them being enabled, then when they are disabled you will settle above your target rpm until you are pulled down by CLidle.
With last value, unless you turn all of them on at the same time, which is unlikely, you are always ready, unlikely your headlights turned off or on since last time you entered idle.
BTW I idle at 18 degrees advance, have timing based idle control as well as IAC control and full time EGO, so any dips are quickly fixed.
Am I missing some behaviour for Initial Table that I am not aware of? (Since I've never used it much)
#19
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
I have my initial value set to 25-26 so it's in the middle and my dashpot is 2.7% but this means when I'm stuck in my city traffic scenario everytime I use clutch move forward a few feet then have to stop the idle dips below target before it catches. If I set dashpot or initial values any higher then my idles catches annoyingly high and takes time to come to target in my first scenario.
I also set my dashpot to 0 as it's redundant when using the initial table, the dashpot function should simply be built into whatever value you put into the table.
If you use the clutch to move forward and idle dips below target, I would suggest you might be going lean and need to adjust your map AE. That's a guess as it gets complicated without logs - you may be dropping in and out of closed loop idle, the IAC may be closing and opening in an unorganized fashion and the fuel may or may not be lean.
#20
![Default](https://www.miataturbo.net/images/icons/icon1.gif)
I wish I could use Engine States but I cannot because I am running Alpha-N tune for my ITBs. Without a MAP sensor you cannot do Engine States. When I upgraded from 1.4.1 to 1.5.0 I had to completely disabled overrun fuel cut in order for my car to even run because without MAP there's no way to tell if you are in overrun or not. Eventually I will likely get a newer ECU to get MAP and real-time barometric correction. The last time I tried to hook up my ECU to my ITB vacuum manifold I had a leak or some other problem so I went back to the way it was with just reading atmospheric pressure in the cabin. Not sure how I would do two MAP sensors with my MS Labs MS3 Basic v2 without going to an outboard MAP and messing around with jumpers, which is not something that is well documented.