MembersPage/Jimw/Config (2006-03-16 04:43:08)

Questions must be denoted with text "TODO:"

config.txt\n

############################################################
# JimW's Setup
# 1.8 8v counterflow motor
# 36-1 crank wheel
# 11th tooth on trigger wheel is TDC
# Genboard v3.2 Assembled
# High-Z (14.5ohm) 20lb/hr injectors), 3.0bar fuel pressure
# Wideband Heater:  WB1
# Wasted spark ignition
# 

############################################################
#
# STARTUP INFORMATION
# 
#
# Fuel Pump Priming
# 0x01=0.1ms
# eg 0D=1.3ms 
primep=0D

# Hot start priming pulse scaling at 170F
# Measured as percentage 
# 0x80=50%, 0xFF=100%
# eg A0=63%
primep_temp_scaling=A0

# Cranking  (while cold) pulsewidth
# Cranking pulsewidth at -40 F
# 0x01=0.1ms
# eg 1E=3.0ms
cwl=1E

# Cranking (while hot) pulsewidth
# Used when coolant temp >= 170 degF
# Typical cwh = about 20% of cwl
# 0x01=0.1ms
# eg 0A=1.0ms
cwh=0A

# Cranking Threshold
# Defines boundry between cranking and running;
# Cranking settings used up to cranking_thres rpm,
# then settings switch over to running values.
# Offset by +99 rpm
# 0x01=100 (+99) rpm
# eg 0x03=399 rpm
cranking_thres=03

# Minimum crank period
# Triggers before this amount of time are
# considered errors.
# Be sure to consider your max rpm (rev_limit) when
# calculating crank_minper.
# 0x01=0.16ms
# eg 0x50=12.8ms
crank_minper=50

# Rev limiter
# Fuel and spark are cut above rev_limit rpm
# 0x01=100 rpm
# eg 0x4B=7500 rpm
rev_limit=4B


#############################################################
# 
# INJECTOR SETTINGS
#
# JimW: 109 cid, 4 cylinder, 4 injectors, 20lb/hr
#
# COMMENT: 
# For Req_fuel information 
#     see: http://www.megasquirt.info/manual/mfuel.htm#reqfuel
#     see: new wiki page
#     Scaling the VE and and req_fuel effectively increases the resolution
#        of the fueling parameters. 
# EXAMPLE:
# scaling is accomplished by making:
#          req_fuel  = calculated req_value / 2
#          VE_TABLE==> j[] = j[] .*2 (matlab notation) 
#          This changes the range of values in the j[] table 
#              from 1..100 to 2..200  
#
# Req_fuel Setup
# To double the VE table resolution divide req_fuel by two
# and multiply the values in the VE table by two
req_fuel=6E

# Injector bank setup
# Number of injections per 720 degrees of crank revolution
#
# alternate works with h[0]
# alternate=00 means use only first (batch fire; all injectors in one batch)
# alternate=01 means alternate between first and second batch
# alternate=03 to use indexes 3,2,1,0 
# alternate=07 to use indexes 7,6,5,4,3,2,1,0 
#
# ex: 4 cyl, 4 injectors, 1 batch, all injectors attached to individual pins InjA...D
#     alternate=00
#     divider=04
#     h[0]=0F 00 00 00 00 00 00 00
#
# ex: 4 cyl, 4 injectors, 4 batches, all injectors attached to individual pins InjA...D
#     Injectors are fired in this order: A-C-D-B
#     alternate=03
#     divider=01
#     h[0]=02 08 04 01 00 00 00 00
#
# add 0x10 to fire in 1-batch mode at cranking
alternate=11

# divider = (number of cylinders)/(alternate + 1)
# examples:
# divider=04 and alternate=00 for 1 bank
# divider=02 and alternate=01 for 2 banks
# divider=01 and alternate=03 for 4 banks
divider=02

# Injector firing sequence
# *This belongs in tables.txt*
# mask config.alternate elements are used 
# Last element (non-zero element on far right) is looked up first
# Injector channels are numbered 01,02,04,08,10,20,40,80.
# Add values together to fire more than one injector channel at once.
# 
# INJA[01, EC36p07]
# INJB[02, EC36p19]
# INJC[04, EC36p08]
# INJD[08, EC36p20]
# INJE[10, EC36p09]
# INJF[20, EC36p18]
# INJG[40, EC36p06] 
# INJH[80, EC36p17]
#
#JimW h[0]=0A 05 00 00 00 00 00 00


# Injector open and closing times
#   for more detailed information look:
#      MembersPage/MarcellGal/EngineSwap/Feed
#      http://www.vems.hu/wiki/index.php?page=MembersPage%2FMarcellGal%2FEngineSwap%2FFuelFeed
#      http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening  
#   [ This comes from I = V/R, the current flowing varies with the voltage applied since 
#     the resistance of the injectors remains constant ]
#
# injopen should not be set higher than 0x20 (512us);
# If injopen is too high, VE table at low kPa (j[0]=.. .. ...) will have very small, untunable values
# There is a bad rumour (started from MegaManual, but it has never been correct) that injopen is the time needed for the injector to open. It is not the case, and it has never been the case. The misconception comes from the fact that if an injector opens slower than another injector with all other parameters the same, injopen value will be higher. Even with simpler injector opening models, injector closing is also heavily involved. In very short and simplified form: injopen=injector_opening_time - injector_closing_time. But read more:
# http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening
# 0x01=0.16ms
# eg 0x10=2.56ms
injopen=10

# Slope of line representing time added to 
# injopen to compensate for high/low battery voltage.
# Only used when 7V>=VBATT>=19V
# 0x01=xxxx
battfac=10

# Time added to injection to compensate for reduction in fuel flow
# during injector opening and closing.
# 0x01=0.24ms
# eg 0x20=7.68ms
injocfuel=2C

# Slope of line represeting time added to 
# injocfuel to comepensate for high/low battery voltage.
# Only used when 7V>=VBATT>=19V
# eg 0xFF=77% of injocfuel @ 14V
injrampup_battfac=FF

#############################################################
#
# High Z INJECTORS
#
# For non-PWM settings INJPWMT=FF, INJPWM=FF, INJPWM6=00 sets up HIGH Z injection
# COMMENT why wouldnt INJPWMT be set to 00, then it doesnt need to get "disabled"
#
# delta t=(t=0 to time initial resistance is overcome in injector)
# Injector PWM time at which to activate pwm
# FF=disabled (set to 1 mS per MegaManual for starting point)
# 0x01=0.1ms
injpwmt=FF          

# Injector PWM duty cycle
# Measured in percent (50%=0x80, 100%=0xFF)
# 100% when using HighZ
injpwm=FF

# Added Injector PWM duty cycle during low battery voltage (6V)
# Measured in percent (50%=0x80, 100%=0xFF)
# 0% when using HighZ (we're already always at 100%)
injpwm6=00

#############################################################
#
# Low Z INJECTORS
#
# delta t=(t=0 to time initial resistance is overcome in injector)
# Injector PWM time at which to activate pwm
# FF=disabled (set to 1 mS for starting point)
# 0x01=0.1ms
#injpwmt=0A

# Current during the hold cycle
# injpwm= (I= (V/R) * (% duty cycle))
# verify by measuring OC0 with DVM
# 0x01=0.4%
# eg 0xFF=100% (that measures OC0=0V; since this is before the inverting FET driver)

# 48/256 (=3/16), that measures OC0=5V * (256-48)/256
# Injector PWM duty cycle (when current limiting is active)
#injpwm=30

# In the case of low battery to keep the same I(current); the duty cycle must be increased.
# COMMENT: this is straight forward and should be built into the firmware
#      Also, shouldn't this be taken care of by battfac?  Seems redundant.
# 6volts = Vbatt/2; Iold = Inew; dutycycle should be equal to 2x 12volt percentage.
# added Injector PWM duty cycle during low battery voltage (6V)
#injpwm6=40


#############################################################
#
# RPM Calculation
#
# eg 0x0BB8 = 3000 = 12000 rpm/4 cyl
# 4 cylinder: rpmk[0]=0B, rpmk[1]=B8
# 5 cylinder: rpmk[0]=09, rpmk[1]=60
# 6 cylinder: rpmk[0]=07, rpmk[1]=D0
# 8 cylinder: rpmk[0]=05, rpmk[1]=DC
rpmk[0]=0B   
rpmk[1]=B8


#############################################################
#
# TPS related information
#
# TPS calibration
# --- TPS calibration means that the Analog(voltage) to Digital (count) is set 
#     at zero throttle and Wide Open Throttle (WOT)
#     The standard: lowest voltage for closed throttle
#                   highest voltage for open throttle

# TPS closed (low) and open (high) settings
tps_low=30
tps_high=AC

# Acceleration Enrichment basis
# 00 = Use TPS DOT for acceleration enrichment
# 01 = Use both MAP DOT and TPS DOT for acceleration enrichment
tpsdot_kpadot_conf=00

# TPSDOT bins
# Amount of change in throttle position over 0.1 sec
tpsdotrate[0]=05
tpsdotrate[1]=14
tpsdotrate[2]=28
tpsdotrate[3]=4D

# TPS accelerator enrichement
# Set to 00 for inital VE tuning
# Amount of enrichment for amount of change in throttle position
tpsaq[0]=00
tpsaq[1]=00
tpsaq[2]=00
tpsaq[3]=00

# Acceleration TPSDOT threshold (throttle sensitivity) 
# Minimum rate of change to enable any acceleration enrichment.
# This should be set to at least tpsdotrate[0].
# Setting lower than tpsdotrate[0] effectively disables
# TPS/MAP based acceleration enrichment.
tps_thresh=05

# Acceleration duration
# Amount of time to apply the enrichments specified in tpsaq[] bins.
# 0x01=0.1s
# eg 0x0A=1 second
tpsasync=02

# Cold acceleration multiplication factor
# Biased at 0x64
# eg 0x64 - bias = 0
acmult=64

# Cold acceleration added amount (at -40 F degrees)
# 0x01=0.1ms
# eg 0x14 = 2.0ms
tpsacold=05

# Deceleration fuel cut
# 100% (0x64) means no fuelcut on sudden tps-release
# Values under 96% (0x60) are dangerous (can cause lean condition)
# 0x00 would be rough behaviour
# Recommended value: 64
tpsdq=64

# Decel fuelcut enabled above threshold
# 0x01=100rpm
# eg 0x0F=1500rpm
decel_fuelcut_thres=0F

# Overrun fuelcut:
# injectors disabled above this
# 0x01=100rpm
# eg 0x10=1600rpm
overrun_fuelcut=1F

# Overrun fuel resume
# Injectors re-enabled below this value
# 0x01=100rpm
# eg 0x0F=1500 RPM
overrun_fuelresume=1E


#############################################################
#
# Idle enleaning limit
#
# Use to avoid enleaning of AFR when idling due to increased
# intake air temperature at 25C (77F) degrees.
# 0x01=1%
# eg 0x62=98%
airden_ignore=62

#############################################################
#
# Barometer settings
#
# MAP Sensor
# MPX4250AP 250kpa sensor (standard for v3.x)
kpafac=7F
kpaofs=52

# Mean Barometric Pressure
# MAP sensor failure value (limp home value)
# 0x01=2kPa
baro=64

# Max allowed difference in barometric pressure
# If barometric pressure less than baro-dbaro or
# barometric pressure greater than baro+dbaro, use
# baro as barometric pressure.
# 0x01=1kPa?
dbaro=0C 


#############################################################
# 
# These are important: DO NOT CHANGE for a 4cyl
# but they will be different for 5,6,8 or 12 cyl
# CHANGE TO WHAT?
# (useful descriptions are left over from Megasquirt)
config11=30   # old config 31
config12=30   # 4 cylinders
config13=02   # old config 00
mt_unused=FF

# Battery voltage calibration (affects dwell and pwm'ing)
# Adjust so that VBatt reading in Megatun.x matches actual supply voltage.
# 0x01=???
#
# default=BC
batt_cal=BC

##############################################################
#
# Coolant fan output 
#
# This ouput is generally used to trigger a relay to turn on
# the electric radiator fan, or engage the electric clutch for 
# engine cooling fan.
#
# Temperature when fan will turn on (in degC)
# 0x01=1 degree C
# eg 0x55 = 85degC
fan_temp=EA

# Decrease in temperature required to turn fan off
# fan_temp - fan_hyst=temp when fan will turn off
# 0x01=1 degree C
# eg 0x55 - 0x09 = 0x4C (76degC)
fan_hyst=05

# Coolant fan
# Output channel selection (digitalout)
fan_channel=FF

###################################################################
#
# Idle
#
# Below this coolant temperature, fast idle is enable
# 40 degF offset: 0=-40 degF, 200=160 degF
# 0x01=1 degF
# eg 0xAA=130 degF
fastidle=AA

###################################################
#
# Idle air controller based idle control
#
# Idle air controller stepping sequence for
# 4-pin bipolar stepper motors.
# iac_step_seq=C9:  Sequence is 3-1-2-0
# iac_step_seq=D8:  Sequence is 3-0-2-1
iac_step_seq=C9

# Idle Air Controller Type
# Use iac_conf=7E for stepper style
# Use iac_conf=18 for PWM style
iac_conf=18

# Max commanded output for solenoid
# eg 0xFF=5V
iac_max_steps=F0

# Enable IAC when TPS is less than iac_tps_thres
# 0x01=0.64% open
# eg 0x10=1/16 open throttle
iac_tps_thres=05

# Below this temp, idle is set to iac_cold_rpm
# In Fahrenheit degrees + 40
# 0x01=1 degF
# eg 0xA0=200degF
iac_cold_idle_temp=A0

# Above this temp, idle is set to iac_warm_rpm
# In Fahrenheit degrees + 40
# 0x01=1 degF
# eg 0xD0=248degF
iac_warm_idle_temp=D0

# At iac_cold_idle_temp, set idle to iac_cold_rpm
# 0x01=10rpm
# eg 0x74=1160rpm
iac_cold_rpm=74

# At iac_warm_idle_temp, set idle to iac_warm_rpm
# 0x01=10rpm
# eg 0x67=1000rpm
iac_warm_rpm=64

# Actual IAC (stepper or PWM) position that is 
# applied during cranking is calculated
# from engine coolant temp:
# interpolation between iac_cold_start_pos and iac_warm_start_pos
# open these significantly so lots of air can enter the engine
# during cranking without TPS applied.
# We want MAP values between 85..100kPa.

# Valve position on cold start (-40F)
iac_cold_start_pos=E2

# Valve position on warm start (170F)
iac_warm_start_pos=B0

# Intentional rpm overshoot after startup
# Add this amount of rpm to idle rpm at startup
# 0x01=10rpm
# eg 0x1F=310rpm
iac_afterstart_rpm=1F

# Duration to hold iac_afterstart_rpm
# 0x01=0.1sec
# eg 0x20=3.2 seconds
iac_afterstart_duration=20

# During the afterstart duration,
# iac_afterstart_steps * actual_afterstart_added_rpm
# is added to the iac reference position.
# Since PID control is active, sufficiently high
# iac_integral_limit_inc will make sure the valve
# is opened, even if iac_afterstart_steps is very small (0..1)
#
# Steps per 160rpm
iac_afterstart_steps=04

# PID parameters for idle air controller
iac_kp=25
iac_ki=17
iac_kd=A0
iac_integral_speed=40
iac_integral_limit_dec=10
iac_integral_limit_inc=20
iac_integral_deadband=14
iac_deadband=0A
iac_pid_conf=01
iac_overclose_interval=0A

# Reference position hint as function of coolant temp
iac_ref_pos[0]=35
iac_ref_pos[1]=34
iac_ref_pos[2]=33
iac_ref_pos[3]=32
iac_ref_pos[4]=31
iac_ref_pos[5]=30
iac_ref_pos[6]=2F
iac_ref_pos[7]=2E
iac_ref_pos[8]=2D
iac_ref_pos[9]=2C

# IAC Solenoid output channel
# 0xFF=Disable/Stepper type IAC
# 
iac_sol_channel=FF

###################################
#
# Ignition based idle control
#
# This section should be used for idle 
# if you have no idle air control device.
# Idle control via ignition advance/retard.
#
# Ignition advance based fine-adjust
# 0x01=0.25 crank degrees per 256rpm
iac_ign_advance_change=28

# Ignition advance based fine-adjust
# 0x01=0.25 crank degrees per 256rpm
iac_ign_retard_change=20

# Ignition advance limit when trying to increase RPM
# 0x01=0.25 crank degrees
# eg 0x10=4 degree limit
iac_ign_advance_limit=10

# Ignition retard limit when trying to decrease RPM
# 0x01=0x25 crank degrees
# eg 0x1A=6.5 degree limit
iac_ign_retard_limit=1A

# Minimum distance (in degrees) before change in advance/retard.
# If less than n degrees of ignition advance/retard is sufficient
# to reach the idle RPM target, don't change current advance/retard
# 0x01=0.25 crank degrees
# eg 0x08=2 crank degrees
iac_ign_threshold=08

#############################################################
#
# Initial Start and Warmup
#
# 15..40% (0x0F .. 0x28) are common (and sometimes even higher).
# Since originally warmup enrichment is not tuned, we often 
# adjust awev (besides cwl,cwh) to start the engine, but after
# warmup enrichments tuning is done, awev must retuned 
# to get back the desired pulsewidth. Take notes of 
# working cwl,cwh, awev settings and actual CLT and
# the warmup enrichments, so when warmup values are changed
# awev can be changed with simple calculation instead of guessing

# Afterstart warmup enrichment
# awev is the percentage of added fuel added at startup that fades away
# to zero in (awc) revolutions.
# 0x01=1%
# eg 0x1D
awev=1E

# Afterstart number of cycles
# Afterstart enrichment will be scaled from awev to zero 
# through this many cycles after startup
# 0x01=1 cycle
# eg 0x64=100 engine cycles
awc=96

# Afterstart warmup scaling at 170F
# Use this percentage of awev when coolant temp >= 170F
# 0x01=0.4%
# eg 0x80=50%, 0xFF=100%
awev_temp_scaling=A0

# Warmup Coolant 
# warmup_clt_range defines the temperature bins used for interpolation
# the values in warmup_clt_range is degrees Fahrenheit + 40
# C = 5/9 * F - 40 Looks messed up!
# F = 9/5 * C + 72 Looks messed up!
# use these:
# C= 5/9 * (F - 32)
# F= 9/5 * C + 32

warmup_clt_range[0]=00  # -40.0 C
warmup_clt_range[1]=14  # -28.8 C
warmup_clt_range[2]=28  # -17.7 C
warmup_clt_range[3]=3C  #  -6.6 C
warmup_clt_range[4]=50  #   4.4 C
warmup_clt_range[5]=64  #  15.5 C
warmup_clt_range[6]=78  #  26.6 C
warmup_clt_range[7]=8C  #  37.7 C
warmup_clt_range[8]=AA  #  54.4 C
warmup_clt_range[9]=C8  #  71.1 C

# warmup_clt is the value of each bin defined in warmup_clt_range
# this is the actual warmup enrichment. 
# Values biased at 100; these are additions to current enrichments.
warmup_clt[0]=A0
warmup_clt[1]=A0
warmup_clt[2]=A0
warmup_clt[3]=A0
warmup_clt[4]=A0
warmup_clt[5]=96
warmup_clt[6]=8C
warmup_clt[7]=87
warmup_clt[8]=7D
warmup_clt[9]=64

# warmup enrichment can be decreased as a function of rpm.
# this is a nice feature, eg. +16% ... +0% gives nice result
# set all to 0x64 to disable
# OBSOLETE, see warmup_rpm_scale
warmup_rpm[0]=64 # 100%
warmup_rpm[1]=64
warmup_rpm[2]=64
warmup_rpm[3]=64
warmup_rpm[4]=64
warmup_rpm[5]=64
warmup_rpm[6]=64
warmup_rpm[7]=64

# Warmup enrichment as function of RPM
# At the last RPM bin r[], apply this percentage 
# of warmup_clt[x]-100.
# Just above cranking RPM, 100% is applied.
# Linear interpolation is used between just 
# above cranking and highest rpm.
# Use 0xFF for full warmup enrichment at all RPM.
# Recommended: E0 .. F0
# F0=240/256=94% 
# below C0 (75%) is not recommended
warmup_rpm_scale=F0


#############################################################
#
# EGO (Exhaust Gas Oxygen) Setup 
#
#
# Need valid values for this variable
# Use ego_conf=20 for narrow band O2 sensor control?
# Use ego_conf=01 for PID control?
# Every one else using ego_conf=07
ego_conf=07

# EGO Resolution
# Minimum recognized change in EGO value
# 0x01=0.4%
# eg 0x02=0.8%
ego_delta=02 

# Minimum time between correction factor changes
# Measured in engine cycles
# 0x01=1 engine cycle
ego_lag=03

# Minimum coolant temperature for EGO enabling [F]
# eg. 0xC2 = 194 degF (108degC)
ego_coolant=92

# Maximum TPS position for EGO correction
# 0xFF=100% open (WOT)
ego_maxtps=FF

# Maximum MAP for O2 correction
# 0x01=2kPa
ego_maxmap=FF

# Minimum rpm for ego enabling
# Ignore all EGO information below this RPM
# 0x01=100rpm
# eg 0x0C=1200rpm
ego_minrpm=08

# Maximum rpm for EGO correction
# 0x01=100rpm
# eg 0x4B=7500rpm
ego_maxrpm=FF

# Warmup time
# 0x01=1 sec
# eg 0x3C=60 sec
# IS THIS THE AMOUNT OF TIME WE TURN ON THE HEATER TO WARM UP THE O2 SENSOR?
ego_warmup=3C

# Maximum allowed enleanment of AFR
# 0x01=0.4%
# eg 0x30=19.2%
ego_lean_limit=30 

# Maximum allowed enrichment of AFR
# 0x01=0.4%
# eg 0x80=51.2%
ego_rich_limit=30


#############################################################
# Dave Brul's WBO2 setup
# wbo2 config with softpwm_act; softpmw_act_var is broken!!
# You must still calibrate your WBO2. See Manual.

# Warm-up ramp speed
# 0x01=0.0032V/sec
# eg 0x3F=0.2V/sec
wbo2_warmup_ramp=A0

# Heater absolute voltage limit
# eg 0x2A=12V
# eg 0xFF=30V
wbo2_abs_limit=E4

# Max time allowed at absolute voltage limit
# in milliseconds
# 0x01=1ms
# eg A0=160ms
wbo2_limit_maxt=A0

# Fall back voltage after max time spent at absolute limit
# 1C=10V, 2A=12V, FF=30V
wbo2_fallback=60

# Time before retrying control:
# 0x01=4 sec
# eg 0x3B=59 seconds
wbo2_retry_t=06

# Edgetime correction constant C/R
# EVERYONE HAS wbo2_edgetime_corr=BA, SHOULD THIS BE ADJUSTABLE?
wbo2_edgetime_corr=BA

# Gate for small edgetimes
# Any reading less than this is ignored
# 0x01=0.5usec
# 0x50=40.0usec
wbo2_edgetime_min=50

# O2 percentage of 'normal' air: 20.947%, calibrated to 20.95
# WARNING: Sensor dependent. Every single sensor is different!
# For verification, also measure (and write here) sensor RCal (DVM Ohmmeter mode)
# between red wire and connector pin that has no wire towards the sensor (pins 2 and 6).
# The RCal lives in sensor connector housing.
# Typical reading is between 80 and 180 ohms.
#
# Rcal(ohms)  wbo2_calibration starting point
# 30          		0x00
# 50          		0x3C
# 70          		0x66
# 90          		0x85
# 110         		0x9D
# 130         		0xB0
# 200         		0xDC
# 300         		0xFC
#
# Rcal=127 ohm, wbo2_calibration=B0
# 0xB0 gives free air reading of 1850
# 0xD0 gives free air reading of 2000-2020
# 0xD2 = 2010-2030
wbo2_calibration=E0

# wbo2_pump_pw_zero:
# Pump zero duty cycle.
# Adjust to get pump+ close (within 0.1V if pump+ connection open) to pump-.
# Pump- is appr. 3.98V
# 5V/256 (?)
#
# default: wbo2_pump_pw_zero=0x66
#
#0x65=0.71V
#0x64=0.24V
#0x63=-0.064V
#0x62=-0.335V
wbo2_pump_pw_zero=63

# WBO2 target Ri (pulse amplitude)
# 0x01=5V/4096
wbo2_ri_target=96 

# OPA amplification, g = 270/75 + 1 = 4.6
# Vadc = g * (5 - Vnernst)
#
# Vnernst DC at sensor wire = 4.45V 
# Vnernst DC at adc = 4.6 * (5 - 4.45) = 2.53
# nernstdc_target = Vadc / g * 256 = 141 = 0x8D
# WBO2 target nernstDC
# 0x01=5V/256
# 0x01=20mV
# eg
# 0x66=2.04V
# 0x66=102 decimal
# 102*20mV=2.04V
wbo2_nernstdc_target=8D

# wbo2_ri_confidence_scale:
# Ri confidence scaling factor.
# s^2 < 255/scale
#
# EVERYONE HAS wbo2_ri_confidence_scale=80
# SHOULD THIS BE CHANGED TO SUIT SENSOR, OR SAME FOR EVERY SENSOR?
wbo2_ri_confidence_scale=80

wbo2_warmup_target=FF
wbo2_heater_pid_kp=46
wbo2_heater_pid_ki=10
wbo2_heater_pid_kd=1A
wbo2_heater_pid_ilimit=80
wbo2_pump_pid_kp=30
wbo2_pump_pid_ki=80 
wbo2_pump_pid_kd=00
wbo2_pump_pid_ilimit=80


#############################################################
#
#  Knock Detection and correction
#  2-channel knock sensor control
# 
#  Not currently used, mechanical lifter head makes too much noise
# 	f_knock = 900 / (pi*r) = 900 / (pi * 0.5 * 0.083) = 6.903 kHz 
# 	from datasheet tpic801.pdf page 10 table#1
# 	bandpass frequency selection 6.94 kHz is closest to 6.903 kHz
# 	filter setting = 29 hex (41 dec)

# Overall System Settings
# Knock selection
knock_conf=00
knock_sampling_window=FF

# Use knock sensing in this RPM range
# FF for both means no knock sensing/control
knock_minrpm=FF
knock_maxrpm=FF

# Channel #1 setup
knock1_frequency=29
knock1_gain=FF
knock1_integrator=FF

# Channel #2 setup
knock2_frequency=29
knock2_gain=FF
knock2_integrator=FF

# Trigger level
knock_threshold=FF
knock_noise_scale=FF

# Ignition effects
#
# Knock getting louder
knock_max_retard=FF
knock_default_retard=00
knock_retard_step=FF
knock_retard_delay=FF

# Knock getting softer
knock_advance_step=FF
knock_advance_delay=FF



#############################################################
#
# VE learning
#
# Some basic comments:
#   VE Learning can adjust a loadsite that is visited 
#   but not a neighboring loadsite that is rarely visited causing 
#   peaks and valleys in the VE (j[]) map that will need smoothed
#
#   EGO correction is transferred across loadsites for fast loadsite-changes 
#   (that happens, especially in kPa direction)
# 

# ve_learn_conf:
# VE Learning Enable/Disable
# Use ve_learn_conf=00 to Disable
# Use ve_learn_conf=01 to Enable
ve_learn_conf=01

# Minimum coolant temp for learning to be enabled.
# This should be set to a temperature above where
# warmup enrichments are used.
# 0x00=-40F
# 0xFF=215F
ve_learn_coolant=D8

# VE Learning speeds
# Higher number means more agressive changes
ve_learn_rpm_scale=1E
ve_learn_kpa_scale=1E
ve_learn_ego_scale=43
ve_learn_speed=FF
ve_learn_max_power=FF

# ve_learn_min_weight:
# Minimum weight for modifying VE entry
# NEED BETTER DESCRIPTION
ve_learn_min_weight=4D

# ve_learn_limit:
# Max deviation from reference VE bin
# 0x01=0.4%
ve_learn_limit=FF


#############################################################
#
# Triggers
#
# Primary_Trigger 
#
# NEED LIST OF VALID VALUES AND APPLICATIONS HERE
# FE: Rising Edge trigger
# FF: Falling Edge trigger
# 01: Multi-tooth wheel configuration
primary_trigger=01

# tooth_wheel:
# Used for multi-tooth wheels
# Total number of teeth on wheel
# eg For 60-2 wheel, 58 teeth = 3A
# eg For 36-1 wheel, 35 teeth = 23
tooth_wheel=23

# tooth_wheel_twidth1:
# width (in degrees) of each tooth 
# eg For 36-1 wheel, each tooth is 10 degrees = 0A
# eg For Rising edge coil type, angular width of 'window'
tooth_wheel_twidth1=0A

# trigger_tooth:
# Tooth that triggers event (Used for multi-tooth wheels)
# Usually first tooth after missing tooth is selected.
# Counting from missing tooth, where missing tooth=00.
# If using wheel (eg 60-2) with >1 missing tooth, 1st missing
# tooth is 00, second is 01; first tooth after missing teeth=02.
trigger_tooth=07

# Secondary_Trigger
# FE: Rising Edge trigger
# FF: Falling Edge trigger
# 01: Multi-tooth configuration
# 1D: Rising edge, enable, enable filtering, coil type, cam sync, single edge
secondary_trigger=01

# another_trigger_tooth:
# Trigger tooth for secondary trigger device.
# 06 (decimal 06) halves the 12-1 (2 events per crankrot for 4 cyl) - JoseLCortes
# 1E (decimal 30) halves the 60-2 (2 events per crankrot for 4 cyl)
# 14 (decimal 20) 1/3-ds the 60-2 (3 events per crankrot for 6 cyl)
another_trigger_tooth=12

# width (in degrees) of each tooth 
# eg For 36-1 wheel, each tooth is 10 degrees = 0A
# eg For Rising edge coil type, angular width of 'window'
# JoseLCortes: F0 #angular width of missing tooth
tooth_wheel_twidth2=06

# cam_sync settings:
###################################
# JoseLCortes:
# Cam trigger goes high 90 degrees BTDC on cylinder 1 compression stroke
# This results in the 0->1 trigger 20 crank degrees before the trigger_tooth (70 BTDC)
# Cylinder 1 start of intake stroke is defined as phase==0
# A) cyl 1 start of intake:        0 degrees, phase=0
# B) cyl 1 start of compression: 180 degrees, phase=60
# C) cyl 1 start of combustion:  360 degrees, phase=120 , trigger at 104
# D) cyl 1 start of exhaust:     540 degrees, phase=180
# 0->1 cam trigger arrives between B and C, thus cam_sync_r_edge_phase = 104 (dec)
#cam_sync_r_edge_phase=104
###################################
#
cam_sync_r_edge_phase=FF

#################################
# The 1->0 trigger arrives 180 cam degrees apart, thus cam_sync_f_edge_phase = (87+216/2)%216 = 33 (dec)
#################################
#
cam_sync_f_edge_phase=FF

##################################
# reset_engphase_after == 2 [revolutions] * ( (12-2) * tooth_wheel_twidth1 + 2 * tooth_wheel_twidth2 )
# 240 = 2 * ( 10*10 + 2*10 ) 
##################################
#
reset_engphase_after=D8


#############################################################
# MCELL's Trigger setup, using a 60-1 VR wheel
# Triggers, HW determines VR or Hall
# software defines how it reacts
# ======Primary  Trigger ====================
#primary_trigger=01
#tooth_wheel=3A
#trigger_tooth=10
# ======Secondary  Trigger ====================
#secondary_trigger=FF
#another_trigger_tooth=1E
#crank_minper=50
#tooth_wheel_twidth1=06
#tooth_wheel_twidth2=12
#cam_sync_r_edge_phase=FF
#cam_sync_f_edge_phase=FF
#reset_engphase_after=FF


#############################################################
#
# Ignition
#

# Distance (in degrees) from first tooth after missing tooth to cylinder #1 TDC
# 0x01=0.5 degrees
# eg 0xF0=120 degrees
# 62 degrees = 120 (from missing tooth) - 48 (trigger tooth * 6) 
ign_tdcdelay=78

# Dwell 
# Dwell settings for 14V and 6V
ign_dwell14=14 
ign_dwell6=1E

# Ignition advance at cranking
# 0x01=0.25 degrees (at crank)
# eg 0x20=8 degrees 
ign_crank_advance=20 

# Dummy ignition with inverted output
# 0x01=???
# eg 0x70=???
# 0xFF=Disable ignition output
# JimW ign_out=70
ign_out=70

# Highest indexed ignition coil to trigger
# At least 0..ignchmax index of h[2] must be filled in
# eg h[2] =     05 07 05 07 00 00 00 00
#    ignchmax = 03
ignchmax=03

# CEASE IGNITION AFTER engine_off_delay TIMEUNITS?
# 0x01=???
# eg 0x08=?
engine_off_delay=08

#############################################################
#
# Fuel Pump Control 
#

# TURN OFF PUMP AFTER pump_on_mintime TIME UNITS
# 0x01=???
# eg 0x0F=???s
pump_on_mintime=0F

# Free injector driver drives the fuelpump relay?
# If no free injector driver, select another channel (eg. from P259) or set last element of h[0]
# FF=Auto-shutoff disable (not recommended, dangerous)
fuelpump_channel=P259_5


#############################################################
#
# Second stage of injectors
# Not used

inj_stage2_rate=FF
inj_stage2_start_tps=FF
inj_stage2_start_map=FF


#############################################################
#
# Anti-lag system
# Not used

als_lowrpm=FF
als_maxtps=FF
als_ignretard=FF
als_rich=FF


#############################################################
#
# Exhaust Gas Temperature
# 48..4B are typical values for Celsius output, 
# calibrate with DVM so that:
# EGT reading is around: Tchip + 25C/mV * UinputmV 
# Tchip=25C
# 25C/mV is the same as 40uV/C that is characteristic of K-thermocouple
# UinputmV is the mV signal measured between green(+) and white(-) signals ( K-thermocouple wires during operation)
egt1_cal=4A
egt1_offs=00


#############################################################
#
# Boost Controller
# Not used

boost_conf=00
boost_targetoffs=00
boost_minpressure=FF
boost_pid_kp=20
boost_pid_ki=80
boost_pid_kd=01
boost_pid_ilimit=FF
boost_channel=FF


#############################################################
#
# Water pump Controller
# Not used

water_pump_temp=00

water_pump_hyst=00
water_pump_channel=FF

# read AlphaN 
# or leave these 00 for speed density control at all RPM (recommended)
hybrid_rpm_a=00
hybrid_rpm_m=00


#############################################################
#
# Misc outputs (WOT and RPM, WOT, RPM, channel definition)
#
# FF disables the outputs
# needs/wants: 
# RPM ( >7000 RPM) Switched ground for SuperBright LED (SHIFT LIGHT)
# RPM ( >rev_limit(7500 RPM) )Switched ground for SuperBright LED (REV Limiter) 
#
# Suggested Setup from Dave24_
# ============== Misc 2 output =================
# RPM ( >7000 RPM) Switched ground for SuperBright LED (SHIFT LIGHT)
misc2out_minrpm=46
misc2out_maxrpm=FF
misc2out_mintps=00
misc2out_maxtps=FF
misc2out_minmap=00
misc2out_maxmap=FF
# select channel yourself, i would go with on of the p259 outputs
# P259 ouput 0: EC36 pin 4
misc2out_channel=p259_0 

# ============== Channel Select =================
# not used
act_wot_rpm=FF
act_wot_channel=FF
# RPM ( >rev_limit(7500 RPM) )Switched ground for SuperBright LED (REV Limiter) 
act_rpm_rpm=4B 
# select channel yourself, i would go with on of the p259 outputs
# P259 ouput 1: EC36 pin 16
act_rpm_channel=p259_1 
# not sure about the wot output with rpm range

# ============== Misc 1 output =================
# WOT &amp; RPM( 4000RPM &lt; X &lt;7200RPM ) switched ground for relay (nitrous activation)
misc1out_minrpm=28
misc1out_maxrpm=48
misc1out_mintps=FF
misc1out_maxtps=FF
misc1out_minmap=00
misc1out_maxmap=FF
# select channel yourself, i would go with on of the p259 outputs
# P259 ouput 6: EC36 pin 31
misc1out_channel=P259_6 


#############################################################
#
# LCD layout
#
# A better description would definately be helpful
# TODO: wiki page reference
lcd_c0=FE
lcd_delay=FF
lcd_backlight=FF
lcd_offs[0]=FF
lcd_offs[1]=FF
lcd_offs[2]=FF
lcd_offs[3]=FF
lcd_default_view=00

##############################################################
#
# Ignition Sequence
#
# *This belongs in tables.txt*
# 
# DR_00[h[2] = 00, EC36p35]
# DR_01[h[2] = 01, EC36p33]
# DR_02[h[2] = 02, EC36p34]
# DR_03[h[2] = 03, EC36p36]
#
# http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FDigitalOut%2FTable
# 2 WASTED SPARK COILS TRIGGERED BY
# EC36p35 is 0 (mdh02/mdh82)
# EC36p33 is 1 (mdh12/mdh92)
# This is sparked ign_tdcdelay-ignadv crankangle after the missing tooth, before the output 0
# Firing order=1-3-4-2
# Note that h[2] is traversed backwards (from right to left as read here).
# Only ignchmax down to 0 indexes are used.
#
#h[2]=00 01 00 01 00 01 00 01


############################################################
#
# Boost target
#
# *This belongs in tables.txt*
#
# http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FBoostControl
# Boost target
# b[] is max boost-target (or MAP-target) in function of RPM
#b[0]=28 30 38 40 48 50 58 60
#
# Boost reduction as a function of TPS position
# t[] downscales boost
#t[0]=20 40 17 80 A0 C0 E0 FF




##################################################################################################
#
# Don't touch stuff below here
#
ego_pid_kp=40

# not used for the wbo2 incredible ego, only for NBO2_PID_EGO_EXPERIMENT
ego_pid_window=FF

# Narrow band O2 sensor target voltage
# ego_target = 51 * O2_sensor_voltage
ego_target=19
# wbo2_warmup_target:
# UNUSED

# max authority of I term is: wbo2_pump_pid_ki * wbo2_pump_pid_ilimit 
# note that lower wbo2_pump_pid_ilimit means faster operation

tables.txt:\nÿ2ÿ