GenBoard/UnderDevelopment/FirmWare/PowerRelated (2006-03-16 04:43:08)

Power regulation related subpage of GenBoard/UnderDevelopment/FirmWare

A proposed power-target sublayer that consolidates

all are some way of controlling power, with a combination of


Unified fuelcut - minimalistic

Currently \n

if( RPM > overrun_fuelcut && (TPS < iac_tps_threshold))
|| ( kpa < fuelcut_min_kpa){
  then  cut fuel;
}

This works very well normally, but does not work well for broken IAC (which is not uncommon in racing). The following is a proposed candidate, under evaluation:\nÿ2ÿ

In the latter case, overrun_fuelcut would be set much lower for a normal setup (IAC operational). No difference in normal operation, but it would make limp-home harder with a broken TPS sensor.

Overrun can be used to help race-start: Setting overrun fuelcut and fuelresume RPM to 3700 / 3400 RPM and applying a switchbutton that grounds the TPS signal. This way during race-start the rev is ideal for fast starting. (otherwise it is almost impossible to manually maintain the desired RPM with throttle and no load: the throttle is usually very touchy). The idle-air valve will close but who cares the throttle is opened anyway. Don't let the idle controller retard the ignition too much (a few degrees are OK).

After starting, switchbutton released, TPS signal back to normal, so rev-limit is raised to redline.

It would make sense to use a separate digital input channel (GenBoard/UnderDevelopment/DigitalInputs) instead of grounding the TPS signal: so 3 rev limits are possible.

Conditionfuelcut RPMfuelresume RPM
if TPS < tps_threshoverrun_fuelcutoverrun_fuelresume
else if the racestart switch is ONracestart_fuelcutracestart_fuelcut - (overrun_fuelcut - overrun_fuelresume))
else if the sequential gearbox switch just activated in the last 300msec ...= appr 1200 RPM ....=appr. 1000 RPM
in any case, if they are higher, they lowered torev_limit rev_limit - (overrun_fuelcut - overrun_fuelresume)

Improved AntiLagSystem implementation waiting for review and commit to stable branch.

Needs an external switch (to control its on/off state).

NOTE: someone review and commit these modifications (diff-ed to v1.0.23 release) to SVN which allow AntiLagSystem to set spark ATDC and bug fix to GenBoard/UnderDevelopment/StagedInjectors [Firmware patch] [vemsv3.ini patch]

NOTE: diff for launch control and ALS. [1]. I don't want to commit it yet, because have problem with my board and can't through test it.

Changes


We have launch control implemented on a Peugeot NA racecar (that is actually at position 1 in the Hungarian rallycross series, though budget is only 1/4 of several competitors) using overrun fuelcut. TPS is fed from TPS5V (the main point is the 270 Ohm limiting resistor) and the "launch activation" button grounds TPS signal so the GenBoard applies overrun fuelcut (set at appr. 4000 RPM) though the TPS is mechanically pressed (butterfly opened). Plans are to change this a bit, because operating button on dash and handbrake simultaneously is hard (moving button to handbrake would work, but there is a better way, read on): Take care that early_dwellstart might activate the coil timed from previous igndeact. In this case, we don't want fried coils, do we ? We can easily drop ign-activating from the early_dwellstart branch, but we can only drop ign_trigger_here() call if early_dwellstart was not activated.

Idle control

Note that number of bytes (2) and position in config remain.

Some iac stepper valve that drifts very heavily (only seen with a unipolar Mitsubishi IAC, where wiring has to be checked actually: min 20V flyback required for the unipolar channels as low voltage flyback will prevent correct operation, just think about how the coils relate) might benefit from a MAP-target iac implementation, where the ECM watches MAP while stepping IAC.

faster control for solenoid and twin-PWM-solenoid type

When the iac movement is significant (position changes a lot: this can happen eg. when the air conditioner clutch engages and RPM drops) it would be faster to apply full power ON/OFF (in the direction of the change) for time=configurable_constant * amplitude_of_iac_position_change

before the PWM duty is applied to hold the solenoid in position.


Separate AlphaN table

Currently RPM < hybrid_rpm_a of the j[] is TPS-indexed data; RPM > hybrid_rpm_m is MAP-indexed, and it's mixed (blended) in between those RPM-s.

might belong elsewhere: A new variable for VE-learning (maybe dropping an old, unused variable): target ego-correction. Only those will tune to egoc=+0% (the current target for VE-learning) who will race without WBO2 (for whatever reason). Anyone using WBO2 all the time want to tune VE a little richer, so ego-correction is normally -5 .. -10%