Previous Up Next Home

Section 4.2: Wide Band Oxygen


Section 4.2.a: Operation

The wideband oxygen sensor is the engine tuner's best friend. A narrowband sensor is next to useless to tell air-fuel ratio where you need it the most: loadsites where the engine must run rich so it does not blow up. Also, when ignition advance is changed, the fuel must be adjusted too. This is a very time and nerve-consuming task to do manually. GenBoard's extremely precise WBO2 controller can do it amazingly fast (~80msec time-constant).

Section 4.2.b: Wiring

Connecting the plugs

The wide band sensor's plug is connected to VEMS though the EC18 connector, the following schematic gives the pin connections. Make sure you use a fuse when connecting the Wideband sensor to its power supply. Use a 3A (three amp) automotive fuse.

Wiring schematic for WBO2 sensor

Wideband O2 intermediate connector pinout

WBO2 Connector Pinout
Name 7057 WBO2 WBO2 #1 WBO2 #2
nernst 1 (Vs) black EC18 Pin 13 EC18 Pin 1
Not Used (Rcal) 2 Not Used
VBATT (main relay, fused) 3 (Heater +) grey
Heater(-) 4 (Heater -) white EC18 Pin 18 EC18 Pin 17
Pump(-) 5 (Vs/Ip) yellow EC18 Pin 7 EC18 Pin 7
Pump(+) 6 (Ip) red EC18 Pin 9 EC18 Pin 8

Section 4.2.c: Installation and Upgrade

Before we plug the wide band in we need to do some tests and calibration. Connecting a real sensor is almost the last step (free-air calibration is later), otherwise a sensor can be destroyed. Do not turn on the WBO2 heater or take these measurements with the engine running (WBO2 heater will turn on when trigger events are occurring) unless told to do so explicitly.

Take a DC Voltage reading with a DVM across pins 5 and 6 of the wideband connector. The ideal voltage is zero. To adjust the voltage, you will need to change the value of wbo2_pump_pw_zero in config.txt. A good starting point value should be between 0x64 to 0x66. The values make a big difference; eg. at 0x65, voltage measured 0.10v. Changing to 0x64 resulted in a reading of -0.17, and 0x66 took the reading up to 0.5v. Every board is slightly different; your readings for pump_zero_dc will not be the same as listed here.

If the voltage values measured above are not high enough, adjusting nernst_dc_target will change voltage proportionally. If you have adjusted nernst_dc_target above 0xA0, but voltage values are still not correct, you will have to adjust wbo2_pump_pid_ki and possibly wbo2_pump_pid_ilimit. The product of wbo2_pump_pid_ki and wbo2_pump_pid_ilimit should be around 0x4000. When adjusting either wbo2_pump_pid_ki or wbo2_pump_pid_ilimit, adjust the other term proportionally so that the product of the two stays the same. The best method for setting these parameters is to copy someone else's settings which are known to work properly, and adjust from there.

The final setting we need to make is to wbo2_calibration:

Section 4.2.d: Configuration

WBO2 Sensor Config Variables
Variable Name Starting point value Units Description
ego_conf 0x07 (7) EGO configuration. Use 0x07 if you are using a WBO2 sensor.
wbo2_warmup_ramp 0xA0 (160) 0x01=0.2V/sec Rate at which voltage is increased to the WBO2 heater.
wbo2_abs_limit 0xE4 (228) 0x2A=12V 0xFF=30V WBO2 heater upper voltage limit.
wbo2_limit_maxt 0xA0 (160) 0x01=262msec Max time to spend at WBO2 heater upper voltage limit.
wbo2_fallback 0x60 (96) TODO: 0x01=? Voltage to fall back to after spending wbo2_limit_maxt time at wbo2_abs_limit.
wbo2_retry_t 0x06 (6) 0x01=262msec Retry applying heater after this amount of time.
wbo2_edgetime_corr 0xBA (186) Edgetime correction constant. Filters noise out of WBO2 signal. Don't change.
wbo2_edgetime_min 0x50 (80) 0x01=0.5usec Edgetime minimum length. Filters very short edgetimes out of WBO2 signal. You shouldn't need to change this.
wbo2_calibration 0xB0 (176) WBO2 sensor calibration. Differs for every sensor. Adjust until O2% on mlp07 is 20.95%
wbo2_pump_pw_zero 0x64 (100) Pump zero duty cycle trim. Default is 0x66. Adjust until pump reading is close as possible to zero volts.
wbo2_ri_target 0x96 (150) Pulse amplitude trim.
wbo2_nernstdc_target 0x8D (141) Nernst voltage trim.
wbo2_ri_confidence_scale 0x80 (128) Ri confidence scaling factor.
wbo2_heater_pid_kp 0x46 (70)
wbo2_heater_pid_kd 0x1A (26)
wbo2_heater_pid_ilimit 0x80 (128) WBO2 heater PID integral limit.
wbo2_pump_pid_kp 0x40 (64)
wbo2_pump_pid_ki 0xFF (255)
wbo2_pump_pid_kd 0x00 (0)
wbo2_pump_pid_ilimit 0x20 (32)
ego_coolant 0x92 (146) TODO: 0x01=? Minimum coolant temp for EGO correction enabling.
ego_maxtps 0xFF (255) 0x01=0.4% open Max TPS position for EGO correction enabling.
ego_maxmap 0xFF (255) 0x01=0.4% Max MAP pressure for EGO correction enabling.
ego_minrpm 0x08 (8) 0x01=100rpm Minimum engine speed for EGO correction enabling.
ego_maxrpm 0xFF (255) 0x01=100rpm Max engine speed for EGO correction enabling.
ego_lean_limit 0x30 (48) 0x01=0.4% Max percent of AFR enrichment allowed.
ego_rich_limit 0x80 (128) 0x01=0.4% Max percent of AFR enrichment allowed.
wbo2_warmup_target 0xFF (255) Unused.

Section 4.2.e: Tuning

Section 4.2.f: Testing and Monitoring

Type Manmlp07 to get to the AFR screen. The LCD screen should show something like:

Ri:0000 Nernst:0000

Heat:00 Pump:65

AFR=? 02%=?

AFR=08.29 OFF

Sending the command "mde02" will turn on the WBO2 heater. Sending "mde00" will turn the WBO2 heater off.

Previous Up Next Home