gemellocattivo.com

Which means "Evil Twin". Lets see your projects where you change boring into fun or create the fun from scratch.
It is currently Mon Nov 19, 2018 5:50 am

All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 7 posts ] 
Author Message
 Post subject: Idle Control
PostPosted: Wed Nov 04, 2015 12:17 pm 
Offline

Joined: Thu Jan 01, 2015 6:47 pm
Posts: 2241
I've started working on Idle control while I wait for some info from Jim about how to properly configure the H-bridge in the ETC code.

I'm thinking rather than just rpm vs coolant temp it might be nice to include cycle count so you can both ramp down idle faster and have post start high-idle all in one table.

I'm also giving it a ramp-down feature that is a simple proportional controller that will grab the engine at a few hundred rpm above idle and bring it softly to the idle set point to prevent stalling.

Then this will fee into the ETC code so when the throttle pedal is at around 0% (user set point) then the idle code drives throttle position not the pedal. ...but there will still be a requirement for pedal and TPS to match within say 10% or it will cut fuel.

Traction control will tie in to ETC too when I get there....but it will only be allow to reduce throttle position not increase it.

That's the thought anyway.


Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Wed Nov 04, 2015 2:11 pm 
Offline

Joined: Sun Oct 11, 2015 2:07 pm
Posts: 122
The system I worked on would go into closed-loop idle speed right off the 'start flare'. This meant that once RPM reached a threshold (about 1200 from memory) it would go closed-loop with spark.

Idle speed was determined by cat light-off parameters (totally separate from idle speed itself) and warmup parameters, and the base idle speed. There was a rate limit to how fast the idle speed could be changed (I think it was around 100 rpm/sec). When in idle speed control, all of the table lookups were done at target speed instead of current speed, this provided a lot more stability in idle control.

The warmup parameters were based on accumulated air (grams of air since engine start) as well as the coolant temperature when the engine started. The most significant warmup parameters were fueling related (% of fuel that would evaporate and burn vs pass through as droplets), idle speed didn't have many. Base idle speed was just scalar. I think it could be two 1d tables - one outputs elevated RPM as a function of start ECT and the other outputs decay factor (% of elevated RPM to base RPM) as a function of accum air or cycle count.

With my small engines I don't have idle speed control and that isn't a problem since nothing can load the engine (there is no accessory belt and we have either a speed-engaged CVT or centrifugal clutch so there are no clutch or trans loads at idle speed). For normal engines, the accessory belt loads are quite significant, and the driver can shift to D or engage the clutch at idle speed without pedal input, so the engine needs much more idle control to prevent stalls.

To actually control idle, the simplest way is to do it entirely through spark (for the actual idle control), and apply min/max advance limits (probably max would be the spark table value and min would be ???). Then, set a target spark advance in idle and have the ETC (or IAC for mechanical throttle) slowly dial it open/closed to hold a target advance. Fast (spark) control could be PI or PID and slow (air) control could be PI or just I. If you can predict any loads you can use them to bump the slow control loop so the fast loop has more room to work before it hits min or max spark. For multiple ETC's (not sure how you're handling your V12), it would also be good to try to balance the banks.

Another feature I've seen is 'stall protection' which adds torque whenever RPM gets below some speed threshold (usually cal'd as a % between target idle speed and 0). If idle speed target is e.g. 700 and RPM sags to e.g. 500, it might request a rather large amount of torque. Without a torque-based system it would probably add both ETC % and fuel (since presumably spark is already at max or the idle speed controller would have caught the issue, so adding fuel is the quickest way to save the engine).

_________________
"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack

"Any sufficiently advanced technology is indistinguishable from magic" ~Arthur C. Clarke


Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Thu Nov 05, 2015 9:33 pm 
Offline

Joined: Thu Jan 01, 2015 6:47 pm
Posts: 2241
I have it setup to engage when rpm crosses idle+user set number as long as the throttle is closed and have a to-do to add a start point to the ETC that will allow the flair to occur.

What I may be doing wrong is I'm using the TB for idle control and I'm guessing it's going to surge and what I should be doing is locking the throttle at a position and using spark timing as you suggest. I'll try it the way it is I guess then if (or realistically WHEN) it surges make the change.


Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Mon Nov 09, 2015 8:37 pm 
Offline

Joined: Thu Jan 01, 2015 6:47 pm
Posts: 2241
I got a nice little idle target routine working. The user sets the desired idle ina table based on coolant temp and cycle count, I had that already. Now the user also set an rpm above that you want the ECU to grab the engine and ease it down to the set point from either the rpm offset point or actual rpm, whichever is less. Its a simple proportional ramp down based on cycle count.

this part should work regardless of how idle is actually controlled....but I'm going to set it to the ETC for now and see how that goes.


Attachments:
Idle control.JPG
Idle control.JPG [ 211.53 KiB | Viewed 3599 times ]
Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Tue Nov 22, 2016 5:34 pm 
Offline

Joined: Thu Jan 01, 2015 6:47 pm
Posts: 2241
I did some rewrites on the idle control based on testing in the engine simulator......it seems to work much better now, at least on the simulator. The old code was using an idle PID control the throttle directly based on rpm. Now the Idle PID output a desired throttle position and the throttle control PID converts that to the signal to the throttle actuator. This way the actuator is tuned once and just worries about making the TPSmatch the desired position in all modes.. Then the idle PID can be clamped to a very narrow allowed position range which makes it safer and its tuned to the speed the engine reacts to throttle changes with no concecer for how the actuator (which is much faster) reacts. Really nice on the simulator but we'll have to see if it works on a real engine where the actualtor has sticktion and may not have the percision a simulator has.


Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Tue Dec 13, 2016 2:58 pm 
Offline

Joined: Sun Oct 11, 2015 2:07 pm
Posts: 122
What you describe should work better than using idle speed error to directly drive the motor.

I have a feed-forward adder to the ETC motor duty cycle which, in theory, is the duty cycle required to hold at a given position. It is indexed by target position, not the sensor position. I also have a PID with scalar gains (kp, ki, kd are single numbers) and I found that it hunts a lot around the spring position (the spring position is ~6%, and if I idle at 5.5% the PID jumps a bit when it crosses the spring). I haven't tried scheduling the PID gains (tables based on sensor position) to fix this (less kP/more kD around the spring), because it hasn't caused major problems yet, but I can hear the ETC motor twitch like crazy and heat up at idle. Maybe the plenum volume is filtering this out well enough for me? That could cause problems for you, with ITBs. Off the spring position the PID holds target well.

_________________
"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack

"Any sufficiently advanced technology is indistinguishable from magic" ~Arthur C. Clarke


Top
 Profile Send private message  
 
 Post subject: Re: Idle Control
PostPosted: Tue Dec 13, 2016 3:56 pm 
Offline

Joined: Thu Jan 01, 2015 6:47 pm
Posts: 2241
For me, the spring closes the TBs completely so there is no point the a signal isn't required to hold it open. I have a heating problem if the TBs go to zero...or try to go to zero might be the better description becasue it the sensor is off at all they will try to get to less than zero and keep trying with more power until the actuator is at full power.


Top
 Profile Send private message  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group