CPSC Staff Statement 

University of Alabama Final Project Report

“Advanced Algorithm Development and Implementation of Enclosed Operation Detection and Shutoff for 

Portable Gasoline-Powered Generators”1

The attached report titled, “Advanced Algorithm Development and Implementation of Enclosed Operation 

Detection and Shutoff for Portable Gasoline-Powered Generators,” presents the findings of research conducted by 

the University of Alabama, College of Engineering, (UA) under a contract agreement with the U.S. Consumer 

Product Safety Commission (CPSC).2

 This research was performed in support of CPSC’s advance notice of 

proposed rulemaking (ANPR) to address the carbon monoxide (CO) poisoning hazard associated with the use of 

portable generators.3

Under this agreement and a prior one between CPSC and UA4

, staff tasked UA to develop and program an 

algorithm into the engine control unit (ECU) of an electronically controlled, closed loop, fuel-injected prototype,

low CO-emission portable generator that would sense when the generator was operating in an enclosed space and 

automatically shut off the generator before creating an unacceptable CO exposure. Under both agreements, staff 

specified that the algorithm should not rely on any additional sensors other than those already integral to the 

existing engine management system. As such, this would serve as a tamper-proof, supplementary approach to 

reducing further the risk of CO poisoning associated with the prototype generator, without adding any additional 

component cost or introducing concerns about CO sensor durability and reliability. Shortcomings with the first 

algorithm, developed and tested under the initial agreement, were later discovered during subsequent testing 

conducted by CPSC staff and National Institute of Standards and Technology (NIST).

5

 This rendered the first 

algorithm unacceptable. The initial algorithm occasionally would shut off the generator when it was operated 

outdoors and, under certain circumstances, would not shut off the generator when it was operated indoors. Even 

with the identified limitations of the first algorithm, however, the algorithm demonstrated its capability to shut off 

the engine when the algorithm’s logic rendered a shutoff decision. In addition, data acquired during testing of the 

first algorithm provided information for another approach which consisted of using data from the ECU to estimate 

the oxygen concentration in the intake air. This led to a second contract with UA (referenced in footnote 2) for 

development of a second algorithm based on this new approach.

The second algorithm is described in this report. UA developed and implemented the algorithm for initial 

testing on a modular ECU development platform and then later implemented it on a “black box” ECU, adapted in 

place of the modular ECU, on the same generator. UA performed tests on the generator configured with each 

ECU in both indoor and outdoor locations, while both constant and varying load profiles were applied to the 

generator. In the scenarios tested (seven indoor tests and five outdoor tests), the generator did not shut off when 

operated outdoors and did shut off when operated indoors.

 1 This report has not been reviewed or approved by, and does not necessarily represent the views of, the Commission. 2 Contract HHSP233201100012C 3

 Portable Generators; Advance Notice of Proposed Rulemaking; Request for Comments and Information, Federal Register, 

71 FR 74472, December 12, 2006, available online at http://www.gpo.gov/fdsys/pkg/FR-2006-12-12/pdf/E6-21131.pdf. 4 Contract CPSC‐S‐06‐0079 5 Report for task to develop first algorithm, performed under Contract CPSC-S-06-0079: “Algorithm Development for 

Enclosed Operation Detection and Shutoff of a Prototype Low Carbon Monoxide Emission Portable Gasoline‐Powered 

Generator, Additional Volume to Final Project Report”, accessible as TAB F in the staff report Technology Demonstration 

of Prototype Low Carbon Monoxide Emission Portable Generator, available online at 

http://www.cpsc.gov/PageFiles/129846/portgen.pdf.
Advanced Algorithm Development and

Implementation of Enclosed Operation 

Detection and Shutoff for Portable 

Gasoline-Powered Generators

FINAL PROJECT REPORT

Contract HHSP233201100012C

Prepared for:

Consumer Product Safety Commission

4330 East-West Highway

Bethesda, MD 20814

Prepared by:

Tim A. Haskew, Ph.D.

Department of Electrical and Computer Engineering

The University of Alabama

Box 870286

Tuscaloosa, AL 35487-0286

Paul Puzinauskas, Ph.D.

Department of Mechanical Engineering

The University of Alabama

Box 870276

Tuscaloosa, AL 35487-0276

The University of Alabama College of Engineering

October 2013
TABLE OF CONTENTS

1. INTRODUCTION ...........................................................................................................................1

2. ENGINE MANAGEMENT SYSTEM...................................................................................................3

2.1. Description of Theoretical ECU Operation..............................................................................7

2.2. MT05 ECU Description ..........................................................................................................9

2.3. Modular ECU Description....................................................................................................10

3. ENCLOSED OPERATION DETECTION STRATEGY............................................................................13

3.1. Generator Shutdown Decision.............................................................................................15

3.2. Off-Line Validation of Oxygen Depletion Shutdown Algorithm .............................................18

4. IMPLEMENTATION ON THE MODULAR PLATFORM......................................................................23

4.1. Alternate Equivalent Oxygen Estimation .............................................................................23

4.2. Alternative Implementation Strategy for Shutdown Algorithm ............................................24

4.3. Final Implementation of Shutdown Algorithm .....................................................................28

5. ALGORITHM TESTING RESULTS...................................................................................................30

5.1. Indoor Testing ....................................................................................................................33

5.2. Outdoor Testing..................................................................................................................44

5.3. Analysis and Discussion of Validation Test Results...............................................................50

6. BLACK BOX ECU IMPLEMENTATION............................................................................................53

7. CONCLUSION .............................................................................................................................58

8. REFERENCES ..............................................................................................................................59

9. APPENDIX A: Development of Estimation Strategy.....................................................................61

10. APPENDIX B: Summary of Generator Operation with Black Box ECU...........................................86
1

1. INTRODUCTION

This document serves as the final technical report for the project entitled Advanced Algorithm 

Development and Implementation of Enclosed Operation Detection and Shutoff for Portable GasolinePowered Generators.1 This project was performed by the University of Alabama (UA) for the U.S. 

Consumer Product Safety Commission (CPSC). The project is a follow-on project to contract CPSC-S-06-

0079, which directed UA to, among other tasks, develop, test, and install an automatic engine shutoff 

(or shutdown which may be used synonymously) feature on a prototype generator, constructed to 

operate with the same stoichiometric fuel control strategy and catalyst as the durability-tested 

prototype described in [1]. The purpose of this feature is to shut the engine off before the generator 

creates an unacceptable carbon monoxide (CO) exposure environment in the possible event that, when 

the prototype generator is operated in an oxygen depleted environment, its ability to meet its target CO 

emission rate is compromised. CPSC specifically requested that the algorithm be programmed into the 

prototype generator’s engine control unit (ECU), and that it have the ability to be enabled and disabled 

for testing purposes. CPSC also specifically directed that the algorithm rely only on data already existing 

in the ECU and not use any additional sensors so as to serve as a supplementary means of further 

reducing the risk of CO poisoning associated with the prototype generator without adding any additional 

component cost. 

In the original work, prior to the contract reported on herein, the objective was to develop the 

algorithm, the new prototype, and to test at UA in a highly confined space. Data from the ECU was 

collected and analyzed. The purpose of the initial testing was to identify trends within the collected 

data that could be utilized for detecting confined space operation. These analyses resulted in the 

development of an initial algorithm that is summarized in references [1, 6, 7]. The algorithm was tested

through post-processing the ECU data collected and then implemented in the ECU software by the 

manufacturer. While the resulting detection method was completely heuristic in nature and made no 

provision for shutoff at particular O2 or CO concentrations, the initial results from testing the algorithm 

at UA were promising. The prototype, with the initial algorithm programmed into the ECU, was then

tested in a test facility [2, 3, 6, 17] at the National Institute for Standards and Technology (NIST), where 

the developed algorithm was refined through variation of programmable parameters. However, three 

specific issues sporadically surfaced from additional testing at NIST:

1. With sudden and significant load changes, as well as under constant load (though less 

frequently), the algorithm would sometimes cause the engine to shut off when operated 

unconfined in the outdoors.

2. Rarely would the algorithm cause the engine to shut off in an enclosed environment with 

extremely light loads.

3. Rarely, but even with high load, the algorithm would not shut the engine off when operating in 

an enclosed environment.

 1 This project was the subject of a Master’s of Science thesis, developed, written, and defended by Joshua Spiegel, 

who was a graduate research assistant working on this project. His thesis, entitled “Small Engine Oxygen Depletion 

Shutoff Algorithm and Implementation,” was accepted by the University of Alabama in 2012 [16].
2

Even with these limitations, the initial algorithm resulted in a proof of concept in demonstrating its

capability to shut off the engine when the algorithm rendered a shutoff decision. This previous work 

also provided valuable information for another possible advanced approach to a shutoff algorithm.

The more advanced approach was addressed in the final technical report of the previous contract [7]. 

Based upon the substantial improvement it appeared to offer, the present contract was put in place. 

This present approach is based on employing data from the ECU to estimate the O2 concentration in the 

intake air and developing an index for the shutoff decision that is based upon a calculation that 

estimates the predicted formation of carboxyhemoglobin (COHb), which is a useful, though inexact, 

approximation of acute CO uptake by the body, and of acute symptom severity [14]. The R&D strategy 

employed moved from executing the algorithm on the existing ECU to implementation in an advanced 

modular ECU development platform that is commercially available. The development platform is 

described in this report and it operates within an industry standard graphical user interface providing

full programming flexibility in a real-time manner. Changes, revisions, and updates were possible 

without requiring documentation to the vendor or without contracts having to be issued. Furthermore, 

processor speed and memory availability was eliminated as a limitation.

A secondary goal of this project was to deliver a functional generator set with the algorithm in place. 

This required that the ECU functionality be migrated from the modular development platform to a black 

box system. A commercially available programmable engine controller was selected as the final 

implementation platform. This system offered the ability to include all ECU and shutdown algorithm 

functions in a closed box without the need for extensive off-board hardware and processing capability. 

However, data logging and reporting as well as “on-the-fly” adjustment was no longer an option. Thus, 

the ECU system on the final prototype is much like that which would be found on a commercially 

available generator unit. 
3

2. Engine Management System

Prior to initiating discussion on implementation details and experimental procedures, it is important to 

note that certain trade names (e.g., Nova, Labview, Matlab, etc.) or company products are mentioned 

throughout this document to adequately specify the experimental procedures and equipment used. In 

no case does such identification imply recommendation or endorsement by the University of Alabama 

staff, nor does it imply that the equipment is the best available for the purpose. 

The gasoline powered engine’s engine management system (EMS) is intended for the management of 

multiple engine tasks such as engine position tracking and synchronization of engine fuel and spark 

timing [4]. The modular development platform-based EMS for this project was to utilize a setup that 

would parallel the setup in the previous project, as described in [6, 7]. Because the new oxygen 

depletion shutdown algorithm was initially based on post-processing of data from the previous project’s 

EMS, the basic management criteria were to remain constant, including the engine operation and 

control principles. Specifically, the EMS setup is comprised of the host personal computer (PC), an 

upgraded ECU, an electronic fuel injector (EFI), a fuel pump and pressure regulator, and an ignition coil, 

along with multiple sensors for continuous engine operation monitoring. The host PC is used for human 

interfacing with the ECU to monitor and adjust engine specific parameters. The ECU is an electronic 

based system with multiple inputs and multiple outputs used to enhance engine performance. 

Specifically, the ECU is used to execute pre-programed calculations based on data provided from engine 

sensors and is responsible for controlling associated outputs to achieve desired engine operation. The 

list, shown below in Table 2.1, details the multiple inputs and outputs to the modular ECU, and this list is 

similar to the I/O list from the previous system [6].

Table 2.1: Input and output signals of the modular ECU.

Signal Input / Output Type

Oil Temperature Input Analog

Intake Air Temperature Input Analog

Manifold Absolute Pressure Input Analog

Heated Oxygen Sensor Input Analog

Battery Voltage Input Analog

Crank Position Input Pulse

Fuel Injector Output Digital

Spark Coil Output Digital

Each of the individual inputs and outputs to the ECU serve a specific role in the overall engine control 

scheme. The two ECU outputs, for the fuel injector and spark coil, together serve a common purpose of 

permitting fuel delivery and spark timing for fuel ignition through means of the EFI, fuel pump, fuel 

pressure regulator, and ignition coil. The heated oxygen sensor is used to detect oxygen content in the 

exhaust gas and determine whether the fuel mixture is rich or lean through means of a corresponding 

voltage signal. The oil temperature sensor is responsible for monitoring the temperature of the engine’s 
4

oil. The intake air temperature (IAT) sensor is responsible for monitoring the temperature of the air 

entering the engine. These two sensors, oil temperature and IAT, provide signals that contribute to 

various calculations and look-up tables for parameters which effect engine operation. The crank 

position sensor is a variable reluctance (VR) sensor, used in conjunction with a 24 tooth (minus 1) crank 

wheel, responsible for defining engine speed (RPM) and a crank position reference point. By 

establishing a crank position reference point, essential engine parameters such as manifold absolute 

pressure (MAP), fuel delivery, and spark timing can be evaluated. The crank position sensor and 24 

tooth crank wheel are shown in Figure 2.1 [6, 7].

Figure 2.1: Crank position sensor and 24 tooth crank wheel.

Via a variable reluctance sensor, a pulse train voltage signal is produced by the 24 tooth crank wheel by 

exciting the crank position sensor that has magnitude proportional to engine speed. A missing tooth, or 

gap, on the crank wheel is used as a reference point by the crank position sensor for determining several 

useful parameters. First, the missing tooth is used to establish a reference point for determining when 

the piston is at top dead center (TDC). In the present strategy, the positioning of the piston at TDC is 

inferred by the falling edge of the 9th tooth after the gap on the 24 tooth crank wheel, due to its specific 

alignment with respect to the engine. In addition, the missing tooth and crankshaft synchronization 

system are used to ensure that, at minimum pressure on the engine’s intake stroke, the MAP read crank 

angle can be determined. Due to MAP signal fluctuation, caused by the single-cylinder engine, a MAP 

read crank angle algorithm is required for establishing a common MAP determination point. The MAP 

read crank angle is a function of speed and load, which requires a calibration look-up table. Since MAP 

is the primary variable used to indicate load, MAP read crank angle, sampled once per two engine 

revolutions at minimum pressure, is based upon MAP itself [6, 7]. A block diagram, shown in Figure 2.2, 

illustrates the complete layout and flow of all the EMS components including the host PC, real-time ECU, 

a connected chassis with four engine control modules, and multiple inputs/outputs to the generator. All 
5

bold lines indicate a voltage signal and all dashed lines indicate signals to or from engine control 

modules harbored in the ECU chassis. Additional signals are labeled accordingly.

Crank

Position

Sensor

Oil Temp

Sensor

Intake Air

Temp Sensor

MAP Sensor Heated O2

Sensor

A/D Module

24 Tooth

Wheel

ECU 

Power 

Supply

Modular ECU

O2 Sensor

Module

Host PC

Port Fuel

Injector Module

Fuel

Injector

Pressure

Regulator

Fuel

Pump

Spark Driver

Module

Spark

Coil

SENSORS

(analog outputs)

12 V

Power 

Supply

COMPUTATION

RJ45 Ethernet

Analog

Signal

Analog

Signal Analog

Signal

Analog

Signal

Digital

Signal

Digital Signal (multiplexed)

Power

Source

Digital Signal Digital Signal

Analog

Signal

Power

Source

Power Source

Power

Source

Power Source

OPERATIONAL HARDWARE

Analog

Signal

Analog

Signal

Analog

Signal

Fuel

Flow

Fuel

Flow

Figure 2.2: Diagram of modular EMS configuration with hardware connections and data/signal flow.
6

The EMS chassis currently contains four operational modules for engine control and one 

instrumentation module, not included in the EMS diagram, for additional data acquisition. The five

modules harbored in the chassis include the following: A/D Combo Module Kit, Port Fuel Injector (PFI) 

Driver Module Kit, Spark Driver Module Kit, Oxygen Sensor Module Kit, and Bidirectional Digital I/O 

Module. The A/D Combo Module Kit is responsible for interfacing between any analog or digital inputs 

on the generator, such as those sensors which indicate operating conditions. Specifically, the A/D 

Combo Module Kit converts the generator oil temperature, intake air temperature, crank position 

sensor, and MAP sensor from analog to digital signals, which can be monitored and utilized in separate 

calculations. The PFI Driver Module Kit is used for driving low-impedance and high-impedance PFIs as 

well as generator solenoid valves. Specifically, the main task of the PFI Driver Module Kit is to control 

the generator’s fuel pump and fuel injector. The Spark Driver Module Kit is responsible for controlling 

the spark coil, ensuring precise timing for correct engine synchronization. The Oxygen Sensor Module 

Kit is responsible for interfacing with wide-band and narrow-band oxygen sensors. Specifically, the 

Oxygen Sensor Module Kit is used for engine tuning, closed-loop engine control, and data acquisition. 

The Bidirectional Digital I/O Module was acquired, in addition to the four previous modules needed for 

engine control, in order to output digital signals to an analog oscilloscope. This module allowed for 

rapid controller and engine debugging, without having to modify and recompile the associated source 

code [4].

Each of the previously described control modules are supported by graphical virtual instruments (VIs),

which are programs running in a programming environment that is an industry standard that contains

the source code used to operate and control the associated hardware [11]. In addition, the system must 

utilize calibration software, necessary for establishing communications between the real-time kernel 

and the host VI by means of managing all necessary data points and lookup tables. The host VI is used 

to monitor and control any desired system input or output in a real-time manner. Open-loop and 

closed-loop engine tuning for stoichiometric engine operation are also performed in the host VI, in realtime, which makes it vital to the new ECU platform.

During the course of the previous contract, which involved the development of a low CO emissions 

prototype generator and safety shutdown feature, two separate commercially available engine 

controllers, which were user configurable, but not user programmable, were utilized. A now obsolete 

controller, the IMEC-168 ECU, was used for initial calibration, testing, and developing the low CO 

emissions prototype generator. This particular ECU, used with a 3-way catalyst, aided in the reduction 

of CO emissions from a portable gasoline powered generator by 97% [6]. The MT05 ECU was 

subsequently used specifically for work completed on the previous oxygen depletion shutdown 

algorithm, with the same gasoline powered generator already modified for low CO emissions.

In an effort to improve enclosed operation detection and shutoff of the existing setup, the new modular

ECU was then introduced to the previously used generator rated at a continuous output of 7 kW. A 

photograph depicts the portable gasoline powered generator equipped with EMS in Figure 2.3. As a 

replacement to the previous controller, the advantageous modular ECU allows for more real-time 

engine adjustments, as well as modifications and additions to the ECU. Replacing the ECU was 
7

necessary, and fortunately, the spark coil and all sensors used with the previous MT05 ECU were able to 

be reused with the upgraded modular ECU.

Figure 2.3: Modular EMS equipped generator. Modules housed in grey electrical box and connected to 

generator hardware via custom wiring harness.

2.1. Description of Theoretical ECU Operation 

Two different engine controllers have been used throughout the course of the two contracts with CPSC 

for the purpose of developing an oxygen depletion safety shutdown feature; however, the fundamental 

bases upon which they operate are the same, as the modular ECU utilizes a similar speed-density 

method as the previous MT05. A parallel deterministic approach and set of principle equations are 

used, as described in [6, 7, 8], which utilize the primary inputs of engine speed and a load variable, 

based on MAP, for ultimately controlling the mass of fuel delivered. The speed-density method, based 

on the ideal gas law, is used to calculate the quantity of air entering the engine, thus delivering a 

stoichiometric fuel mixture to the engine. The ideal gas law is shown in Equation 2.1 where (P) is 

pressure, (V) is volume, (m) is mass, (R) is the air gas constant, and (T) is temperature. The actual mass 

of air entering the cylinder divided by the theoretical mass of air entering the cylinder is defined as the 

volumetric efficiency, shown in Equation 2.2. As seen in Equation 2.2, the theoretical mass of air 

entering the cylinder is equal to the product of the air density entering the cylinder (ρair) and the engine 

displacement volume (VD). As part of the calibration procedure, the volumetric efficiency is determined 

as a function of engine speed and load and entered into a lookup table for use by the algorithm as part 

of the air flow calculation [6, 7].

P *V = m * R *T (2.1)
8

( )

( ) air D

air

air

air

V

m

m theoretical

m actual VE

ρ * = = (2.2)

Because the air is an ideal gas, a relationship with the ideal gas law can be developed. Specifically, by 

combining Equation 2.1 with the fact that air density is defined by air mass divided by air volume, the 

manifold air density can be calculated in terms of the specific pressure, temperature, and air gas 

constant. The manifold density is directly proportional to the manifold pressure (Pman) and inversely 

proportional to the manifold temperature (Tman), as shown in Equation 2.3 [6, 7, 8].

man

man man R T

P

* ρ = (2.3)

Using the combination of Equations 2.2 and 2.3, equating air density entering the cylinder to manifold 

air density, the actual mass of air entering the cylinder is calculated, as shown in Equation 2.4, with 

respect to the specific manifold conditions. As described in [6], a unique relationship between Equation 

2.3 and the current EMS can be drawn by the following parameters: Pman = MAP (kPa), VD = volume of 

the cylinder, 389 (cm3

), R = air gas constant, 0.286 (kJ/[kg*K]), and Tman = charge air temperature (CAT) 

(°C). The CAT is a useful calculation that estimates the air temperature entering the cylinder and is

based on experimental correlation which is dependent upon an RPM and MAP based coefficient lookup 

table, IAT, and oil temperature (CLTS).

man

man D

air R T

P V VE

m *

* * = (2.4)

The calculated mass of air entering the cylinder is used by the ECU to determine the desired mass of fuel 

to be supplied to the engine, shown in Equation 2.5, based on the desired AFR set point. The desired 

AFR set point for this project is 14.6 to 1, stoichiometric for gasoline powered engines, for every 

operating condition. Equation 2.5 can be combined with equation 2.4 to express the desired mass of 

fuel to be supplied to the engine (per cycle) in terms of parameters measured as the engine operates 

(Pman, Tman), obtained from a calibration lookup table (VE, AFR) as a function of speed and load, and 

constant values (VD, R), as shown in Equation 2.6 [6, 7].

AFR(desired)

m

m air

fuel = (2.5)

* * ( )

* *

R T AFR desired

P V VE

m

man

man D

fuel = (2.6)

The ECU attempts to deliver the desired fuel mass (per cycle) by controlling the fuel injector opening 

pulse width. For insurance of expected fuel delivery, an experiment was conducted to estimate the 

injector flow rate (IFR), which was determined to be approximately 1.34 (g/s). Specifically, the IFR is 

used by the ECU, in conjunction with various transient fuel parameters, to calculate the injector fuel 
9

pulse width (FPW), thus ensuring that the correct mass flow rate of fuel is delivered. A fuel pressure 

regulator is used to maintain constant pressure across the fuel injector’s exit nozzle, ensuring that the 

fuel injector pulse width is proportional to the amount of fuel it supplies. By including some variable of 

the fuel injector opening and closing times, the FPW needed to achieve the fuel mass calculated in (2.6) 

can be determined by injector flow rate parameters. The mass of fuel delivered, shown in Equation 2.7, 

demonstrates a relationship to the IFR, the FPW time (tFPW), and the FPW time correction (tC), used to 

account for time needed to fully open the injector and close the injector. Furthermore, by equating the 

mass of fuel delivered in (2.7) to the desired mass of fuel in (2.6), the FPW time needed to supply the 

desired mass of fuel can be calculated, as shown in Equation 2.8 [6,7].

( C ) m fuel del = IFR * tFPW − t , (2.7)

C man

man D

FPW t

R T AFR desired IFR

P V VE

t = + * * ( ) *

* * (2.8)

In order to control the engine around a stoichiometric fuel mixture, the same closed-loop control (CLC) 

algorithm from the MT05 controller was used in the newly acquired modular ECU. Initially, the system 

runs in the open-loop mode until temperature and run time thresholds have been achieved, which 

activates CLC. These particular thresholds were extracted from the previous system; however, the new 

platform allows for CLC to be initiated at the user’s discretion if a scenario arises which calls for CLC to 

be activated sooner or later than normal. An oxygen sensor, placed in the exhaust stream, acts as a 

feedback signal for the closed-loop control algorithm, sensing either a fuel rich or lean mixture. 

Accordingly, the calculated fuel pulse width time is adjusted so the oxygen signal constantly switches 

between rich and lean, ensuring the fuel mixture is always near stoichiometric. A proportional-integral 

(PI) control method was used to ensure that the AFR constantly oscillated around stoichiometric. The 

proportional component of the controller is responsible for the size of the FPW adjustment, which is 

determined by the magnitude of the difference between the actual and desired conditions. Essentially, 

the proportional factor uses the oxygen sensor feedback to constantly vary the fuel mixture between 

rich and lean. The integral component is responsible for ensuring that an event, or particular value, will 

eventually occur by constantly adjusting until the feedback signal surpasses a set value. Therefore, the 

integral factor increases for a lean fuel mixture and decreases for a rich fuel mixture, ensuring that the 

controller maintains an AFR near 14.6 to 1. Finally, the proportional and integral corrections are applied 

to the FPW after each calculation, and the control process is subsequently repeated. Gain coefficients 

must be adjusted for both the proportional and integral components, located in a lookup table based on 

engine speed and load, in order to ensure quick and accurate corrections are made by the controller 

adjustments [6, 7]. The new ECU is modified to emulate engine operation and control of the previous 

MT05 ECU. However, the subsequent subsections discuss how each controller remains unique.

2.2. MT05 ECU Description

As described in [6], the previously used MT05 ECU, shown in Figure 2.4, was a replacement, and 

upgrade, for the obsolete IMEC-168 ECU. The MT05 ECU provided a slimmer design, which allowed for 
10

the controller to be mounted inside of the generator frame, helping to eliminate unintended damage. 

Also, the MT05 ECU utilized an external MAP sensor, unlike its predecessor, in order to increase the 

MAP signal consistency from the IMEC-168 system by eliminating the 300 mm MAP tube and being

placed directly above the engine’s existing MAP port. Allowing for a more reliable MAP signal was vital, 

as it is used for calculating many engine control parameters.

Figure 2.4: MT05 ECU, used in previous work, mounted inside the generator frame [6].

The MT05 ECU possessed a 20 MHz microprocessor with 512 bytes of EEPROM memory space and 256 

Kbytes of flash EEPROM memory space. A controller area network (CAN) was used as communication 

link between the ECU and laptop computer. The associated software contained a calibration toolbox,

which was used for real-time data logging, data playback, and exporting data. As previously mentioned, 

the MT05 system utilized an external MAP sensor, as well as a heated oxygen sensor. Also, an upgrade 

on the MT05 ECU was the ability to modify the look-up table axes for improved engine performance [6, 

9]. As the MT05 ECU served as a substantial upgrade from the IMEC-168 ECU, it still lacked the ability to 

be modified as an open-source controller. Upon completion of the previous oxygen depletion shutdown 

algorithm, based on post-processing of data, a submission to the manufacturer was required for 

implementation. This eliminated the possibility of shutdown algorithm modification based on current 

test data.

2.3. Modular ECU Description

The newly acquired modular EMS controller, shown in Figure 2.5, is based on a National Instruments 

Compact RIO (reconfigurable input / output) NI cRIO-9022 which allows for real-time deterministic 

control, data logging, and a wide variety of engine management tasks such as tracking engine position 

and engine synchronization of fuel delivery and spark control. These ECU operations are based on field 

programmable gate arrays (FPGA) [4, 5]. Figure 2.5 also depicts the attached chassis with four control 

modules and one NI module for additional data acquisition. The primary advantage of the modular ECU 
11

is that it is a mostly open-source controller that provides the ability for modifications and additions to 

the existing ECU source code through the LabVIEW-based software which accompanies each individual 

control module present in the chassis. In addition, the modular ECU still possessed the main upgrade 

features of the previous MT05 ECU such as an external MAP sensor and the ability to modify the look-up 

table axes for increased resolution and engine performance. One notable difference from the previous 

MT05 ECU is the modular system’s location with respect to the generator itself. Due to the system’s 

larger size, it cannot be mounted directly on the generator and must be placed inside of a protective 

box, as shown in Figure 2.5, to limit exposure to potentially harmful elements and prevent any 

accidental damage. , It is worth noting that the finished product for engine operation, control, and new 

safety shutdown algorithm were implemented on a smaller, less complex, and less expensive controller, 

intended only for use after all desired modifications had been finalized. This allowed for ease of ECU 

modifications with the Modular system, while final implantation on a smaller controller allowed for the 

final product to be mounted on the generator.

Figure 2.5: Modular ECU components mounted in protective electrical box.

The modular ECU system possesses a 533 MHz processor with 2 GB of nonvolatile storage and 256 

Mbytes of dynamic random-access memory (DRAM). The real-time kernel operates at 1 kHz, while the 

FPGA kernel operates at 40 MHz for more time-critical engine operations. The controller itself has 

several different external connection capabilities such as multiple Ethernet ports for remote interfacing 

with the host PC and file servers, a USB port for hosting external memory devices, and RS232 serial port 

connection which could be used as to communicate between the ECU and peripherals. The controller is 

designed to function for long periods of time, at low power consumption, and a wide operating 

temperature range [5].
12

The modular EMS and ECU was modified in hardware and software to emulate that of the previous 

MT05 controller as closely as practically possible. The modular ECU was originally designed for a multicylinder engine, while the generator used for this project utilized a single-cylinder engine. Therefore, 

due to the ECU’s ability to be reconfigured, it was modified in order to accommodate a single-cylinder 

engine. In order to begin this modification, the associated code in the modular ECU was altered in the 

way of disabling the three additional cylinders needed for four-cylinder operation. In addition, the 

engine design warranted the previously discussed MAP read crank angle algorithm to be implemented 

for determining MAP at a common point, the minimum pressure read once every two engine 

revolutions. Due to the generator’s absence of a cam sensor, a pseudo cam signal algorithm was 

implemented in the ECU, using LabVIEW code, which would emulate that of a physical cam signal. A 

physical cam sensor produces a true signal synchronized with the camshaft which can be combined with 

the crank position sensor to establish crank position relative to the complete four-stroke engine cycle. 

One important calculation that was performed by the previous MT05 controller, missing in the modular

ECU, was the CAT calculation. Therefore, necessary additions were made to the modular ECU software 

to perform the CAT calculation. CAT is absolutely vital because of the fact that oxygen estimation and 

the emergency engine shutdown algorithm, discussed in the following chapter, are dependent upon the 

CAT estimation. The final modification to the modular ECU was the implementation of the previously 

discussed CLC algorithm used in the previous MT05 controller to control the AFR to stoichiometric.
13

3. ENCLOSED OPERATION DETECTION STRATEGY

During work done in this project’s previous phase, an oxygen depletion shutdown algorithm was 

developed that, although demonstrated a proof of concept, possessed shortcomings which needed to 

be addressed. Specifically, the previous shutdown algorithm was only a heuristically based model which 

did not address the air chemistry directly related to an oxygen depleted environment. Also, the 

previous algorithm sometimes produced false-positive shutdowns with sudden and significant load 

changes. Finally, there were occasions where it would not shutoff when operated in an enclosed 

environment, particularly with extremely light loads applied .

In an effort to improve the oxygen depletion safety shutdown feature, an advanced algorithm was 

devised by attempting to estimate the oxygen percentage in a gasoline portable generator’s intake air 

without the use of any external emission sensors. While several numerical estimation methods proved 

unsuccessful, a hybrid analytical and heuristic strategy demonstrated some promising results. The 

general purpose of this strategy was to be able to generate a curve that matched the oxygen data 

measured throughout testing at the NIST test facility. It was determined that by utilizing the gas 

constant for air, the actual gas constant at the generator’s air intake, expected fuel-air ratio, and actual 

fuel-air ratio, a useful relationship could be derived to estimate the amount of oxygen in the air intake 

stream if the small injector opening or closing times were neglected. In the ECU, the base FPW is 

calculated by using the gas constant for air and a desired air-fuel mixture ratio. Then, through control 

system feedback, the actual gas constant at the generator’s air intake could be calculated based on the 

actual FPW corrected by the controller, also known as the final FPW. Also, the actual fuel-air ratio could 

be determined once the control system corrections are made. Through some mathematical 

simplification, the ratios of the actual intake air gas constant to the gas constant for air and expected 

fuel-air ratio to actual fuel-air ratio are used to provide a useful FPW ratio for oxygen estimation, as 

shown in Equation 3.1 [7].

FPW final

FPW base

air

actual

actual t

t

R

R

F A

F A

,

exp , =































(3.1)

This ratio proved useful for developing a strategy to estimate the oxygen percentage in the generator’s 

intake air stream. In fact, a measure of control system correction for oxygen deficiency in the intake gas 

stream is described by this ratio of base FPW to final FPW; it was further observed that the ratio 

described in Equation 3.1, in conjunction with the generator’s calculated CAT, could be used as a 

parameter in a linear oxygen estimation equation. In particular, this constant value (C) used for linear 

estimation is described by the ratio shown in Equation 3.2. In addition, it was determined that a basis of 

this constant value was able to more accurately estimate oxygen once the CAT stabilized [7].

t CAT

t

C

FPW final

FPW base

* ,

, = (3.2)
14

Once the relationship in (3.2) was developed, an oxygen percentage estimation equation was 

heuristically developed from the measured oxygen data obtained during seven tests, listed in Table 3.1,

that were conducted at NIST. These tests were conducted during the first phase of this work as part of a 

larger series of tests performed to assess the efficacy of the prototype design, with and without the 

catalyst, in reducing the CO poisoning hazard by measuring the CO and O2 concentrations in the garage 

as well as all rooms in the house while the generator was operating in the garage with a cyclic load 

applied [3]. In these tests, the prototoype generator designated SO1 was operated with the algorithm 

disabled, which means it would run until the test operator manually shut the engine off. Four of the 

seven tests were conducted with the garage bay door fully closed, causing oxygen depletion to occur in 

the garage. 

Table 3.1

NIST scenarios used for initial oxygen estimation algorithm [7].

Test ID Catalyst Installed in Muffler Position of Garage Bay Door

N Yes Closed

T Yes Open 24”

Z No Closed

W Yes Closed

AH No Closed

U Yes Open 24”

V No Open 24”

The resulting linear relationship, shown in Equation 3.3, was initially used to estimate the oxygen 

percentage in the generator’s intake air stream.

%O2 = 175C + 18 (3.3)

All of the estimations developed herein are based on the characterization of the specific generator used 

in this study interacting in various indoor and outdoor environments. Had another model generator 

been used, a different set of equations may have resulted. The point is to illustrate that these 

estimation equations represent one example of how a shutoff algorithm can be devised.

This initial oxygen estimation algorithm, developed for purposes of an advanced shutdown algorithm, 

showed some promising results in generating a curve to estimate the oxygen content measured during 

NIST testing. However, due to the fact that the linear estimation in Equation 3.3 was developed by 

inspection, it was decided that the oxygen percentage levels could be calculated more accurately if new 

linear coefficients, other than 175 and 18, were mathematically derived. Also, because of the fact that 

all seven test sets used to initially develop the new algorithm were conducted indoors under a cyclic 

load profile, it was decided to include three indoor constant load tests and five outdoor constant load

tests since similar tests with the initial shutdown algorithm revealed some of its limitations that were 

described in Section 1. The processes of developing the new optimum linear estimation coefficients, 

based on the fifteen tests listed in Table 3.2, are presented in Appendix A, and the final O2 estimation 
15

equation is shown in equation (3.4). The criteria for generator shutdown decisions and off-line 

validation thereof are described in the following report sections.

Table 3.2: All fifteen NIST test scenarios used for final oxygen estimation algorithm.

Test ID Date Load Profile Environment Garage Door

N 04/01/2010 Cyclic Indoors Closed

T 04/14/2010 Cyclic Indoors Open 24”

Z 05/05/2010 Cyclic Indoors Closed

W 04/29/2010 Cyclic Indoors Closed

AH 05/13/2010 Cyclic Indoors Closed

U 04/22/2010 Cyclic Indoors Open 24”

V 04/23/2010 Cyclic Indoors Open 24”

AK 05/19/2010 5500 W Indoors Fully Open

AS 06/10/2010 5500 W Indoors Closed

AV 07/09/2010 500 W Indoors Closed

CA 09/10/2010 2500 W Outdoors

CB 09/10/2010 1500 W Outdoors

CC 09/10/2010 3000 W Outdoors

CD 09/10/2010 4500 W Outdoors

CE 09/10/2010 5500 W Outdoors

%O2 = 201.55 C + 16.96 (3.4)

3.1. Generator Shutdown Decision

Although the previously described oxygen estimation algorithm will detect an enclosed and hazardous 

operating environment when significant oxygen depletion is detected, an effort was made to use the 

oxygen estimation algorithm in determining the approximate COHb level2

, which could be used for 

generator shutdown criteria, because it was determined to offer some indication of CO in the way of 

magnitude and length of exposure without having to estimate CO itself. It was determined through 

observation that the rate of oxygen decrease showed some direct correlation with the rate of COHb 

increase. One point of interest that arose from this correlation was an individual area calculation of 

oxygen estimation, for every two sampling points, once it dropped below ambient air, or approximately 

21% oxygen. Trapezoidal integration was used to calculate such individual areas between oxygen 

estimation and a 21% threshold value, as shown in Equation 3.5. In (3.5) d(t) is the difference between 

oxygen estimation and 21% at any time (t), d(t-1) is the previous difference, and telap is the time elapsed 

between the two difference measurements. Because area is determined based on current and previous 

difference measurements, at least two data points are needed before an area can be calculated. 

 2 As calculated per an equation provided on page 67 of ref [15].
16

Through further observation, it was theorized that the oxygen estimation area (below 21%) could 

possibly be used in a linear equation, shown in Equation 3.6, to estimate COHb percentage.

[ ]

2

( ) ( 1) * elap

i

d t d t t

A

+ − = (3.5)

3 4 %COHb (A )k k = i + (3.6)

A least squares curve fitting method was employed in an effort to estimate COHb using the improved 

oxygen estimation; however, this particular method proved unsuccessful in providing an accurate 

estimate of COHb due to large variations in COHb percentage scales across the wide range of testing 

scenarios. Therefore, coefficients k3 and k4 were developed heuristically to provide a trend-oriented 

estimate of COHb, shown in Equation 3.7, and verified through visual inspection. This trend-oriented 

COHb estimate proved somewhat successful in numerical estimation for small percentages COHb. 

Although accurate numerical estimation of larger COHb percentages could not be achieved, along with 

smaller percentages, it was determined to be unnecessary due to the fact that the generator would 

have already triggered the safety shutdown feature by the time such percentages were reached. The 

trend-oriented COHb estimate (in green) is plotted with the COHb calculation [15], as shown in Figure 

3.1. It is worth noting that a less efficient first-order lag filter was used in the trend-oriented COHb 

estimation in anticipation of physical implementation, which would not provide such an efficient filter. 

Also, for outdoor tests (CA through CE), measured CO emissions were assumed to be 0 parts per million 

(ppm) and COHb was assumed to be 1%. The same test set order was used, as described in the oxygen 

estimation development, for concatenating all fifteen test cases.

% = ( )10.72 + 2.45 COHb Ai (3.7)
17

Figure 3.1: Calculated COHb levels and the COHb index computed from O2 estimate (calc filt) for 

multiple tests.

For the purpose of this project, a 10% COHb threshold was theorized to indicate indoor operation and 

an oxygen depleted environment. From observation of Figure 3.1, it was determined that the trendoriented COHb estimate exceeded 10% in all indoor tests which should, in fact, shutdown; furthermore, 

it was observed that the trend-oriented COHb estimate did not exceed 10% in any outdoor test 

environment, which should not trigger a shutdown. Therefore, the new safety shutdown feature would 

trigger if the trend-oriented COHb estimate exceeded 10% constantly for 20 s. A 20 s threshold was 

chosen to ensure that the generator did not trigger a false shutoff in the event that a transient spike in 

COHb estimate exceeded 10% for a short period of time.

0 2 4 6 8 10

x 104

0

10

20

30

40

50

60

70

80

Time (s)

COHb %

COHb estimates

meas

calc filt

U AH AK AS AV CA - N T V W Z

 CE

COHb (per EPA)

COHb (calculated)
18

Clearly, the COHb calculation is not an accurate representation of the actual COHb. However, it is an 

efficient index to base a shutdown decision upon when concerned with COHb levels. Hence, in this 

report, when the term “COHb estimate” is employed, the reader should interpret this to mean estimate 

up to 10% and strictly as an index otherwise. A pseudo code for the oxygen depletion shutdown 

algorithm is shown below:

-Oxygen Estimation

O2_calc = (Base Pulse Width / Final Pulse Width / Charge Air Temp.)*k1+k2

k1=201.55, k2=16.96

-Calculating Individual Area Measurements under 21% Oxygen Threshold

If CLC activated and O2_calc < 21% (must have at least 2 points):

Ind. Area = (Time Elap)*[(21-Current O2_calc) + (21-Previous O2_calc)]/2

If O2_calc > 21%:

Ind. Area = 0

-COHb Index Calculation & Shutdown Decision

COHb_calc = (Ind. Area)*k3+k4, k3=10.72, k4=2.45

If COHb_calc > 10%:

total_time counter starts

If COHb_calc > 10% for less than 20 seconds:

total_time counter reset to zero

If COHb_calc > 10% constantly (total_time >20 seconds):

Generator shutdown triggered

3.2. Off-Line Validation of Oxygen Depletion Shutdown Algorithm

In an effort to conduct an off-line validation of the newly derived oxygen depletion safety shutdown 

algorithm, simulations were performed for all fifteen test cases to analyze when an actual shutoff would 

occur, as determined by the algorithm, versus ideal shutoff, based on the COHb calculation of the NIST 

test data. After simulating each individual test set, key parameters observed at actual and ideal 

shutdown were identified as the following: shutdown times, COHb percentages, measured CO / 

maximum CO, and estimated oxygen. The key parameters identified during simulations and off-line 

validations are summarized in charts, shown in Figures 3.2 through 3.9, for those test sets where 

shutdown should eventually occur. It was observed during simulations that, although the trendoriented COHb estimate may trigger a shutdown slightly early or slightly late in some cases, an actual 

shutdown is only triggered when warranted and possible false-positive shutdown triggers are eliminated 

during outdoor test cases. 
19

Figure 3.2: Oxygen depletion algorithm shutdown time evaluated through simulation vs. ideal shutdown 

times based on COHb calculation at 10%.

Figure 3.3: COHb index percentage, COHb calculated per EPA, and measured CO ppm at simulated 

shutdown.

AH AS AV N W Z

Actual Shutdown Time 43.98 18.71 36.92 53.68 46.06 41.23

Ideal Shutdown Time 29.93 33.82 60.50 76.62 30.88 40.48

0.00

10.00

20.00

30.00

40.00

50.00

60.00

70.00

80.00

90.00

Minutes

Algorithm Shutdown Times

AH AS AV N W Z

COHb estimate 10.25 10.21 10.02 10.41 10.12 10.22

COHb actual 17.1 2.72 6.7 6.67 14.91 10.23

CO at Shutdown 852 711 260 158 443 322

0

100

200

300

400

500

600

700

800

900

0

2

4

6

8

10

12

14

16

18

COHb %

CO (ppm)

COHb Percentages and Measured CO at Shutdown
20

Figure 3.4: Measured CO emissions at actual shutdown time from simulation and at the ideal shutdown 

time based on a 10% COHb level computed per EPA.

Figure 3.5: Oxygen concentration estimates at actual shutdown time from simulation and at ideal 

shutdown times based on 10% COHb computed per EPA.

AH AS AV N W Z

CO at Shutdown 852 711 260 158 443 322

CO at Ideal Shutdown 757 811 238 217 525 325

0

100

200

300

400

500

600

700

800

900

CO (ppm)

Measured CO at Shutdown and Ideal Shutdown

AH AS AV N W Z

O2 Est. at Shutdown 19.73 19.74 19.79 19.70 19.75 19.73

O2 Est. at Ideal Shutdown 20.32 19.54 19.64 19.88 20.27 19.82

19

19.2

19.4

19.6

19.8

20

20.2

20.4

O2 (%)

Estimated O2 Percentages at Shutdown and Ideal Shutdown
21

Figure 3.6: Measured CO concentration at actual shutdown time from simulation and at ideal shutdown 

time based on 10% COHb computed per EPA. The maxiumum CO concentration at the end of the test 

run is also indicated.

Figure 3.7: Maximum CO concentration for all indoor test cases.

AH AS AV N W Z

CO at Shutdown 852 711 260 158 443 322

CO at Ideal Shutdown 757 811 238 217 525 325

Maximum CO 2353.8 885.7 271.5 304.7 958.7 596.8

0

500

1000

1500

2000

2500

CO (ppm)

Measured CO at Shutdown and Ideal Shutdown

U AH AK AS AV N T V W Z

Max. CO 257.8 2353.8 197.1 885.7 271.5 304.7 332.3 432.3 958.7 596.8

0

500

1000

1500

2000

2500

CO (ppm)

Maximum CO (All tests with non-zero CO values)

Outdoor tests (CA - CE) were assumed to be approximately 0 ppm CO

Red = tests that should shut down

Green = tests that should NOT shut down
22

Figure 3.8: COHb index and actual COHb computed per EPA at shutdown time determined by simulation 

along with the maximum COHb per EPA at the end of the test run.

Figure 3.9: Maximum COHb (EPA calculation) for all indoor test cases.

C OHb P erc entag es at S hutdown (with maximum C OHb)

0

10

20

30

40

50

60

70

80

90

C OHb %

C O Hb es timate 10.25 10.21 10.02 10.41 10.12 10.22

C O Hb actual 17.1 2.72 6.7 6.67 14.91 10.23

Maximum C O Hb 77.6 50.4 16.0 14.0 54.9 16.8

AH AS AV N W Z

Maximum C OHb (All tes ts with C OHb es timated values )

- Outdoor tes ts (C A - C E ) were as s umed to be approximately 1 % C OHb

R ed = tes ts that s hould s hut down; G reen = tes ts that s hould NOT s hut down

0

10

20

30

40

50

60

70

80

90

C OHb (% )

Max. C O Hb 3.7 77.6 3.6 50.4 16.0 14.0 4.2 7.2 54.9 16.8

U AH AK AS AV N T V W Z
23

4. IMPLEMENTATION ON THE MODULAR PLATFORM

For work done on this project’s phase, a modular based ECU was acquired to serve as a replacement to 

the formerly used MT05 ECU. As previously mentioned, the proprietary nature of the MT05 ECU 

eliminated the ability for modifications or additions to the existing source code. Although both 

controllers accomplished similar tasks in the way of engine management and control, the main 

advantage of the modular ECU was its almost completely open-source nature. Access to the ECU source 

code allowed for necessary additions and modifications to be made in the way of engine operation, 

control, and shutdown. This access also provided the user with the ability to implement or modify any 

engine specific tasks or algorithms, which conserved time by not having to out-source the job to the 

ECU’s company of origin. In addition, multiple instances arose which challenged the initial strategy of 

implementation; however, the mostly open-source nature of the ECU allowed for flexibility and ease of 

implementation. Finally, access to the majority of the ECU source code would permit changes in the 

oxygen depletion shutdown algorithm, if necessary, following post-processing of physical test data. A 

description of changes made to the oxygen depletion shutdown algorithm and ECU source code for ease 

of implementation, as well as a summary of the final implementation process, is provided in the 

subsequent sections.

4.1. Alternate Equivalent Oxygen Estimation

During the course of implementing the engine operation and control scheme into the newly acquired 

ECU source code, base VE and final VE were used in the CLC method, as opposed to base FPW and final 

FPW. This utilization of VE was based on the fact that it allowed for a simplistic engine tuning strategy, 

as the primary variable used in open-loop and CLC regulation, because of its ability to be easily altered in 

a calibration lookup table based on RPM and MAP. Conversely, the newly devised oxygen estimation 

shutdown algorithm was dependent on the ratio of base FPW to final FPW. This presented an initial 

challenge to the implementation strategy of the new oxygen estimation equation because immediate 

access to base FPW and final FPW could not be established. However, because VE is defining air 

quantity entering the cylinder, the quotient of base VE (VE before CLC correction) and final VE (VE after 

CLC correction) should provide a ratio which defines the magnitude of controller compensation for 

oxygen deficiency in the generator’s intake air stream. Likewise, because FPW is defining fuel quantity 

entering the cylinder, the ratio of base FPW (FPW before CLC correction) to final FPW (FPW after CLC 

correction) indicates how much the control system has to compensate for the oxygen deficit in the 

intake air stream, as described in Chapter 3 and [7]. Therefore, the two ratios utilizing VE and FPW are 

essentially a measure of identical quantities and can be concluded to be equivalent, as shown in 

Equation 4.1. Furthermore, substituting this ratio equivalence from (4.1) into the generator dependent 

variable (C) from (3.2), used in the newly derived oxygen estimation equation, it can be redefined in 

terms in terms of base VE and final VE, as shown in Equation 4.2.

final

base

FPW final

FPW base

VE

VE

t

t =

,

,

(4.1)
24

VE CAT

VE C

final

base

* =

(4.2)

4.2. Alternative Implementation Strategy for Shutdown Algorithm

Upon beginning the implementation process for the oxygen depletion shutdown algorithm, based on a 

trend-oriented COHb estimate, another scenario arose which challenged the initial implementation

strategy in LabVIEW based source code. The initial implementation strategy for the shutdown algorithm 

was dependent upon individual area calculations, based on oxygen estimation difference measurements 

below a 21% threshold. It was determined that this particular strategy would require some data 

buffering because of the fact that previous difference measurements must be considered in the 

individual area calculations. Although this initial implementation strategy could have been 

accomplished, significant time was not devoted to completing it when a new, equally valid, method for 

producing a trend-oriented COHb estimate showed promise, which involved no data buffering.

The initial shutdown algorithm implementation strategy, which relied on individual area calculations for 

producing a trend-oriented COHb estimate, exhibited an example of a piecewise linear function. 

Specifically, by using trapezoidal integration, this function was comprised of a set of data where each 

point essentially represented the average of the current and previous difference measurements 

between oxygen estimation percentage and 21%. An illustration of the trapezoids used to calculate 

individual area, formed by individual difference measurements, and the resulting plot of area 

calculations from trapezoidal integration is shown in Figure 4.1.
25

Figure 4.1: Individual area calculations (piecewise linear function).

A newly devised alternative shutdown algorithm implementation strategy would provide an equally 

valid trend-oriented COHb estimate without the need to buffer data in the LabVIEW source code 

implementation. Specifically, the new implementation strategy would involve using only the individual 

difference measurements, as opposed to the individual area calculations, to develop a new trendoriented COHb estimate with minimal deviation from its original. This particular type of strategy, 

differing from the original, demonstrated an example of a piecewise constant function by exhibiting a 

data set where each point represented only the current difference measurement between oxygen 

estimation percentage and 21%; therefore, no previous data is considered. A general illustration of how 

the new COHb trend-oriented estimate is constructed, based on individual difference measurements, is 

shown in Figure 4.2. It is worth noting that the difference measurements used in Figures 4.1 and 4.2 

were kept constant in order to exploit the variations in the two different types of functions.
26

Figure 4.2: Individual difference measurements (piecewise constant function).

In order to begin such a transformation, the general COHb estimate equation in (3.7) was revised to 

include the individual difference measurements (di), instead of individual area measurements, and new 

heuristically developed constant coefficients were established to compensate for the change in strategy. 

The newly developed trend-oriented COHb estimate equation is shown in Equation 4.3.

% = ( )6.14 + 2.43 new i COHb d (4.3)

Because of the fact that the new constant coefficients in (4.3) were developed heuristically, it was of 

particular interest to approximately verify, through mathematical representation, that the change in 

strategy did, in fact, render an equally valid method for producing a trend-oriented COHb estimate. 

First, the original trend-oriented COHb estimate from (3.7) was revisited in Equation 4.4 and a general 

equation representing the new trend-oriented COHb estimate in (4.3) was defined, as shown in Equation 

4.5.

%COHborig = (Ai)10.72 + 2.45 (4.4)

new new COHb d k k new i 3 4 % = ( ) + (4.5)

In order to approximately verify the coefficients for a new trend-oriented COHb estimate based on 

individual difference measurements, the individual area calculation for trapezoidal integration in (3.7) is 

substituted into the original estimate in (4.4), and then subsequently approximated to the new estimate 

in (4.5), as shown in Equation 4.6.
27

[ ] new new d k k

d t d t t

i

elap

3 4 10.72 2.45 ( ) 2

( ) ( 1) *

+ ≈ +











 + −

(4.6)

Because the resulting equation in (4.6) consisted of two unknown coefficients and the heuristically 

developed new k4 of 2.43 in (4.5) was comparable to its counterpart value of 2.45 in (4.4), a reduced 

approximation equation was achieved by subtracting each value from both sides of the equation, as 

shown in Equation 4.7.

[ ] new d k

d t d t t

i

elap

3 10.72 ( ) 2

( ) ( 1) * ≈











 + −

(4.7)

Additional assumptions must be made in order to complete the approximate mathematical verification 

of the new trend-oriented COHb model. Because such a large amount of data was sampled by the ECU 

during NIST tests, data files were truncated by eliminating 9 data points between computations [7]. 

Through observation, it was determined that this truncation led to a sampling rate which allowed telap to 

be equal to approximately 0.5 s. Furthermore, it was determined that, because samples were taken so 

often, even after skipping 9 data points, the change between the current difference measurement d(t) 

and previous difference measurement d(t-1) was minimal; therefore, the assumption was made that, 

from point-to-point, the two difference measurements in (4.7) were approximately equal. Using this 

fact to combine the two difference measurements in (4.7) into one individual difference measurement, 

multiplied by two, along with the previous approximation of telap=0.5 s, a reduced equation was 

obtained, as shown in Equation 4.8.

new d k d

i

i

3 10.72 ( ) 2 ≈ 











(4.8)

Finally, each side of the equation in (4.8) can be divided by di, which yields the fact that, in order for the 

new strategy of using only individual difference measurements to create an equally valid trend-oriented 

COHb estimate, the new k3 coefficient must be approximately equal to 10.72 (the original k3 coefficient) 

divided by 2, or 5.36. Because of the fact that the new k3 had already been heuristically developed to be 

6.14, which is comparable to that of the theoretically produced 5.36, the approximate mathematical 

validation was deemed successful. It is worth noting that the previously described Figure 4.2 is only a 

general representation of the newly devised implementation strategy by way of using difference 

measurements, with no consideration of changing the constant coefficients necessary in achieving a 

similar function as in Figure 4.1; however, it was verified by inspection, in addition to the approximate 

mathematical validation, that the two trend-oriented COHb estimates were, in fact, equally valid 

implementation methods. By slightly altering the shutdown algorithm implementation strategy, 

appropriate modifications to the ECU LabVIEW source code must be considered. The new shutdown 

algorithm implementation, which proved equally valid in producing a trend-oriented COHb estimate, 
28

eliminated the need for data buffering, and allowed for ease of implementation is illustrated in the 

pseudo code below:

-Oxygen Estimation

O2_calc = (Base Pulse Width / Final Pulse Width / Charge Air Temp.)*k1+k2

k1=201.55, k2=16.96

-Calculating Individual Difference Measurements under 21% Oxygen Threshold

If CLC activated and O2_calc < 21%:

Individual Difference = 21-Current O2_calc

If O2_calc > 21%:

Individual Difference = 0

-COHb Index Calculation & Shutdown Decision

COHb_calc = (Individual Difference)*k3+k4, k3=6.14, k4=2.43

If COHb_calc > 10%:

total_time counter starts

If COHb_calc > 10% for less than 20 seconds:

total_time counter reset to zero

If COHb_calc > 10% constantly (total_time >20 seconds):

Generator shutdown triggered

4.3. Final Implementation of Shutdown Algorithm

Once all necessary revisions had been made to the shutdown algorithm implementation strategy, final 

implementation in the ECU could commence. Because the oxygen estimation and shutdown algorithm 

were initially developed in the MATLAB software environment, they had to be implemented using 

LabVIEW due to the nature of the ECU’s source code. Specifically, the oxygen estimation and shutdown 

algorithms were implemented into a port fuel control subVI within the ECU source code. The decision 

was made to implement these algorithms in the fuel control portion of the ECU source code in order to 

establish a means for terminating engine operation if the Boolean (binary, 1 or 0) shutdown signal was 

ever true. In particular, appropriate LabVIEW code commands were used to disable the fuel injector

pulse if the Boolean shutdown signal was present. The final ECU implementation of the oxygen 

estimation algorithm and shutdown algorithm, based on a trend-oriented COHb estimate, in LabVIEW 

code are shown in Figure 4.3 and Figure 4.4, respectively. However, it is worth noting that both 

algorithms possess the ability to be altered, if necessary, based on post-processing of final physical test 

results.
29

CAT

Filtered

Figure 4.3: Block diagram implementation of oxygen estimation algorithm in ECU (filtered O2 estimate 

passed to Figure 4.4 as input).

Filtered Oxygen Estimate

Time (s)

Figure 4.4: Block diagram implementation of shutdown algorithm in ECU.
30

5. ALGORITHM TESTING RESULTS

For purposes of validating the newly devised oxygen depletion shutdown algorithm, a series of indoor 

and outdoor tests were conducted on the UA campus. The testing setup included the EMS equipped 

generator described in Chapter 2, a variable resistive load bank, and emissions analyzer. The individuals 

performing the tests and host computer, used for monitoring tests, were positioned inside of a campus 

laboratory, away from any potential CO emissions, for safety purposes. The tests were performed 

immediately outdoors of this particular campus laboratory, providing immediate access if a test variable 

required altering or, in case of an emergency, the situation could be addressed promptly. For purposes 

of performing the indoor test scenarios, a mobile trailer with an approximate volume of 1420 cubic feet 

was placed immediately outside of the campus laboratory to serve as an enclosed structure. A 

photograph, shown in Figure 5.1, depicts the interior (on left) and exterior (on right) of the test trailer 

used to simulate an indoor environment.

Figure 5.1: Trailer used for indoor operation test scenarios.

For outdoor testing scenarios, an area outside of the test trailer and campus laboratory was used. The 

selectable load bank was used to tune the generator across a wide range of operating points for testing 

in both indoor and outdoor environments. From the broad spectrum of operating modes, six particular 

loads were chosen for purposes of performing validation tests at UA, as shown in Table 5.1. Because 

testing during this project’s previous phase, as well as tests performed at NIST, utilized a six mode 

method that was meant to replicate the Environmental Protection Agency’s (EPA’s) standardized test 

procedure for the regulation of small off road spark ignition engines rated 19 kW (25hp) or less (40 CFR 

Part 90), it was of particular interest to use the same load points as described in [6,7] for continuity.
31

Table 5.1

Load points used for validation testing at UA.

Mode Load (W)

1 0

2 500

3 1500

4 3500

5 4750

6 5500

The final piece of equipment used in the setup for validation testing at UA was the emissions analyzer. 

Specifically, a weatherproof Nova 376 Series portable analyzer was appropriately calibrated for 

measuring oxygen (%) and CO (ppm) gases in the surrounding air. The analyzer completes these 

measurements by way of electrochemical sensors with a resolution of 0.1% oxygen and 1 ppm CO [12]. 

In order to achieve the most unbiased emissions data, with respect to the generator’s location, the 

attached sampling line must be placed in a central location inside of the test trailer. Furthermore, the 

generator was positioned at the far end of the test trailer, while the emissions sampling line was 

positioned in the center of the test trailer. It is worth noting that the Nova emissions analyzer was not 

used for outdoor testing scenarios, as the surrounding air should experience only minimal oxygen 

depletion. Furthermore, it was assumed that the emissions in the surrounding air were comprised of 

21% oxygen and 0 ppm CO, approximately that of ambient air, for outdoor tests cases. A photograph, 

shown in Figure 5.2, depicts the Nova emissions analyzer used throughout indoor testing.

Figure 5.2: Analyzer used to measure emissions in enclosed environment.
32

Tests were conducted in indoor and outdoor environments, under constant and cyclic load profiles, and 

under random load profiles. However, all test cases included the use of a muffler catalyst due to the 

fact that the generator had already been modified for low CO emissions in the previous phase of this 

project. For purposes of demonstrating that the oxygen estimation and shutdown algorithms 

functioned properly under constant load, a low, medium, and high load were specifically chosen from 

the load points listed in Table 5.1. In addition, these same low, medium, and high load points were used 

to demonstrate the validity of the algorithms under cyclic loads by conducting a low-to-high load profile 

test and high-to-low load profile test. Finally, in order to ensure that the newly developed algorithms 

did not produce any false-positive shutdowns with sudden and significant load changes, random load 

profile tests were conducted using all load points described in Table 5.1 for both, indoor and outdoor, 

environments. Specifically, two random load profiles were generated, with each profile to be conducted 

once indoors and once outdoors. The twelve testing scenarios conducted at UA are detailed and 

identified, accordingly, by name, as shown in Table 5.2.

Table 5.2

Operating conditions used for validation testing at UA.

Test ID Load Profile Environment

UA1 Constant (500 W) Indoors

UA2 Constant (3000 W) Indoors

UA3 Constant (5500 W) Indoors

UA4 Cyclic (Low to High) Indoors

UA5 Cyclic (High to Low) Indoors

UA6 Random 1 (All Loads) Indoors

UA7 Random 2 (All Loads) Indoors

UA8 Constant (500 W) Outdoors

UA9 Constant (3000 W) Outdoors

UA10 Constant (5500 W) Outdoors

UA11 Random 1 (All Loads) Outdoors

UA12 Random 2 (All Loads) Outdoors

An effort was made to maintain a testing procedure that was as consistent as possible throughout all of 

the previously described test cases. The subsequent sections highlight the procedures used for both, 

indoor and outdoor, testing environments, the results of all twelve tests conducted, and a brief 

description of observations and conclusions drawn from analyzing the resulting test data.
33

5.1. Indoor Testing

For indoor testing, the initial step included opening both trailer doors while a large fan was used for two 

reasons: 1) to blow out any emissions remaining from the previous test, essentially cleaning the air 

within the trailer and returning it to approximately an ambient state, and 2) to speed up the cooling 

process of the generator. The generator must be cooled back to an ambient temperature as each of the 

validation test cases, performed at UA, were conducted with a cold start. Once ambient generator 

temperature and air chemistry were achieved, the generator was cranked and operated with open-loop 

control while the fan continued to blow out any emissions not resulting from CLC. This process 

continued while waiting on the oxygen sensor, used for feedback, to appropriately heat for activation. A 

time of approximately 30 s was usually needed before the oxygen sensor could begin properly 

functioning. Upon heating of the oxygen sensor, CLC was activated, the fan was turned off, and both 

trailer doors were closed, allowing for the replication of an enclosed operating environment.

During the course of indoor testing, the ECU was used to collect relevant data, in intervals of 0.5 s, which 

included the following variables: run time (s), shutdown signal (Boolean), engine speed (RPM), oil 

temperature (°C), MAP (kPa), CAT (°C), base VE, final VE, oxygen estimation (%), COHb estimation (%), 

measured oxygen (%), and measured CO (ppm). The calculated COHb (%) per EPA in ref [15] was also 

included in the final data files; however, these calculations were completed during data post-processing 

and subsequently added to the data files. For validation purposes, it was of particular interest to plot 

oxygen estimation (in green, from equations 3.4 and 4.2) with measured oxygen (in blue), COHb 

estimation (in green) with COHb calculation (in blue), CO emissions, and the generator shutdown signal. 

The following plots, shown in Figure 5.3 through Figure 5.9, which were generated through postprocessing of the resultant data in the MATLAB software environment, illustrate the results collected 

from all indoor tests described in Table 5.2. Because of the large data file sizes, 9 points were skipped 

between computations, similar to that done during the post-processing of NIST test data and 

development of the algorithms. It is noteworthy that the COHb estimate diverges from the EPA-based 

estimate after the levels become somewhat higher. However, this occurs after the point at which 

shutdown would happen.
34

Figure 5.3(a): Oxygen estimation and oxygen measured for Test UA1.

Figure 5.3(b): COHb index and COHb calculation for Test UA1.

0 200 400 600 800 1000 1200 1400 1600 1800

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (0.5 kW - Indoors)

O2 meas

O2 calc

Shutdown Signal

0 200 400 600 800 1000 1200 1400 1600 1800

0

5

10

15

20

25

30

COHb %

Time (s)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (0.5 kW - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
35

Figure 5.3(c): Measured CO emissions for Test UA1.

Figure 5.4(a): Oxygen estimation and oxygen measured for Test UA2.

0 200 400 600 800 1000 1200 1400 1600 1800

0

100

200

300

400

500

600

700

800

900

1000

Time (s)

CO (ppm)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

CO Emissions (0.5 kW - Indoors)

CO emis

Shutdown Signal

0 200 400 600 800 1000

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 200 400 600 800 1000

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (3 kW - Indoors)

O2 meas

O2 calc

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
36

Figure 5.4(b): COHb index and COHb calculation for Test UA2.

Figure 5.4(c): Measured CO emissions for Test UA2.

0 200 400 600 800 1000

0

5

10

15

20

25

30

COHb %

Time (s)

0 200 400 600 800 1000

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (3 kW - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

0 200 400 600 800 1000

0

200

400

600

800

1,000

1,200

1,400

1,600

1,800

2000

Time (s)

CO (ppm)

CO Emissions (3 kW - Indoors)

0 200 400 600 800 1000

-1

0

1

2

Shutdown Signal (Boolean)

CO emis

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
37

Figure 5.5(a): Oxygen estimation and oxygen measured for Test UA3.

Figure 5.5(b): COHb index and COHb calculation for Test UA3.

0 500 1000 1500

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

Oxygen Estimation (5.5 kW - Indoors)

0 500 1000 1500

-1

0

1

2

Shutdown Signal (Boolean)

O2 meas

O2 calc

Shutdown Signal

0 500 1000 1500

0

5

10

15

20

25

30

COHb %

Time (s)

0 500 1000 1500

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (5.5 kW - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
38

Figure 5.5(c): Measured CO emissions for Test UA3.

Figure 5.6(a): Oxygen estimation and oxygen measured for Test UA4.

0 500 1000 1500

0

200

400

600

800

1000

1200

1400

1600

1800

2000

Time (s)

CO (ppm)

0 500 1000 1500

-1

0

1

2

Shutdown Signal (Boolean)

CO Emissions (5.5 kW - Indoors)

CO emis

Shutdown Signal

0 200 400 600 800 1000 1200

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (Cyclic Load: Low to High - Indoors)

O2 meas

O2 calc

Shutdown Signal
39

Figure 5.6(b): COHb index and COHb calculation for Test UA4.

Figure 5.6(c): Measured CO emissions for Test UA4.

0 200 400 600 800 1000 1200

0

5

10

15

20

25

30

COHb %

Time (s)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (Cyclic Load: Low to High - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

0 200 400 600 800 1000 1200

0

500

1000

1500

Time (s)

CO (ppm)

CO Emissions (Cyclic Load: Low to High - Indoors)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

CO emis

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
40

Figure 5.7(a): Oxygen estimation and oxygen measured for Test UA5.

Figure 5.7(b): COHb index and COHb calculation for Test UA5.

0 200 400 600 800 1000 1200

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (Cyclic Load: Low to High - Indoors)

O2 meas

O2 calc

Shutdown Signal

0 200 400 600 800 1000 1200

0

5

10

15

20

25

30

COHb %

Time (s)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (Cyclic Load: Low to High - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
41

Figure 5.7(c): Measured CO emissions for Test UA5.

Figure 5.8(a): Oxygen estimation and oxygen measured for Test UA6.

0 200 400 600 800 1000 1200

0

500

1000

1500

Time (s)

CO (ppm)

CO Emissions (Cyclic Load: Low to High - Indoors)

0 200 400 600 800 1000 1200

-1

0

1

2

Shutdown Signal (Boolean)

CO emis

Shutdown Signal

0 200 400 600 800 1000 1200 1400 1600 1800

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (Random Load Profile 1 - Indoors)

O2 meas

O2 calc

Shutdown Signal
42

Figure 5.8(b): COHb index and COHb calculation for Test UA6.

Figure 5.8(c): Measured CO emissions for Test UA6.

0 200 400 600 800 1000 1200 1400 1600 1800

0

2

4

6

8

10

12

14

16

18

20

COHb %

Time (s)

COHb Estimation (Random Load Profile 1 - Indoors)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

COHb meas (CPSC)

COHb index

Shutdown Signal

0 200 400 600 800 1000 1200 1400 1600 1800

0

50

100

150

200

250

300

350

400

450

500

Time (s)

CO (ppm)

CO Emissions (Random Load Profile 1 - Indoors)

0 200 400 600 800 1000 1200 1400 1600 1800

-1

0

1

2

Shutdown Signal (Boolean)

CO emis

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
43

Figure 5.9(a): Oxygen estimation and oxygen measured for Test UA7.

Figure 5.9(b): COHb index and COHb calculation for Test UA7.

0 500 1000 1500 2000

15

16

17

18

19

20

21

22

23

24

25

%O2

Time (s)

0 500 1000 1500 2000

-1

0

1

2

Shutdown Signal (Boolean)

Oxygen Estimation (Random Load Profile 2 - Indoors)

O2 meas

O2 calc

Shutdown Signal

0 500 1000 1500 2000

0

2

4

6

8

10

12

14

16

18

20

COHb %

Time (s)

0 500 1000 1500 2000

-1

0

1

2

Shutdown Signal (Boolean)

COHb Estimation (Random Load Profile 2 - Indoors)

COHb meas (CPSC)

COHb index

Shutdown Signal

COHb (per EPA)

Shutdown Signal

COHb Index
44

Figure 5.9(c): Measured CO emissions for Test UA7.

5.2. Outdoor Testing

Although similar to that of indoor testing, the procedure used for outdoor testing was much simpler and 

involved fewer steps. The initial step still involved using the fan to speed the generator’s cooling 

process. Once an ambient generator temperature was achieved, the fan’s operation was terminated 

and the generator was started cold. Because the generator did not reach such high temperatures as 

experienced during indoor testing, the cool down time was significantly reduced. Similar to the indoor 

testing procedure, the generator was operated in an open-loop manner until the oxygen sensor heated. 

Once the oxygen sensor was heated, after about 30 s, CLC was activated and an outdoor test 

environment replication was established so that data could be collected.

During the course of outdoor testing, the ECU was once again used to collect relevant data, in intervals 

of 0.5 s, which included the same variables recorded for indoor testing; however, measured oxygen and 

CO were not recorded, as previously mentioned, and approximate ambient air conditions were 

assumed. Specifically, measured oxygen was assumed to be 21% and measured CO was assumed to be 

0 ppm. Because of this assumption, the COHb calculation resulted in approximately 1% COHb,. It is 

worth noting that this same basis for COHb calculation was used in the shutdown algorithm 

development stage. For validation of outdoor test cases, it was of particular interest to plot oxygen 

estimation (in green, from equations 3.4 and 4.2) with assumed oxygen measured (in blue) and COHb 

estimation (in green) with COHb calculation (in blue). The Boolean shutdown signal was not plotted 

0 500 1000 1500 2000

0

100

200

300

400

500

600

Time (s)

CO (ppm)

CO Emissions (Random Load Profile 2 - Indoors)

0 500 1000 1500 2000

-1

0

1

2

Shutdown Signal (Boolean)

CO emis

Shutdown Signal
45

because the algorithm did not trigger a shutoff when tested outdoors. The following plots, shown in 

Figure 5.10 through Figure 5.14, which were generated through post-processing of the resultant data in 

the MATLAB software environment, illustrate the results collected from all outdoor tests described in 

Table 5.2. As was the case for indoor test plots, 9 points were skipped between computations because 

of the large data file sizes, similar to that done during the post-processing of NIST test data and 

algorithm developments.

Figure 5.10(a): Oxygen estimation and oxygen measured for Test UA8.

0 200 400 600 800 1000 1200 1400 1600 1800

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Estimation (0.5 kW - Outdoors)

O2 meas

O2 calc
46

Figure 5.10(b): COHb index and COHb calculation for Test UA8.

Figure 5.11(a): Oxygen estimation and oxygen measured for Test UA9.

0 200 400 600 800 1000 1200 1400 1600 1800

0

2

4

6

8

10

12

14

16

18

20

Time (s)

COHb %

COHb Estimation (0.5 kW - Outdoors)

COHb meas (CPSC)

COHb calc

0 200 400 600 800 1000 1200 1400 1600 1800

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Estimation (3 kW - Outdoors)

O2 meas

O2 calc

COHb (per EPA)

COHb (calculated)
47

Figure 5.11(b): COHb index and COHb calculation for Test UA9.

Figure 5.12(a): Oxygen estimation and oxygen measured for Test UA10.

0 200 400 600 800 1000 1200 1400 1600 1800

0

2

4

6

8

10

12

14

16

18

20

Time (s)

COHb %

COHb Estimation (3 kW - Outdoors)

COHb meas (CPSC)

COHb calc

0 200 400 600 800 1000 1200 1400 1600 1800

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Estimation (5.5 kW - Outdoors)

O2 meas

O2 calc

COHb (per EPA)

COHb (calculated)
48

Figure 5.12(b): COHb index and COHb calculation for Test UA10.

Figure 5.13(a): Oxygen estimation and oxygen measured for Test UA11.

0 200 400 600 800 1000 1200 1400 1600 1800

0

2

4

6

8

10

12

14

16

18

20

Time (s)

COHb %

COHb Estimation (5.5 kW - Outdoors)

COHb meas (CPSC)

COHb calc

0 500 1000 1500 2000 2500 3000 3500

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Estimation (Random Load Profile 1 - Outdoors)

O2 meas

O2 calc

COHb (per EPA)

COHb (calculated)
49

Figure 5.13(b): COHb index and COHb calculation for Test UA11.

Figure 5.14(a): Oxygen estimation and oxygen measured for Test UA12.

0 500 1000 1500 2000 2500 3000 3500

0

2

4

6

8

10

12

14

16

18

20

Time (s)

COHb %

COHb Estimation (Random Load Profile 1 - Outdoors)

COHb meas (CPSC)

COHb calc

0 500 1000 1500 2000 2500 3000 3500

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Estimation (Random Load Profile 2 - Outdoors)

O2 meas

O2 calc

COHb (per EPA)

COHb (calculated)
50

Figure 5.14(b): COHb index and COHb calculation for Test UA12.

5.3. Analysis and Discussion of Validation Test Results

It is worth noting that test data continued to record, even past the point where a true shutdown signal 

was detected. Although it was verified that the generator would, in fact, shutdown upon detection of a 

true Boolean shutdown signal by disabling the fuel injector by forcing the fuel pulse width to zero, the 

generator was allowed to continue running well past the signaled termination point in order to collect a 

sufficient amount of data. It was observed that the temperature normally increased when an enclosed 

environment was detected and when higher loads were experienced. For all cases, the test duration 

was predetermined to allow for capturing an adequate quantity of data; however, all indoor tests except 

that of UA1 required an early termination, due to a critically high oil temperature, in order to prevent 

any potential generator damage. Alternatively, all outdoor tests were able to successfully run for their 

predetermined duration because the oil temperature did not rise to a critically high level.

Several important observations were made through post-processing and analysis of the resulting 

validation test data. By inspection of the resulting oxygen data, it was determined that the oxygen 

estimation algorithm normally displayed a minimal overestimate of measured oxygen in indoor tests 

and minimal underestimate of measured oxygen in the outdoor tests. However, some overestimations 

and underestimations were expected due to the curve fitting method employed during the development 

stage, which considered a wide range of operating scenarios. In order for the algorithm to estimate 

oxygen content as accurately as possible, for a broad spectrum of operating conditions, sacrifices must 

be made to compensate for the large variations experienced between indoor and outdoor test 

0 500 1000 1500 2000 2500 3000 3500

0

2

4

6

8

10

12

14

16

18

20

Time (s)

COHb %

COHb Estimation (Random Load Profile 2 - Outdoors)

COHb meas (CPSC)

COHb calc COHb (per EPA)

COHb (calculated)
51

conditions. Nonetheless, the outdoor tests should not underestimate oxygen to the extent of producing 

a false-positive shutdown and the indoor tests should not overestimate oxygen to the extent of allowing 

the generator to run too far past the ideal termination point; therefore, the oxygen estimation algorithm 

development was deemed to be a success. With respect to the shutdown decision, it was observed that 

all COHb estimations increased quicker than that of the COHb calculation which led to an earlier 

shutdown time than originally expected; however, this was determined to be more efficient than the 

alternative of shutting down later than expected because of the dangerous environments experienced if 

such a situation arose. It can also be observed from several tests, particularly in Tests UA2, UA3, and 

UA5, that the CO emissions tended to level out at approximately 1700 ppm. This phenomenon was 

believed to be caused by saturation of the analyzer.

In summary, the algorithm produced an oxygen estimation, as anticipated from the development phase, 

across a broad range of range of operating scenarios. When higher levels of CO were experienced, as 

expected when operating in an enclosed structure, the algorithm subsequently signaled an oxygen 

depleted environment and shutdown the engine based on a trend oriented COHb estimate. Also, the 

oxygen depletion shutdown algorithm proved successful when operating in an outdoor environment by 

not producing any false-positive shutdowns. Furthermore, the random load profile tests demonstrated 

that the algorithm would not produce any nuisance shutdowns when subjected to sudden and 

significant load changes. Based on these significant observations, along with the fact that no falsepositive shutdowns are produced outdoors, the oxygen depletion shutdown algorithm was deemed to 

be valid for the purpose at hand. The results of all tests which should produce a generator shutdown (all 

indoor tests) are summarized in Table 5.3, where (SD) represents shutdown. These results provide a 

validation of the shutdown algorithm by detailing the COHb estimate, COHb calculation, measured CO 

emissions, and estimated oxygen at the algorithm shutdown time and ideal shutdown time (10% COHb 

for constant 20 s). Due to the fact that the COHb calculation did not reach 10% in all of the tests, due to 

a critically high oil temperature, some cells are labeled as not applicable (NA); however, 10% COHb 

would have been achieved if these particular tests would have been allowed to continue. Finally, 

although the ECU allowed for source code alterations, it was decided that no modifications to the 

oxygen depletion shutdown algorithm were necessary following post-processing of validation test data.
52

Table 5.3

Summary of validation testing results at UA.

Test

Actual 

SD 

Time 

(s)

Ideal 

SD 

Time 

(s)

COHb

Est. (%) 

at SD

COHb 

Calc.

(%) at 

SD

COHb 

Est. (%) 

at 

Ideal 

SD

COHb 

Calc.

(%) at 

Ideal 

SD

CO 

(ppm) 

at SD

CO 

(ppm) 

at 

Ideal 

SD

O2 

Est. 

(%) 

at SD

O2 

Est. 

(%) 

at 

Ideal 

SD

UA1 591 NA 10.47 1.34 NA NA 227 NA 19.69 NA

UA2 526 782 10.81 5.24 12.39 10.43 1313 1700 19.64 19.38

UA3 484 899 11.03 3.64 14.73 10.44 907 1696 19.60 19.00

UA4 873 NA 12.06 2.27 NA NA 496 NA 19.43 NA

UA5 687 1100 10.39 2.69 11.70 10.43 730 1693 19.70 19.49

UA6 770 NA 10.53 1.18 NA NA 109 NA 19.68 NA

UA7 870 NA 11.12 1.40 NA NA 220 NA 19.59 NA
53

6. BLACK BOX ECU IMPLEMENTATION

The algorithm performed well with the modular EMS. However, such a system with the many external 

components is not conducive to general use and testing. This was expected at the initiation of the work, 

and the original plans called for an implementation of a small unit that required minimal external 

hardware and no host computer. The modular implementation was employed as a development 

platform that provided many features that would not be necessary when the algorithm was complete. 

Thus, with development and testing complete, the control method was transitioned to a much simpler 

platform. While there was an effort to make the black box system equivalent to the modular system, 

there are differences and can be seen in the test data in the subsequent sections and graphs.

The generator, equipped with the black box controller, is shown in Figure 6.1, with the significant 

hardware components labeled. This system enables the user to disable the shutoff algorithm and run 

without this added feature while still operating with a controlled AFR and reduced CO emissions. 

Operational details can be found in Appendix B.

Figure 6.1: Generator equipped with black box ECU implementation.

The black box implementation is based on a single chip microprocessor and associated interface 

electronics, including some custom electronics built by the investigators labeled “spark controller” in 

Figure 6.1.

The significant difference between the black box implementation and the modular implementation is 

that the single chip ECU is coded in C rather than graphically. Thus, the existing block diagrams were 

Spark Controller Spark Coil Driver ECU
54

implemented in C code for the new implementation. Without the additional overhead, the loop closure 

time is roughly 3 times faster than that of the modular system. This resulted in much tighter control of 

the AFR during engine operation.

Indoor and outdoor tests were conducted with the black box ECU system. Specifically, indoor tests were 

performed with 500, 3000, and 5500 W continuous loads as well as a cyclic load. The cyclic load test 

was performed with the load switched back and forth between 500 and 5500 W in 1 minute intervals. 

The outdoor tests were performed under the same 4 conditions. During the indoor tests, O2 and CO 

concentrations in the trailer were monitored at 1 minute intervals and recorded. Figures 6.2 through 

6.4 show the results of the tests along with the corresponding load tests with the modular ECU 

implementation for comparison. A comparison of shutoff times for these three constant load cases with 

both ECU implementations is presented in Table 6.1. The cyclic load test data is presented in Figure 6.5.

Figure 6.2: 500 W load indoor test with black box ECU implementation compared to same indoor load 

condition with modular ECU implementation. The end of data on the black box curve indicates shutoff.

0 2 4 6 8 10 12

18

20

22

Time (min)

%

O2 Concentration

Modular ECU

Black Box ECU

0 2 4 6 8 10 12

0

200

400

Time (min)

ppm

CO Concentration

Modular ECU

Black Box ECU

0 2 4 6 8 10 12

0

0.5

1

Time (min)

Binary

Shutoff (Modular)
55

Figure 6.3: 3000 W load indoor test with black box ECU implementation compared to same indoor load 

condition with modular ECU implementation. The end of data on the black box curve indicates shutoff.

0 1 2 3 4 5 6 7 8 9

19

20

21

22

Time (min)

%

O2 Concentration

Modular ECU

Black Box ECU

0 1 2 3 4 5 6 7 8 9

0

500

1000

1500

Time (min)

ppm

CO Concentration

Modular ECU

Black Box ECU

0 1 2 3 4 5 6 7 8 9

0

0.5

1

Time (min)

Binary

Shutoff (Modular)
56

Figure 6.4: 5500 W load indoor test with black box ECU implementation compared to same indoor load 

condition with modular ECU implementation. The end of data on the black box curve indicates shutoff.

Table 6.1

Comparison of shutoff times for black box and modular ECU implementation.

Load (W) Black Box Shutoff (minutes:seconds) Modular Shutoff (minutes:seconds)

500 11:35 9:50

3000 5:34 8:46

5500 6:11 8:04

0 1 2 3 4 5 6 7 8 9

19

20

21

22

Time (min)

%

O2 Concentration

Modular ECU

Black Box ECU

0 1 2 3 4 5 6 7 8 9

0

500

1000

Time (min)

ppm

CO Concentration

Modular ECU

Black Box ECU

0 1 2 3 4 5 6 7 8 9

0

0.5

1

Time (min)

Binary

Shutoff (Modular)
57

Figure 6.5: Cyclic load indoor results. The end of data indicates engine shutoff.

All outdoor tests were executed of a period of 1 hour continuously. Under no circumstances, that were 

a part of this study, did the generator shutdown. Thus, the black box implementation successfully 

shutdown in an enclosed environment and did not shutdown when operating outdoors.

It is important to recognize that the CO concentrations recorded when operating with the black box ECU 

are considerably lower than those recorded with the modular system. As previously mentioned, the 

loop closure rate in the black box is approximately 3 times greater than with the modular unit. Thus, the 

closed loop AFR control is significantly faster resulting in far less CO. Effectively, even though both 

systems control to the same average AFR, the swings about this average are significantly less with the 

black box ECU. Thus, the degree to which the engine runs rich is drastically lower.

1 2 3 4 5 6 7 8

20

20.5

21

Time (min)

% O2

1 2 3 4 5 6 7 8

0

100

200

CO (ppm)
58

7. CONCLUSION

This work has addressed the issues associated with the previous implementation of an algorithm to shut 

off the engine on a portable gasoline powered generator prior to creating an unacceptable carbon 

monoxide (CO) exposure environment when operated indoors. CPSC specifically requested that the 

algorithm be programmed into the prototype generator’s engine control unit (ECU) and that it have the 

ability to be enabled and disabled for testing purposes. CPSC also specifically directed that the 

algorithm rely only on data already existing in the ECU and not use any additional sensors.

The newly developed algorithm addresses issues from the original work that surfaced during testing at 

NIST:

1. With sudden and significant load changes, as well as under constant load (though less 

frequently), the algorithm would sometimes cause the engine to shut off when operated 

unconfined in the outdoors.

2. Rarely would the algorithm cause the engine to shut off in an enclosed environment with 

extremely light loads.

3. Rarely, but even with high load, the algorithm would not shut the engine off when operating in 

an enclosed environment.

Now, with a new O2 estimation algorithm and COHb index calculation, the system is much more robust. 

During UA testing, indoor scenarios resulted in appropriate shutoff, and outdoor scenarios never 

nuisance tripped, meaning the system did not shut down during outdoor tests. The results were 

satisfactory with both the modular ECU and black box ECU implementations. 

For future consideration, since the black box ECU rapid loop closure results in very tight control of the 

engine AFR, shutoff thresholds could be finely tuned for a given generator and target COHb level. It is 

important to recognize that levels, limits, and thresholds in the new shutoff algorithm will be specifically 

dictated by the engine used and the desired shutoff criteria.
59

8. REFERENCES

[1] Puzinauskas, Paulius V., et. al., Low Carbon Monoxide Prototype Portable Generator – Build 

Description and Performance Evaluation, Contract CPSC-S-06-0079 Final Project Report, July, 

2011.

[2] Nabinger, Steven and Andrew Persily, Airtightness, Ventilation, and Energy Consumption in a 

Manufactured House: Pre-Retrofit Results, NISTIR 7478, National Institute of Standards and 

Technology, U.S. Department of Commerce, May 2008.

[3] Emmerich, S.J., et. al., Interim Report - Measured CO Concentrations at NIST IAQ Test House 

from Operation of Portable Electric Generators in Attached Garage, July 6, 2011.

[4] Drivven Website, http://www.drivven.com/, n.d., Accessed on: October 12, 2012.

[5] National Instruments Website, “NI cRIO-9022”, http://sine.ni.com/ds/app/doc/p/id/ds202/lang/en, 2012.

[6] Smelser, Jennifer Beasley, “Oxygen Depletion Shutdown Algorithm for Portable Gasoline 

Generators”, MS Thesis, The University of Alabama, 2009.

[7] Haskew, Tim A. and Paul Puzinauskas, Algorithm Development for Enclosed Operation Detection 

and Shutoff of a Portable Gasoline-Powered Generator, Additional Volume to Final Project 

Report, Contract CPSC-S-06-0079 Final Project Report, 2011.

[8] William B. Ribbins, Understanding Automotive Electronics, Butterworth-Heinemann, Fifth 

Edition, 1998.

[9] Delphi Website, “Delphi MT05 Engine Control Module Series”, 

http://delphi.com/shared/pdf/ppd/pwrtrn/mt05.pdf, 2007.

[10] Mathworks Website, http://www.mathworks.com/products/matlab/, 2012.

[11] National Instruments Website, http://www.ni.com/labview/, 2012.

[12] Nova Analytical Systems Website, “Item # Model 376WP”, http://catalog.novagas.com/item/carbon-monoxide-co-/dioxide-and-oxides-of-nitrogen-analyzer-376-series/series376?&plpver=10&origin=keyword&by=prod&filter=0, 2010.

[13] Linear Algebra: A Concrete Introduction, Schneider, Dennis M., Manfred Steeg, and Frank H. 

Young, McMillan Publishing Company, New York, New York, 1982 (0-02-476810-3).

[14] Inkster, Sandra, PhD, A Comparison of the Carbon Monoxide (CO) Poisoning Risk Presented By A 

Commercially-Available Portable Gasoline-Powered Generator Versus A Prototype “Reduced CO 

Emissions” Generator, Based On Modeling Of Carboxyhemoglobin (COHb) Levels From Empirical 

CO Data, U.S. Consumer Product Safety Commission, Bethesda, MD, August 13, 2012.
60

[15] United States Environmental Protection Agency, Office of Pollution Prevention and Toxics

 CARBON MONOXIDE (CAS Reg. No. 630-08-0), PROPOSED ACUTE EXPOSURE GUIDELINE LEVELS

 (AEGLs), "PUBLIC DRAFT", Federal Register - February 2001

[16] Spiegel, Joshua P., “Small Engine Oxygen Depletion Shutoff Algorithm and Implementation,” MS 

Thesis, The University of Alabama, 2012.

[17] Emmerich, Steven J., et. al., NIST Technical Note 1781 Modeling and Measuring the Effects of 

Portable Gasoline Powered Generator Exhaust on Indoor Carbon Monoxide Level, National 

Institute of Standards and Technology, U.S. Department of Commerce, March 2013.
61

APPENDIX A

Development of Estimation Strategy
62

The two estimation coefficients, from equation 3.3, that were determined during the previous phase of 

this work, numerically 175 and 18, were heuristically developed. It was of particular interest in the 

project’s current phase to mathematically derive new coefficients that would represent a more accurate 

linear estimation. In addition, the test sets used in the initial oxygen estimation algorithm were 

performed under several different conditions, such as a muffler catalyst, HVAC fan, and total/partial 

indoor operation. However, it became of particular interest to ensure that all operating conditions were 

accounted for in the way of indoor/outdoor test environment and constant/cyclic load profile to ensure 

that oxygen estimation was as accurate as possible for other operating scenarios. Therefore, eight 

additional cases from NIST testing were included, with the seven existing cases, to result in fifteen total 

test sets which would represent a broadened range of operating conditions. These fifteen test cases, 

used in determining the new optimal oxygen estimation coefficients, are listed in Table A.1.

Table A.1: NIST test scenarios used for final oxygen estimation algorithm.

Test ID Date Load Profile Environment Garage Door

N 04/01/2010 Cyclic Indoors Closed

T 04/14/2010 Cyclic Indoors Open 24”

Z 05/05/2010 Cyclic Indoors Closed

W 04/29/2010 Cyclic Indoors Closed

AH 05/13/2010 Cyclic Indoors Closed

U 04/22/2010 Cyclic Indoors Open 24”

V 04/23/2010 Cyclic Indoors Open 24”

AK 05/19/2010 5500 W Indoors Fully Open

AS 06/10/2010 5500 W Indoors Closed

AV 07/09/2010 500 W Indoors Closed

CA 09/10/2010 2500 W Outdoors

CB 09/10/2010 1500 W Outdoors

CC 09/10/2010 3000 W Outdoors

CD 09/10/2010 4500 W Outdoors

CE 09/10/2010 5500 W Outdoors

In order to achieve the two new coefficients that would most accurately estimate the oxygen 

percentage in the generator’s intake air, for a broad spectrum of operating conditions, a linear best fit 

algorithm was employed. To begin, the linear mathematical relationship shown in equation A.1 was 

used to generally describe the estimated oxygen percentage, where k1 and k2 would represent the new 

estimation coefficients, or estimation parameters.

2 1 2 %O = (C)k + k (A.1)

Using this generalized linear equation, an algorithm was implemented using the MATLAB software 

environment to determine new estimation parameters that would produce the most accurate oxygen 

calculation [10]. For the purpose of implementing the generalized oxygen equation (A.1) into MATLAB 
63

software, the resulting matrix form of the linear estimation equation, shown in Equation A.2, was 

developed.

O C k   = [ ]*

(A.2)

In order to obtain a best fit calculation, the method of least squares [13] was performed in MATLAB by 

manipulating the generalized equation in (A.2) to solve for the estimation parameters. The (C) matrix 

represented the generator data as described in equation A.2 and would possess dimensions of (n x 2), 

where n represents the number of samples. Specifically, one column would contain the generator data 

from equation A.2 while the other column would act as a place-holder filled with ones. The oxygen 

percentage variable (the O vector), would represent the measured oxygen data, in order to obtain the 

least squared error between the oxygen estimation and the actual oxygen content, and would possess 

dimensions of (n x 1). Due to the fact that the measured oxygen data only possessed a rate of 1 sample 

per 360 seconds (s), there were a limited number of data points that could be utilized in the least 

squares curve fitting algorithm. Solving for the new estimation parameters (the k vector), with 

dimensions of (2 x 1), and accounting for matrix multiplication dimension requirements yielded the 

matrix form equation shown in Equation A.3.

k ( C C ) C O T T   [ ] [ ] [ ] −1 = (A.3)

Each of the fifteen previously mentioned test sets was individually analyzed using the new parameter 

estimation algorithm (least squares method) to calculate more accurate linear estimation coefficients. 

To determine the most accurate estimation parameters, several statistical factors were considered. In 

particular, two significant factors arose while observing the calculated data curves and attempting to 

derive more accurate estimation parameters: 1) the transient period of the calculated data, and 2) the 

amount of error that exists, between the measured and calculated data, once the transient phase was 

over. In order to derive estimation parameters which most accurately calculated the oxygen percentage 

in the intake air, for the large majority of time, data cut times were employed in increments of 360 s to 

clip the data previous to the prescribed cut time.

Simply put, the cut time defines how many data points in the initial transient period of the recorded 

data for each test are discarded from consideration in the least squares estimation of the curve fit 

coefficients. To illustrate, with random numbers for the purpose of explanation, assume the recorded 

data (pulse widths, temperatures, etc. used to compute the constant C at each instant of time) contains 

20 seconds of data at a sample rate of 2 samples/second. This results in a total of 40 data points spaced 

0.5 seconds apart. A cut time of 10 seconds will eliminate the first 10 seconds of data, or more 

specifically, the first 20 data points. Therefore, the estimation coefficients would be computed using the 

final 20 data points, and the error of the estimate would be minimized over the steady-state response 

period without becoming skewed by attempting to produce an accurate estimate during the transient 
64

time. By varying the cut time, it was decided how much data needed to be discarded to reach an 

optimal estimation equation.

Once the transient period of the calculated data was eliminated, a better linear curve fit was achieved 

by deriving new estimation parameters for every possible remaining cut time. In order to statistically 

verify which cut time and new estimation parameters provided an optimum linear curve fit to the 

measured oxygen data, a sum of squared error measure was employed. The squared error was 

calculated at every sample point, from the current cut time to the end of the test, by squaring the 

difference, or error, between estimated oxygen and measured oxygen. Once all sample points had been 

considered, the squared errors were added together to produce a sum of squared error for each cut 

time. Using each possible individual cut time, and each individual new set of estimation parameters, a 

new individual oxygen percentage calculation was created which spanned the test’s entire time scale. 

From each new calculation, the sum of squared error was measured, once the transient period was 

over, between the following data sets: 1) the raw oxygen calculation and measured oxygen data, and 2) 

the filtered oxygen calculation and the measured oxygen data. Filtered oxygen calculation curves were 

generated using a first-order lag filter to reduce the large variations that existed in raw oxygen 

calculation curves.

The following plots, Figures A.1 through A.15, graphically illustrate several important factors relevant to 

determining the optimum linear estimation parameters for each individual test set. For each data set, 

part (a) of the figure illustrates the measured oxygen data (in blue), plotted along with the original 

filtered oxygen linear estimation (in green), from Equation 3.3, and the new best fit filtered oxygen 

linear estimation (in red), generated by the least squares algorithm. Measured oxygen for outdoor 

tests, CA through CE, was assumed to be 21% oxygen, approximately that of ambient air. The new 

estimation parameters would differ significantly between test sets, due to various generator operating 

environments; however, the long-term goal was to achieve the most accurate pair of estimation 

parameters to fit the full scale of all fifteen combined test sets. In addition, the newly derived 

estimation parameters, k1 and k2 (in blue and green, respectively), and sum of squared errors, for the 

filtered curve fit and raw curve fit (in blue and green, respectively), are plotted against all possible cut 

times in part (b) of each figure.
65

Figure A.1(a): Measured and calculated O2 percentages for Test N. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.1(b): New estimation parameters and sum of squared errors (Test N). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 1000 2000 3000 4000 5000 6000 7000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 1000 2000 3000 4000 5000 6000 7000 8000

0

50

100

150

Cut Time (s)

k1

k1

k2

0 1000 2000 3000 4000 5000 6000 7000 8000

17

18

19

20

k2

New O2 Estimation Parameters

0 1000 2000 3000 4000 5000 6000 7000 8000

0

0.5

1

1.5

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
66

Figure A.2(a): Measured and calculated O2 percentages for Test T. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A2(b): New estimation parameters and sum of squared errors (Test T). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 2000 4000 6000 8000 10000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 2000 4000 6000 8000 10000 12000

-5

0

5

10

Cut Time (s)

k1

k1

k2

0 2000 4000 6000 8000 10000 12000

20.85

20.9

20.95

21

k2

New O2 Estimation Parameters

0 2000 4000 6000 8000 10000 12000

0.015

0.02

0.025

0.03

0.035

0.04

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
67

Figure A.3(a): Measured and calculated O2 percentages for Test Z. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.3(b): New estimation parameters and sum of squared errors (Test Z). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 500 1000 1500 2000 2500 3000 3500 4000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500 2000 2500 3000 3500 4000

0

100

200

Cut Time (s)

k1

k1

k2

0 500 1000 1500 2000 2500 3000 3500 4000

18

19

20

k2

New O2 Estimation Parameters

0 500 1000 1500 2000 2500 3000 3500 4000

0

0.2

0.4

0.6

0.8

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
68

Figure A.4(a): Measured and calculated O2 percentages for Test W. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.4(b): New estimation parameters and sum of squared errors (Test W). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 104

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 0.5 1 1.5 2 2.5

x 104

-500

0

500

Cut Time (s)

k1

k1

k2

0 0.5 1 1.5 2 2.5

x 104

16

18

20

k2

New O2 Estimation Parameters

0 0.5 1 1.5 2 2.5

x 104

0

10

20

30

40

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
69

Figure A.5(a): Measured and calculated O2 percentages for Test AH. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.5(b): New estimation parameters and sum of squared errors (Test AH). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 2000 4000 6000 8000 10000 12000 14000 16000 18000

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 2000 4000 6000 8000 10000 12000 14000 16000 18000

-100

0

100

200

300

Cut Time (s)

k1

k1

k2

0 2000 4000 6000 8000 10000 12000 14000 16000 18000

16

16.5

17

17.5

18

k2

New O2 Estimation Parameters

0 2000 4000 6000 8000 10000 12000 14000 16000 18000

0

10

20

30

40

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
70

Figure A.6(a): Measured and calculated O2 percentages for Test U. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.6(b): New estimation parameters and sum of squared errors (Test U). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 500 1000 1500 2000 2500 3000 3500 4000 4500

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500 2000 2500 3000 3500 4000 4500

-10

0

10

20

30

40

Cut Time (s)

k1

k1

k2

0 500 1000 1500 2000 2500 3000 3500 4000 4500

20.4

20.6

20.8

21

21.2

21.4

k2

New O2 Estimation Parameters

0 500 1000 1500 2000 2500 3000 3500 4000 4500

0

0.05

0.1

0.15

0.2

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
71

Figure A.7(a): Measured and calculated O2 percentages for Test V. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.7(b): New estimation parameters and sum of squared errors (Test V). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 1000 2000 3000 4000 5000 6000 7000 8000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

-2

-1

0

1

2

3

Cut Time (s)

k1

k1

k2

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

20.915

20.92

20.925

20.93

20.935

20.94

k2

New O2 Estimation Parameters

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

0

0.01

0.02

0.03

0.04

0.05

0.06

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
72

Figure A.8(a): Measured and calculated O2 percentages for Test AK. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.8(b): New estimation parameters and sum of squared errors (Test AK). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 500 1000 1500 2000 2500 3000 3500 4000 4500

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

-15

-10

-5

0

5

Cut Time (s)

k1

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

21.1

21.2

21.3

21.4

21.5

k2

New O2 Estimation Parameters

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

2

2.5

3

3.5

4

x 10-3

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
73

Figure A.9(a): Measured and calculated O2 percentages for Test AS. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.9(b): New estimation parameters and sum of squared errors (Test AS). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 2000 4000 6000 8000 10000 12000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 2000 4000 6000 8000 10000 12000 14000

0

200

400

Cut Time (s)

k1

0 2000 4000 6000 8000 10000 12000 14000

16

18

20

k2

New O2 Estimation Parameters

0 2000 4000 6000 8000 10000 12000 14000

0

2

4

6

8

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
74

Figure A.10(a): Measured and calculated O2 percentages for Test AV. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.10(b): New estimation parameters and sum of squared errors (Test AV). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 1000 2000 3000 4000 5000 6000 7000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 1000 2000 3000 4000 5000 6000 7000

-100

0

100

200

300

Cut Time (s)

k1

k1

k2

0 1000 2000 3000 4000 5000 6000 7000

17

18

19

20

21

k2

New O2 Estimation Parameters

0 1000 2000 3000 4000 5000 6000 7000

0

0.2

0.4

0.6

0.8

1

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line
75

Figure A.11(a): Measured and calculated O2 percentages for Test CA. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.11(b): New estimation parameters and sum of squared errors (Test CA). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 500 1000 1500 2000 2500 3000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500 2000 2500 3000 3500

-1

0

1

2

3

4

x 10-8

Cut Time (s)

k1

0 500 1000 1500 2000 2500 3000 3500

21

21

21

21

21

21

k2

New O2 Estimation Parameters

0 500 1000 1500 2000 2500 3000 3500

0

0.2

0.4

0.6

0.8

1

1.2

x 10-18

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
76

Figure A.12(a): Measured and calculated O2 percentages for Test CB. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.12(b): New estimation parameters and sum of squared errors (Test CB). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 200 400 600 800 1000 1200 1400 1600

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500

-1

0

1

2

3

4

x 10-10

Cut Time (s)

k1

0 500 1000 1500

21

21

21

21

21

21

k2

New O2 Estimation Parameters

0 500 1000 1500

0

1

2

3

4

x 10-23

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
77

Figure A.13(a): Measured and calculated O2 percentages for Test CC. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.13(b): New estimation parameters and sum of squared errors (Test CC). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 200 400 600 800 1000 1200 1400 1600

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500

0

1

2

3

4

5

x 10-9

Cut Time (s)

k1

0 500 1000 1500

21

21

21

21

21

21

k2

New O2 Estimation Parameters

0 500 1000 1500

0

0.5

1

1.5

2

2.5

x 10-21

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
78

Figure A.14(a): Measured and calculated O2 percentages for Test CD. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.14(b): New estimation parameters and sum of squared errors (Test CD). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 100 200 300 400 500 600 700 800 900

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 100 200 300 400 500 600 700 800

-3

-2

-1

0

x 10-11

Cut Time (s)

k1

0 100 200 300 400 500 600 700 800

21

21

21

21

k2

New O2 Estimation Parameters

0 100 200 300 400 500 600 700 800

-1

-0.5

0

0.5

1

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
79

Figure A.15(a): Measured and calculated O2 percentages for Test CE. Green line based on equation 3.3 

and LP filtered, red line based on general equation A.1 with optimized coefficients.

Figure A.15(b): New estimation parameters and sum of squared errors (Test CE). Raw line indicates 

optimal fit without LP filter, while filtered line indicates optimal fit with LP filter.

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

18

19

20

21

22

23

24

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 1000 2000 3000 4000 5000 6000

-5

-4

-3

-2

-1

0

1

2

3

4

5

x 10-9

Cut Time (s)

k1

0 1000 2000 3000 4000 5000 6000

21

21

21

21

21

21

21

21

21

21

21

k2

New O2 Estimation Parameters

0 1000 2000 3000 4000 5000 6000

0

0.5

1

1.5

2

2.5

x 10-19

Cut Time (s)

Error

Sum of Squared Errors

sum of sq error vs. filt line

sum of sq error vs. raw line

k1

k2
80

Several resulting trends from these newly derived estimation parameters and sum of squared errors, 

from each individual test set, were used in the determination of the most accurate linear oxygen 

estimation curve. First, the trends of the newly derived estimation parameters followed very similar 

patterns when compared among all of the individual test sets. Namely, the coefficient k1 showed a 

definite maximum value, while the coefficient k2 showed a definite minimum value; these phenomena 

appeared to take place generally at the same cut time, which was immediately flagged as a particular 

point of interest. Second, the trends of the sum of squared errors plots also followed very similar 

patterns when compared among all of the individual tests sets. The particular trend of interest among 

these errors was the fact that an approximate minimum value was observed at about the same cut time 

as that of the newly derived estimation parameters’ point of interest. After flagging several different cut 

times and new estimation parameter sets as points of interest, it was finally determined through 

observation that the optimum estimation parameters and thus, the optimum oxygen estimation curve, 

occurred at the cut time where the coefficient k1 reached its approximate maximum value, the 

coefficient k2 reached its approximate minimum value, and the filtered sum of squared errors reached 

approximately its minimum value. In the instance that more than one cut time generated approximately 

the same estimation parameters and sum of squared errors, the earlier cut time was deemed optimal 

due to the fact that more measured data was used in this particular computation; therefore, the linear 

estimation equation should reach more accurate oxygen values quicker than the later cut time(s). The 

different cut times and estimation parameters deemed to be the optimum values for the best fit linear 

oxygen estimation equation, for each of the fifteen individual test sets, are tabulated below, as shown in 

Table A.2.

Table A.2

New O2 estimation best fit cut times and estimation parameters.

Test ID Cut Time (s) k1 k2

N 1080 148.853 17.824

T 3600 3.442 20.869

Z 1080 142.947 18.404

W 1080 240.868 16.221

AH 720 205.275 16.229

U 3600 33.327 20.463

V 0 2.779 20.916

AK 0 1.959 21.132

AS 720 198.971 17.605

AV 4320 258.577 17.340

CA 0 0 21

CB 0 0 21

CC 0 0 21

CD 0 0 21

CE 0 0 21
81

Upon completion of analyzing the fifteen data sets individually, it was concluded that, to achieve the 

optimum estimation parameters for a linear oxygen approximation equation, all of the test sets must be 

considered in order to consider the wide range of generator operating scenarios. In order to derive the 

optimum estimation parameters that encompassed all fifteen tests, two different procedures were 

theorized.

The first theorized procedure involved a simple method of averaging the optimum estimation 

parameters from each of the individual test sets in attempting to achieve the final optimum estimation 

parameters; however, this method proved unsuccessful in achieving a more accurate oxygen estimation 

equation than the original heuristically developed equation. Several factors contributed to this method 

being deemed unsuccessful. One reason was the fact that many of the individual test sets yielded 

proportional estimation parameters (k1) across a very broad spectrum when analyzed by the curve fit 

algorithm of least squares. Specifically, Tests T, U, V, and AK yielded k1 values that were particularly low, 

with respect to other tests. By yielding such low proportional coefficients, the dependence on 

generator variables (i.e. C from Equation A.1) used in the linear oxygen estimation equation is 

significantly decreased. In addition, Tests CA through CE yielded k1 values of approximately zero, which 

essentially eliminates any dependence on generator variables. The intent of such a linear oxygen 

estimation equation was based on the fact that oxygen percentages would be dependent on generator 

variables; therefore, this method was deemed somewhat insufficient. Another reason behind this 

estimation parameter averaging method being deemed unsuccessful was the fact that some tests (i.e. 

Tests W and AH) were conducted over a significantly longer time span than others. This large difference 

in time scales, between several test sets, meant that some of the newly derived estimation parameters 

would need to be more heavily weighted than others. Significant time was not devoted to attempting to 

normalize, and subsequently average, the newly derived estimation parameters because a new 

procedure for determining the final optimum estimation parameters showed more promise.

The second theorized procedure for determining the final optimum estimation parameters involved the 

concatenation of all fifteen individual test sets into one single set of measured oxygen and dependent 

generator data. The order in which these tests were concatenated was not significant because time 

dependence, over the entire range of generator operation scenarios, was not a factor. Once all fifteen 

individual test sets were concatenated together, the same curve fitting algorithm of least squares was 

used to analyze the entire range of data, as was used for each of the individual test sets. The data for 

each individual test set was clipped at a prescribed cut time and remaining data concatenated together 

in order to analyze each possible cut time. However, due to the fact that some tests were only 

conducted over a short period of time, and therefore consisted of very few possible cut times, the 

largest possible cut time for total concatenated data was equal to the largest possible cut time of the 

shortest test. It must be noted that Test CD was excluded from the least squares curve fitting algorithm 

due to the fact that its maximum possible cut time was 720 s. As was performed for each individual test 

set, new estimation parameters were derived and sum of squared errors measured for each possible cut 

time, in increments of 360 s. Also, as previously performed, the sum of squared errors measurement 

began only after the transient period had deceased for each respective test set. Because this new 

algorithm had already been performed on fifteen different data sets, in order to determine the optimum 
82

estimation parameters for each individual test, the necessary trends and guidelines for determining such 

values had already been concluded. Therefore, the same trends were used on this full range of 

concatenated data in order to determine the final optimum estimation parameters. As previously 

mentioned, the optimum values tended to be located at the cut time with approximate maximum k1

value, approximate minimum k2 value, and approximate minimum sum of squared errors. Visual 

observations were also used to verify that the newly derived oxygen estimation curve did indeed fit the 

measured oxygen curve as accurately as possible. Figure A.16 shows the measured oxygen (in blue) 

plotted for the full range of concatenated test sets along with the original filtered oxygen linear 

estimation (in green), from equation 3.3, and a new filtered oxygen linear estimation (in red), generated 

by the least squares algorithm. By using the method of least squares to obtain a new oxygen estimation 

equation, an approximate 43% error reduction was achieved. It should be noted that the concatenation 

of all individual test sets was performed in the following order: Test U, AH, AK, AS, AV, CA, CB, CC, CD, 

CE, N, T, V, W, and Z.

Figure A.16: Measured and calculated O2 percentages for concatenated tests.

Although the new oxygen estimation proved more accurate than the original estimation, one 

important observation was made in the way of the sudden and significant oxygen estimation change 

noted particularly in cyclic load tests. The sudden changes in oxygen estimation were found to occur 

usually following a load change in the cyclic load profile tests. Upon further investigation, it was 

concluded that these large changes, or transient spikes, were due to similar changes in CAT, which the 

oxygen estimation equation is dependent on. In order to reduce such unexpected transient spikes in 

estimated oxygen, the CAT estimation was improved by way of using a more finely tuned RPM and MAP 

0 2 4 6 8 10

x 104

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

U AH AK AS AV CA - N T V W Z

 CE
83

based coefficient lookup table. By improving the CAT estimation, and using the least squares method to 

obtain a final best fit oxygen estimation, an overall error reduction of approximately 15% was achieved 

from the previous filtered curve fit in Figure A.16. The final filtered oxygen estimation with a refined 

CAT calculation (in red) is plotted along with the previous filtered curve fit (in green) and measured 

oxygen (in blue), as shown in Figure A.17.

Figure A.17: Measured and calculated O2 percentages (different CAT estimates).

The final filtered oxygen estimation is plotted (in red) along with the original oxygen estimation (in 

green) and measured oxygen (in blue), as shown in Figure A.18(a), to illustrate the advantage gained 

from using the least squares method and improved CAT calculation to obtain a best fit equation across a 

wide range of operating conditions. An overall error reduction of approximately 52% was achieved from 

the original heuristic oxygen estimation. In addition, the final estimation parameter options, k1 and k2 

(in blue and green, respectively), and sum of squared error for the filtered curve fit (in blue), are plotted 

against all possible cut times, as shown in Figure A.18(b).

0 2 4 6 8 10

x 104

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Percentages

meas

calc filt w/ orig CAT factor table

filt curve fit w/ new CAT factor table

U AH AK AS AV CA - N T V W Z

 CE
84

Figure A.18(a): Measured and calculated O2 percentages (original and final).

Figure A.18(b): Final estimation parameters and sum of squared error (all tests).

0 2 4 6 8 10

x 104

15

16

17

18

19

20

21

22

23

24

25

Time (s)

%O2

Oxygen Percentages

meas

orig calc filt

filterd curve fit

0 500 1000 1500

100

150

200

250

Cut Time (s)

k1

0 500 1000 1500

16.5

17

17.5

18

k2

New O2 Estimation Parameters

0 500 1000 1500

105

110

115

120

125

130

135

Cut Time (s)

Error

Sum of Squared Error

sum of sq error vs. filt line

k1

k2

U AH AK AS AV CA - N T V W Z

 CE
85

During the determination of the final oxygen estimation parameters, it was observed from Figure 

A.18(b) that the coefficient k1 reaches a large comparable value, the coefficient k2 reaches a small 

comparable value, and the filtered estimation sum of squared error is minimized at a cut time of 

approximately 720 s. Therefore, due to the fact that all possible values of k1, k2, and sum of squared 

error are comparable in the interval from 720 s to 1440 s, the earliest possible cut time should be 

deemed to possess the final optimum oxygen estimation parameters. As previously mentioned, if all 

three vital factors are comparable at multiple cut times then the earliest possible cut time should be 

deemed optimal due to the fact that more measured data was used in the particular computation, 

allowing for the oxygen estimation curve to reach more accurate values quicker than using later cut 

times. Therefore, 720 s was chosen as the optimal cut time for a linear best fit oxygen estimation curve 

to be generated. As shown in Figure A.18(b), to optimize the linear oxygen approximation equation, the 

new estimation parameters, occurring at 720 s, consisted of the following set: coefficient k1=201.55 and 

coefficient k2=16.96. It is worth noting that, in particular, test AH and test W play a significant role in 

determining the overall estimation parameters due to their extraordinary large time scales. Specifically, 

because tests AH and W are performed in such extreme indoor environments, the final oxygen 

estimation will be particularly sensitive to indoor operation. Finally, it can be observed from Figure 

A.18(a) that the newly generated oxygen estimation curve more accurately matches the measured 

oxygen curve than that of the original estimation, generated from Equation 3.3. This conclusion was 

made evident by measuring the sum of squared error between the original filtered oxygen estimation 

curve and the measured oxygen curve. As shown in Table A.3, the error between the new optimal 

filtered oxygen estimation and measured oxygen is significantly lower than the error between the 

original filtered oxygen estimation and measured oxygen; therefore, the new estimation algorithm 

allows for a more accurate oxygen calculation over a wide range of generator operating scenarios.

Table A.3

Estimation parameters and sum of squared error (all algorithms).

Algorithm k1 k2

Sum of Squared Error 

(meas. vs. filt.)

Original O2 

Estimation

175.00 18.00 228.35

1st O2 Curve Fit 

Estimation

227.00 16.80 129.32

Final O2 Estimation 

with new CAT

201.55 16.96 109.27
86

APPENDIX B

Summary of Generator Operation with Black Box ECU
87

This appendix defines operational procedures for the generator that are unique to operation with the 

black box ECU installed. Figure B.1 shows the operator panel of the generator and the throttle arm of 

the generator.

Figure B.1: Generator operator panel and throttle arm location.

Starting the Engine:

1. Switch on the ECU Power (switch 1).

2. Switch on the fuel/spark power (switch 2).

3. Turn ignition key switch and hold until engine is started.

a. If cold starting, the engine may have to be choked by manually closing the throttle by 

pressing the throttle are (indicated in Figure B.1).

Stopping the Engine:

1. Switch off the fuel/spark power (switch 2).

2. Switch off the ECU power (switch 1).

If modification of the ECU software is desired, or if monitoring the ECU performance is desired, a PC may 

be connected to the device. The PC to be employed must have TunerStudio installed, which is software 

available for download at www.tunerstudio.com. The PC can be connected to the ECU using a 9-pin 

serial port to 1/8” jack cable. Through TunerStudio, select File, Project, and Open Project. The 

appropriate project to choose is CPSC.

1

2

Throttle Arm