Chicago-Spike
11-18-2008, 11:30 AM
How does ECU work?
This question of whether the ECU "learns" is a bit misleading. It helps, to understand how an embedded device like an ECU works, or to have a programming background I guess, but I'll take a shot at explaining.
The short answer is, no. The stock ECU doesn't learn. Everything it knows, it knew the moment it rolled off the assembly line. Having looked at the circuit PC board, it doesn't have enough memory or a large enough cpu to be calculating injector pulses (IP) by running equations, and this would be pretty silly anyway, since from Honda's point of view - the VTX always has the same equipment, and same basic response to to operating conditions.
If you've ever taken numerical methods at the college level, you know what kind of iterative calculations it would take to calculate a series based on the number of variables involved. The sensors are used to determine the operating conditions of the motor. For example, Barometric pressure + intake air temperature can determine air density, and rather than calculating this, it can be found much much faster by using a two dimensional array as a lookup table. Manifold pressure at value Z on the stock intake manifold + air intake = Y amount of airflow. (a one dimensional array.) So, to find the total air value, we might do this (in simplified computer gibberish): Air = Density[IATVoltage, BARVoltage] * Flow[MAPVoltage] or, more correctly: Airfactor[Density[IATVoltage, BARVoltage] * Flow[MAPVoltage]] You'll note, that the voltages just become array indexes. So what the ECU is, could be considered a big lookup table machine. By this, I mean it always runs the same tables, but sensor inputs can and do change which factors are used to get the new injector pulse width. Honda engineers determine these factors by testing - but bear in mind, the goals they have might be a little different than your goals, (like emissions requirements), and they always use the stock pipes and stock airbox.
Consider, that a new airbox is going to flow more air at a given manifold pressure, than the stock airbox. Here's another thing - remember carburated motors? No computer, and everything was driven on a single operator input - the throttle position. So guess what? FI motors still calculate fuel pulse widths based on throttle position too. So, if we set all the sensor inputs to standard pressure and temperature, we can set up a fuel table to deliver hondas desired Fuel/air ratio that's going to look an awful lot like a power commander table - Throttle Position versus RPM. Call this the "base Table". Again, this is nothing more than a two-dimensional array of values stored in prom memory on the ECU. IP = SumOfSensorChanges + BaseTableValue[ThrottlePosition,RPM] Remember, the "SumofSensorChanges" ends up just being an array lookup value itself.
So, blah blah. Here's the thing - this works, but only if the sensors are calibrated correctly, and only if your bike's response to conditions is the same as the bikes Honda tested with. Since most likely, there are some differences between your bike and the test bike, and since your sensors are probably reading a trifle differently, Honda has to introduce wiggle room into the whole thing, to be sure it doesn't send you to la-la land. And that wiggle room translates to lost horsepower. Likewise, if you've put a new exhaust or airbox on, the lookup tables are now wrong a bit, and that also translates to lost horsepower. Lastly, Honda had to keep your exhaust from being too stinky, and sometimes that translates to lost horsepower too. An engine makes horsepower based on the amount of air (oxygen) that it processes. When it "pulls" harder, it requires a corresponding amount of increase in airflow to the motor to keep up. The MAP sensor measures this, by directly measuring the pressure in the intake manifolds. When the engine turns faster, it produces a corresponding vaccuum in the manifold, and indeed all internal combustion engines operate on this principle. A carbuerated motor gets fuel, because the vaccuum in the intake manifold draws fuel in through the carb in direct proportion to the air being pulled into the manifold by the vaccuum.
The ECU in your X, determines how long a "pulse" (electrical current which turns on the fuel injector - an injector flows a given rate per minute, thus in so many milliseconds, it flows X amount of fuel) by first determining the "load" (air demand) using several sensors. The BAR sensor reads atmospheric pressure. The MAP sensor reads relative pressure within the intake manifold. The BAR (parometric pressure sensor) value - the MAP value (always less than 1 BAR (as in unit of measure) in a naturally aspirated engine) = pressure drop (vacuum) in the manifold. The IAT (intake air temperature) and the BAR reading can be used to determine air density. The TPS (throttle position sensor) and the BAR sensor can be used to determine air flow (since the manifold volume and flow rate is known). The TPS sensor tells you how far the throttle plates are opened (and thus orifice size to determine flow rate) Thus, the ECU can measure directly the amount of oxygen flowing into the engine at any given moment in time. This is the mysterious load.
The ECU then says "I'm programmed to produce this air/fuel ratio, so at the current load, in order to make that, I need to squirt that amount of fuel - and turns on the injectors long enough to produce it. The ECU actually does this using lookup tables stored in its memory. In fact, 98% of what the ECU does, is pulling numbers out of lookup tables based on sensor readings. At any given time, the ECU is running three primary loops, based on three primary sensors - the fuel demand loop (MAP sensor), the valve timing loop (cam position sensor), and the ignition advance loop (ignition pulse genrator AKA the crank position sensor). It does a number of smaller things, but those are the big ones. Each of these loops plays a role in each of the other loops. The remaining sensors are largely used as modifiers to the main sensor values.
Last update: 2006-01-08 16:24
Author: Tapper
This question of whether the ECU "learns" is a bit misleading. It helps, to understand how an embedded device like an ECU works, or to have a programming background I guess, but I'll take a shot at explaining.
The short answer is, no. The stock ECU doesn't learn. Everything it knows, it knew the moment it rolled off the assembly line. Having looked at the circuit PC board, it doesn't have enough memory or a large enough cpu to be calculating injector pulses (IP) by running equations, and this would be pretty silly anyway, since from Honda's point of view - the VTX always has the same equipment, and same basic response to to operating conditions.
If you've ever taken numerical methods at the college level, you know what kind of iterative calculations it would take to calculate a series based on the number of variables involved. The sensors are used to determine the operating conditions of the motor. For example, Barometric pressure + intake air temperature can determine air density, and rather than calculating this, it can be found much much faster by using a two dimensional array as a lookup table. Manifold pressure at value Z on the stock intake manifold + air intake = Y amount of airflow. (a one dimensional array.) So, to find the total air value, we might do this (in simplified computer gibberish): Air = Density[IATVoltage, BARVoltage] * Flow[MAPVoltage] or, more correctly: Airfactor[Density[IATVoltage, BARVoltage] * Flow[MAPVoltage]] You'll note, that the voltages just become array indexes. So what the ECU is, could be considered a big lookup table machine. By this, I mean it always runs the same tables, but sensor inputs can and do change which factors are used to get the new injector pulse width. Honda engineers determine these factors by testing - but bear in mind, the goals they have might be a little different than your goals, (like emissions requirements), and they always use the stock pipes and stock airbox.
Consider, that a new airbox is going to flow more air at a given manifold pressure, than the stock airbox. Here's another thing - remember carburated motors? No computer, and everything was driven on a single operator input - the throttle position. So guess what? FI motors still calculate fuel pulse widths based on throttle position too. So, if we set all the sensor inputs to standard pressure and temperature, we can set up a fuel table to deliver hondas desired Fuel/air ratio that's going to look an awful lot like a power commander table - Throttle Position versus RPM. Call this the "base Table". Again, this is nothing more than a two-dimensional array of values stored in prom memory on the ECU. IP = SumOfSensorChanges + BaseTableValue[ThrottlePosition,RPM] Remember, the "SumofSensorChanges" ends up just being an array lookup value itself.
So, blah blah. Here's the thing - this works, but only if the sensors are calibrated correctly, and only if your bike's response to conditions is the same as the bikes Honda tested with. Since most likely, there are some differences between your bike and the test bike, and since your sensors are probably reading a trifle differently, Honda has to introduce wiggle room into the whole thing, to be sure it doesn't send you to la-la land. And that wiggle room translates to lost horsepower. Likewise, if you've put a new exhaust or airbox on, the lookup tables are now wrong a bit, and that also translates to lost horsepower. Lastly, Honda had to keep your exhaust from being too stinky, and sometimes that translates to lost horsepower too. An engine makes horsepower based on the amount of air (oxygen) that it processes. When it "pulls" harder, it requires a corresponding amount of increase in airflow to the motor to keep up. The MAP sensor measures this, by directly measuring the pressure in the intake manifolds. When the engine turns faster, it produces a corresponding vaccuum in the manifold, and indeed all internal combustion engines operate on this principle. A carbuerated motor gets fuel, because the vaccuum in the intake manifold draws fuel in through the carb in direct proportion to the air being pulled into the manifold by the vaccuum.
The ECU in your X, determines how long a "pulse" (electrical current which turns on the fuel injector - an injector flows a given rate per minute, thus in so many milliseconds, it flows X amount of fuel) by first determining the "load" (air demand) using several sensors. The BAR sensor reads atmospheric pressure. The MAP sensor reads relative pressure within the intake manifold. The BAR (parometric pressure sensor) value - the MAP value (always less than 1 BAR (as in unit of measure) in a naturally aspirated engine) = pressure drop (vacuum) in the manifold. The IAT (intake air temperature) and the BAR reading can be used to determine air density. The TPS (throttle position sensor) and the BAR sensor can be used to determine air flow (since the manifold volume and flow rate is known). The TPS sensor tells you how far the throttle plates are opened (and thus orifice size to determine flow rate) Thus, the ECU can measure directly the amount of oxygen flowing into the engine at any given moment in time. This is the mysterious load.
The ECU then says "I'm programmed to produce this air/fuel ratio, so at the current load, in order to make that, I need to squirt that amount of fuel - and turns on the injectors long enough to produce it. The ECU actually does this using lookup tables stored in its memory. In fact, 98% of what the ECU does, is pulling numbers out of lookup tables based on sensor readings. At any given time, the ECU is running three primary loops, based on three primary sensors - the fuel demand loop (MAP sensor), the valve timing loop (cam position sensor), and the ignition advance loop (ignition pulse genrator AKA the crank position sensor). It does a number of smaller things, but those are the big ones. Each of these loops plays a role in each of the other loops. The remaining sensors are largely used as modifiers to the main sensor values.
Last update: 2006-01-08 16:24
Author: Tapper