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)
Fred.