FreeEMS firmware feature wishlist! (out of date)

Official FreeEMS vanilla firmware development, the heart and soul of the system!
Post Reply
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

FreeEMS firmware feature wishlist! (out of date)

Post by Fred »

I'll keep this post as up to date as I can. Feel free to suggest categories for them as well.

The most important ones are those that can be applied to any engine. This list will probably be implemented roughly in the order it is posted in.

This list has grown a lot now and needs some organisation to accurately reflect the categories that each item is in, and indeed clarify what each thing means, and how its interface will look (which will define its implementation).
  • Basic features
    • Tuning AFR AND VE table based
    • Maximum possible basic table size and resolution of contents circa 21x21, variable size
    • RPM limiting via cut spark, round robin dropping X cyls, cut fuel, retarded ignition timing (all with hysteresis or proportional behaviour)
    • Support for many types of RPM/position sensors
    • Tachometer output (adjustable for faking wrong cylinder counts)
    • Base fuel trim figure in meaningful units
    • MAP, TPS, MAF (if done) load including ability to combine the values on a cell by cell basis
    • Independently relocatable rpm and load intervals for fuel and ignition tables
    • Injector firing angle adjustable through full range of angles (base and each)
    • Injector per cylinder up to 6 cylinders, each with adjustable trim for AFR and crank phasing
    • Coil per cylinder up to 12 cylinders, each with adjustable trim for ignition advance
    • Advanced always on based hot start adjustment/corrections
    • Acceleration/load change fuel corrections based on any combination of the following TPS, MAP, MAF, delta RPM, overall load, Wall wetting model(s)
    • Warm up adjustments based on/for some/all of the following coolant temperature, inlet temperature, RPM, load, time after start, time since last start (using ds1807? timer chip), acceleration enrichment
    • Coolant based proportional RPM limit
    • Altitude correction that is tunable because the ONLY effect this has is on exhaust scavenging efficiency which differs greatly between engines.
    • Dwell and spark time set at the same time such that you always get full dwell or more and only suffer slight retard for one or two cylinders if advance changes upward during a dwell.
    • Pre start (priming) and after start timing and fuel adjustments with time taper and curve shape (linear, log, exp, etc)
    • Prestart priming shot size - temperature dependent
    • After start enrichment - temperature dependent
  • General features
    • Valet mode, richish, low rpm limit, low/no boost/ boost cut/ etc
    • Staged injector control based on timer channel interrupts and math to split the shot size between the two.
    • A single LED output used for oem style X fast blinks Y slow blinks error indication (X * Y possible errors possibly separated by a long blink to indicate more than one error)
    • Sensor expected limit exceeded errors
    • Ignition advance test mode (fixed timing)
    • Bench mode to test outputs (build this first?)
    • Closed loop AFR control during idle and cruise conditions ONLY
    • Record date/time stamp of last burn to flash in eeprom
    • General functions mappable to hardware independent virtual pins consisting of external address and internal address or vice versa
    • Code module(s) to allow extra pins on external addressable chips such as 74HC259 or via SPI or CAN
    • Fuel temperature and pressure correction from sensor
    • Some form of generic code allowing existing variables to be used with conditionals to switch on/off outputs, or adjust PWM outputs including combination of variables for one output. all spare I/O mappable to this code.
    • Multi stage shift light(s) with optional flashing on early stages
    • Overrun fuel cut
    • Knock detection and ignition retard with logging
    • PWM temperature set point fan control X 2
    • PWM closed loop fan control X 2
    • PWM PID closed loop fan control X 2
    • Timing retard/advance trim based on rate of acceleration and therefore accumulated heat
  • Features that require advanced implementation
    • Cylinder detection and sync during cranking without a cam sensor
    • XGATE controlled general high speed and high precision outputs for ignition and injection use
    • Nissan style 360 + 4 and 360 + 6 CAS units found on most four and six cylinder Nissans. Nissan do this in hardware.
  • Idle control
    • Idle timing and AFR boxing (fixed value when TPS less than X and RPM less than Y or small table to extend the idle portion (may as well just make main tables larger?)
    • Initial start up boxing same issues as above
    • PWM idle for warm up
    • PWM closed loop idle
    • PWM closed loop idle with PID control
    • Stepper idle for warm up
    • Stepper closed loop idle
    • Stepper closed loop idle with PID control
  • Boost support
    • Switchable boost levels for different fuel grades (could reuse the gear dependent boost tables and just default to the lowest one, or no control for gate only)
    • Antilag in any/all of its forms
    • Boost cut (coolant temperature,RPM,etc dependent)
    • Boost reduction due to inlet temperature, knock, traction, coolant temperature for wear and tear reasons
    • Speed based boost control trim for heat management (less boost)
    • PWM open loop boost control (TPS, RPM, gear, does ext map make sense here? very difficult to avoid oscillations I would think.)
    • PWM closed loop boost control (TPS, RPM, gear, external MAP)
    • VE correction based on exhaust manifold pressure (integrated with altitude correction?)
    • Dual boost control for Twin Turbo setups with two wastegates.
  • High performance support
    • Staged injection
    • Flat shifting
    • Nitrous control on/off and/or progressive
    • Water/meth/alcohol injection control, on off and/or PWM
    • Basic clutch switch controlled rpm limit launch control
    • Proper RPM rate of change curve shaping launch control
    • Traction control for racing and/or bad conditions based on RPM delta or wheel speed sensors, defeat via button, sensitivity via dash potentiometer
  • Logging
    • Continuous fast logging of all available parameters to a second port (option of using uart direct at higher serial rates than rs232 can support)
    • Option of a subset for much finer time scale of logs
    • Log all anomalies through some mechanism using a buffer of some sort (bad RPM/engine position input, sensors out of range etc)
    • Code module(s) to allow analog inputs via SPI, CAN, etc for the purposes of enlarging the analog sensor monitoring significantly
    • 4 wheel speed input capture and one driveshaft capture channels
    • Rapid fire MAP logging during cranking and initial running to show cylinder compression variance
    • Fuel pressure option for async/sync to show A the variance, and B the effect it has
    • Multiple wideband sensors for non-turbo per cylinder fuel tuning
    • Multiple EGT sensors for per cylinder fuel/ign tuning
    • Multiple MAP sensors for intercooler efficiency, bov efficiency, crankcase pressure, under car lift, post turbo back pressure, ex manifold pressure, and effect from altitude etc
  • Special features
    • PWM fuel pump control to save power and gain a more consistent fuel pressure due to dynamic range of the regulator not being pushed as hard (or even return-less)
    • Odd fire (this may/should be handled by the generic ignition code)
    • Rotary ignition features (this may/should be handled by the generic ignition code)
    • Table switching for dual fuel
    • EMS polls digital signature from electronic "key" pre starting and won't start if the signature doesn't match (through CAN, SPI, SCI, etc)
    • PWM VVT control (up to 2) with feedback if required.
    • PWM water pump control
    • Multiple map inputs sampled in sequence in a timed way for ITB applications
    • Table switching for fuel type, table interpolating for fuel type based on dash potentiometer
    • MAF/VAF support for those with extreme engines or desire to stay stockish
    • Stepper motor cruise control with hardware and software fail safes
    • Stepper motor traction control with hardware and software fail safes
    • Stepper motor drive by wire
    • Stepper motor speedometer/tachometer/etc guage control (via CAN and another S12HZ/S12XH core?)
    • Odd fire support should be handled by base ignition codes flexibility, otherwise support for it separately
    • Flexfuel support either by dash potentiometer or by sensor
  • What we don't want
    • Any sort of transmission control on board. This belongs in a seperate case and besides, real performance cars have a clutch! (IMO anyway)
    • On board self tuning via flash burning (wears out flash amongst other issues) (unless it can be done with deltas on the eeprom.)
    • EDIS support ?
    • "flood clear mode" or similar as it just causes trouble, if you flood your engine... you know what to do.
    • Narrow band O2 is useless, discourage people from trying by not including support. (many users wrongly believe its helpful)
Thank you in advance for your input.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
LostSoulMiata
TO220 - Visibile
Posts: 13
Joined: Tue Jan 15, 2008 5:10 pm
Location: FL
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by LostSoulMiata »

change the water injection to water/methanol/alcohol injection or make them seperate parameters?

Any ideas as to what rpm increments you can start settings at?
Andrew-
Sakura- 1991 Mazda Miata, Rat-rod styling, FE3N-T swap in progress
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by Fred »

Hi,

Congratulations on being the first to post something useful :-)
LostSoulMiata wrote:change the water injection to water/methanol/alcohol injection or make them seperate parameters?
I'll rename it. When used like that its primary function is knock reduction and to a much lesser extent intercooler replacement. However when used as a fuel it falls into the same general category as petrol/gasoline.
Any ideas as to what rpm increments you can start settings at?
Relocatable rpm and load intervals are in the master plan. I will add that to the list.

Thanks for your input.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
LostSoulMiata
TO220 - Visibile
Posts: 13
Joined: Tue Jan 15, 2008 5:10 pm
Location: FL
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by LostSoulMiata »

Glad I could help :mrgreen: I'll do some searching and see what else I could use
Andrew-
Sakura- 1991 Mazda Miata, Rat-rod styling, FE3N-T swap in progress
User avatar
KW1252
LQFP112 - Up with the play
Posts: 166
Joined: Tue Jan 15, 2008 5:31 pm

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by KW1252 »

Step motor control is something I'd like to see. The actual motor coil driver would be an external board, the EMS would only have to give steps and direction bit.
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by Fred »

Thank you, thats already listed for idle control, however I'll add that in under the specific section for cruise control.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
em_knaps
QFP80 - Contributor
Posts: 99
Joined: Wed Jan 16, 2008 11:09 am
Location: New Zealand

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by em_knaps »

A thought about boost controllers

an overall boost control stepper motor driver
but also boost limits cross referenced with TPS values

for those small engines that run large boost and a large TB..

and often get full boost at half throttle,

just a thought, perhaps changing TB size would be more appropriate...
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by Fred »

Fred wrote:PWM open loop boost control (TPS, RPM, gear)
PWM closed loop boost control (TPS, RPM, gear)
Yep, you are 100% correct, boost should be TPS dependent for sure, without that, the system would try to increase boost as you lifted to compensate and throttle response would be extremely poor indeed. (like having the wastegate plumbed to the manifold instead of before the throttle)

Thanks for your comments :-)

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
Fred
Moderator
Posts: 15431
Joined: Tue Jan 15, 2008 2:31 pm
Location: Home sweet home!
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by Fred »

em_knaps wrote: but also boost limits cross referenced with TPS values

for those small engines that run large boost and a large TB..

and often get full boost at half throttle
It should be noted that it is not possible to go below the waste gate spring pressure, only down to it.

Fred.
DIYEFI.org - where Open Source means Open Source, and Free means Freedom
FreeEMS.org - the open source engine management system
FreeEMS dev diary and its comments thread and my turbo truck!
n00bs, do NOT PM or email tech questions! Use the forum!
The ever growing list of FreeEMS success stories!
User avatar
AbeFM
Post Whore!
Posts: 629
Joined: Sat Feb 16, 2008 12:11 am
Location: Sunny San Diego
Contact:

Re: freeEMS firmware feature wishlist (your suggestions here!)

Post by AbeFM »

Fred wrote:
Fred wrote:PWM open loop boost control (TPS, RPM, gear)
PWM closed loop boost control (TPS, RPM, gear)
Yep, you are 100% correct, boost should be TPS dependent for sure, without that, the system would try to increase boost as you lifted to compensate and throttle response would be extremely poor indeed. (like having the wastegate plumbed to the manifold instead of before the throttle)
Em made another request, one that is often overlooked, and one that I imagine is technically infeasable, though I'm not sure I understand why: Electrically actuated wastegate. I don't know why it isn't done, but while I've seen crazy schemes for oil pressure operated wastegates, I have not seen electric ones. It sure doesn't seem hard, but it's never done. It's probably a bit too large a project to handle, but maybe someone could pick it up on their own. Certainly a linear actuator of some sort could work. And it would allow you to reach any low boost you wanted.

One other thing I've noticed, when you try to shoot for a high manifold pressure and have the throttle closed to fight this, the turbo spins like mad trying to reach it - this heats the turbo, heats the air, would overspin the turbo (at least initially) while trying to blow apart all your IC piping, which will rapidly reach the max pressure the turbo can supply while some small percentage of it flows past the throttle plates.

Then, when you DO ask for more boost, you have a heat-soaked intercooler. I like to see the IC pressures a few PSI above my target boost, it gives me a very agressive tip in, great throttle response. I take my boost signal ahead of the throttle plates, after the IC for just this reason.

Ideally, I would take one signal before it, and one in the manifold, and the logic would look like:
Manifold pressure = X & IC Pipe pressure < Y, Y = X(max) + delta

But a throttle position based MAP might work just as well.
Post Reply