View Single Post
Old 10-13-2019, 10:50 AM   #18 (permalink)
Ecky
Master EcoModder
 
Ecky's Avatar
 
Join Date: Dec 2011
Location: New Zealand
Posts: 5,097

ND Miata - '15 Mazda MX-5 Special Package
90 day: 39.72 mpg (US)

Oxygen Blue - '00 Honda Insight
90 day: 58.53 mpg (US)
Thanks: 2,907
Thanked 2,572 Times in 1,594 Posts
Came across a great writeup on this topic as pertains to Honda ECUs:

Quote:
Honda knock control is designed to cope with different quality fuel in a stock engine. It is important to remember these design parameters when tuning the knock control to suit your engine.

The knock control method Honda uses can seem complicated, but it helps to understand how an engine is tuned from the factory. All tuning is performed on an engine dyno using an automated process which tunes every location in each table. For VTC engines this includes each cam angle table as well.

1. Using a (very) high octane fuel, the engine is tuned to find the ignition timing which makes the most power. This is called 'mean best torque' (MBT) ignition timing.

2. Using 100 octane (RON) fuel, the engine is tuned to find the maximum spark advance before any knock is likely. This is called the 'knock ignition limit'.

3. Using 90 octane (RON) fuel, the engine is tuned to find the maximum spark advance at this octane. This gives the low octane knock limit ignition advance. The reason 90 and 100 octane is used (approx 85 and 95 octane r+m/2 method) is because this is the likely range of fuel octane the engine will used with.

An example graph showing ignition timing for a single rpm point:



The normal ignition tables contain MBT ignition advance values (black line above). An additional table contains the knock ignition limit values (blue line above). It is possible for the knock ignition limit to be lower than the MBT timing. In this case, the ECU will use the lower of the MBT timing and knock ignition limit timing so that the engine will make the most power possible, but will not knock. eg at 80 kPa manifold pressure the ignition table contains 30º, but the most timing the engine can run is 28º (from the knock ignition limit table). Thus the ECU may run less timing than the ignition tables at certain load/rpm points, even if it does not detect noise from the knock sensor. Note that this will not show as 'knock retard', as the ECU considers this to be a 'no knock' condition.

Actual ignition timing used (green line):



The ECU has the ability to retard the ignition further if it determines that knock is occurring. From the amount of knock sensor noise, and knock sensitivity, the ECU adjusts a 'knock control' ( or 'K.Control') variable. Nominally the 'knock control' contains the estimated fuel octane, as a percentage of the difference between 100 and 90 octane. eg a value of 0% means the ECU considers the fuel 100 octane or above, a value of 25% means the ECU considers the fuel to be 97.5 octane. The K.Control is dynamically adjusted at a fairly slow rate while driving.

If K.Control is greater than 0% and the maximum ignition timing is less than the MBT timing then the difference between the knock ignition limit and maximum ignition timing will show as a knock retard value.

Actual ignition timing used (green line) with a knock control of 50%:



The ignition timing calculation is:

Ignition advance = minimum(MBT Ignition, MBT Ignition + knock ignition limit - (knock retard x knock control))
NOTE: This is not taking other compensation factors into account, such as temperature. Graphs that I've found I can adjust that affect ignition timing are:

-Idle ignition control (idle is controlled by changing ignition timing in many cars)
-Air temperature idle to light engine load retard
-Air temperature medium to high engine load retard
-Low water temperature idle and light engine load advance
-Low water temperature medium to high engine load advance
-High water temperature idle and light engine load retard
-Low water temperature medium to high engine load retard
-Ignition dwell angle (based on RPM)
-Battery voltage compensation

The main tables are typically found experimentally from a load dyno, and will depend mostly on cylinder pressure (which there's no way to measure directly), RPM and AFR. Higher cylinder pressure requires less advanced timing since the burn is quicker, and higher RPM requiring more advanced timing. Because cylinder pressure can't be measured, there are additional tables for air fuel ratio and cam angles, with X and Y axes typically RPM and manifold pressure.


Whew.

~

My takeaway? You can probably advance timing a couple of degrees and get slightly better fuel economy (and power). But how to do this without a programmable ECU?

Looking at the tables, by default my ECU is not advancing or retarding timing at light engine load for air temperature, so spoofing that won't help during typical cruising conditions, and to make matters worse it DOES compensate by adding more fuel. It also only advances ignition timing when water temperature is below (in my case) 9 degrees celcius, and I don't think you want the ECU thinking the engine is always running cold. If you spoofed the battery voltage somehow it would also affect tons of other things, such as the O2 sensor and fuel injectors.
  Reply With Quote
The Following User Says Thank You to Ecky For This Useful Post:
me and my metro (10-13-2019)