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).
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
|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|
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.
Check your config.txt. wbo2_pump_pid_kd should always be 0x00.
wbo2_pump_pid_kp should be between 0x20 and 0x40. Setting this too high will result in significant oscillation of voltage readings later in the measurement process.
Place a 100 Ohm resistor between pump+ (pin 6) and nernst (pin 1) wires. We'll call this circuit "Rppn".
Place a 100 Ohm resistor between pump- (pin 5) and nernst (pin 1) wires. We'll call this circuit "Rnpm".
Turn on the WBO2 heater by issuing the "mde02" command via the PS/2 keyboard or your terminal program. Switch the LCD display to page 7 for WBO2 readings by typing "mlp07". Wait until the O2% is displayed.
Measure the voltage between ground and pump- (pin 5). It should read 3.96V.
Measure the voltage between ground and nernst (pin 1). It should read 4.41V.
Measure the voltage between nernst (pin1) and pump- (pin 5). It should read +450mV.
Turn off the WBO2 heater by issuing the "mde00" command.
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:
Attach the WBO2 sensor to the wiring harness of Genboard v3
Power up the board and change to LCD display page 7
Enable the WBO2 heater by typing "mde02". Wait for the O2% to show a reading.
Adjust wbo2_calibration until the O2% reads 2095 (read 20.95%, the amount of oxygen in free air). Don't forget that each time wbo2_calibration is changed, you must re-"make" config.mtt and upload it via your terminal program to Genboard v3.
|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_ilimit||0x80 (128)||WBO2 heater PID integral limit.|
|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.|
Type Manmlp07 to get to the AFR screen. The LCD screen should show something like:
Sending the command "mde02" will turn on the WBO2 heater. Sending "mde00" will turn the WBO2 heater off.