# Original by Jörgen Karlsson # For Ben Nesbitts Audi ABZ V8 with 60-2 trigger and also with trigger section for Joel Zernask Audi PT engine with 4 pins in flywheel for trigger in addition to stock cam sync. # 2005-08-08. standard nernst circuit # Firmware version 1.0.18. # Comments moved from older config to this by Jörgen Karlsson # Parameters listed in same order as in V3 itself!!! # Fuel Pump Priming # 0x01=0.1ms # eg 0D=1.3ms primep=00 # Hot start priming pulse scaling at 170F # Measured as percentage # 0x80=50%, 0xFF=100% # eg A0=63% primep_temp_scaling=40 # Cranking (while cold) pulsewidth # Cranking pulsewidth at -40 F # 0x01=0.1ms # eg 1E=3.0ms cwl=64 # Cranking (while hot) pulsewidth # Used when coolant temp >= 170 degF # Typical cwh = about 20% of cwl # 0x01=0.1ms # eg 0A=1.0ms cwh=1E # 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=02 ############################################################# # # 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=14 # 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 awev_temp_scaling=33 # Added some time after 1.0.23 awec=ff # Removed in 1.0.3x firmwares # 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=64 # Warmup Coolant # warmup_clt_range defines the temperature bins used for interpolation # the values in warmup_clt_range is degrees Fahrenheit + 40 # Celsius <-> Farenheight conversion: # C = 5/9 * (F-32) # F = 9/5 * C + 32 warmup_clt_range[0]=00 warmup_clt_range[1]=15 warmup_clt_range[2]=28 warmup_clt_range[3]=3C warmup_clt_range[4]=50 warmup_clt_range[5]=64 warmup_clt_range[6]=78 warmup_clt_range[7]=8C warmup_clt_range[8]=AA warmup_clt_range[9]=C8 # 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 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=63 # The most important fueling parameter. # Inportant information found here: http://www.vems-group.org/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening # Calculation: 6.49*(displacement of ONE cylinder in cc) / (injector in cc) req_fuel=5F # 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=01 # 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 # # Injector firing sequence # 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] alternate=17 # Injector open and closing times # for more detailed information look: # MembersPage/MarcellGal/EngineSwap/Feed # http://www.vems-group.org/wiki/index.php?page=MembersPage%2FMarcellGal%2FEngineSwap%2FFuelFeed # http://www.vems-group.org/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-group.org/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening # 0x01=0.016ms # eg 0x10=0.256ms injopen=0D # 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 # MAP Sensor # MPX4250AP 250kpa sensor (standard for v3.x) kpafac=7D kpaoffs=72 # Time added to injection to compensate for reduction in fuel flow # during injector opening and closing. # 0x01=0.024ms # eg 0x20=0.768ms injocfuel=26 # 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=FA ############################################################# # # 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" # # Injector PWM duty cycle # Measured in percent (50%=0x80, 100%=0xFF) # 100% when using HighZ injpwm=FF # 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 # 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]=05 rpmk[1]=DC # 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]=0E tpsdotrate[2]=20 tpsdotrate[3]=40 # TPS accelerator enrichement # Set to 00 for inital VE tuning # Amount of enrichment for amount of change in throttle position tpsaq[0]=08 tpsaq[1]=12 tpsaq[2]=17 tpsaq[3]=1B # Removed in 1.0.34 and up # 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=01 # Added in 1.0.34 als_cut_mintps=FF # Acceleration duration # Amount of time to apply the enrichments specified in tpsaq[] bins. # 0x01=0.1s # eg 0x0A=1 second tpsasync=00 # 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 # Removed in 1.0.34 # 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 # Removed in 1.0.34 # Decel fuelcut enabled above threshold # 0x01=100rpm # eg 0x0F=1500rpm # decel_fuelcut_thres=64 # Overrun fuelcut: # injectors disabled above this # 0x01=100rpm # eg 0x10=1600rpm overrun_fuelcut=18 # Overrun fuel resume # Injectors re-enabled below this value # 0x01=100rpm # eg 0x0F=1500 RPM overrun_fuelresume=16 # Rev limiter # Fuel and spark are cut above rev_limit rpm # 0x01=100 rpm rev_limit=41 airden_ignore=00 ############################################################# # ??????????????????????????????????????????? # 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=70 config12=30 config13=02 # 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=A4 # Below this coolant temperature, fast idle is enable # 40 degF offset: 0=-40 degF, 200=160 degF # eg 0xAA=130 degF fastidle=80 # Removed in 1.0.34 # 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 # 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 # Which commands to set from terminal? # TPS closed (low) and open (high) settings tps_low=14 tps_high=F0 ############################################################## # # 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=F3 # 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=09 # Coolant fan # Output channel selection (digitalout) fan_channel=FF # 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=10 # Max commanded output for solenoid # eg 0xFF=5V iac_max_steps=00 # Enable IAC when TPS is less than iac_tps_thres # 0x01=0.64% open # eg 0x10=1/16 open throttle iac_tps_thres=00 # Below this temp, idle is set to iac_cold_rpm # In Fahrenheit degrees + 40 # eg 0x64=140degF iac_cold_idle_temp=48 # Above this temp, idle is set to iac_warm_rpm # In Fahrenheit degrees + 40 # eg 0x6E=150degF=65.5C iac_warm_idle_temp=48 # At iac_cold_idle_temp, set idle to iac_cold_rpm # 0x01=10rpm # eg 0x74=1160rpm iac_cold_rpm=00 # At iac_warm_idle_temp, set idle to iac_warm_rpm # 0x01=10rpm # eg 0x5A=900rpm iac_warm_rpm=00 # 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=00 # Valve position on warm start (170F) iac_warm_start_pos=00 # Intentional rpm overshoot after startup # Add this amount of rpm to idle rpm at startup # 0x01=10rpm # eg 0x1F=310rpm iac_afterstart_rpm=00 # Duration to hold iac_afterstart_rpm # 0x01=0.1sec # eg 0x20=3.2 seconds iac_afterstart_duration=00 # Added in 1.0.34 iac_speed=07 # Removed in 1.0.34 # 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=00 # PID parameters for idle air controller iac_kp=25 iac_ki=10 iac_kd=30 # Removed in 1.0.34 # iac_integral_speed=C0 # Added in 1.0.34 launch_rpm=14 iac_integral_limit_dec=33 iac_integral_limit_inc=E4 iac_integral_deadband=0A iac_deadband=FE # Removed in 1.0.34 # iac_pid_conf=00 # Added sometime after 1.0.23 als_cut_maxtps=00 iac_overclose_interval=FF # Reference position hint as function of coolant temp iac_ref_pos[0]=00 iac_ref_pos[1]=00 iac_ref_pos[2]=00 iac_ref_pos[3]=00 iac_ref_pos[4]=00 iac_ref_pos[5]=00 iac_ref_pos[6]=00 iac_ref_pos[7]=00 iac_ref_pos[8]=00 iac_ref_pos[9]=00 # IAC Solenoid output channel # 0xFF=Disable/Stepper type IAC # iac_sol_channel=0F ################################### # # 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 # Removed in 1.0.34 # iac_ign_advance_change=10 # Ignition advance based fine-adjust # 0x01=0.25 crank degrees per 256rpm # Removed in 1.0.34 # iac_ign_retard_change=10 iac_ign_slope=FF ###### # Added sometime after 1.0.23 softrpm_range=4B # 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=18 # 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 ############################################################# # # 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=06 # Minimum time between correction factor changes # Measured in engine cycles # 0x01=1 engine cycle ego_lag=01 # Minimum coolant temperature for EGO enabling [F] # eg. 0x8C = 140 degF (60C) ego_coolant=00 # 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=05 # Maximum rpm for EGO correction # 0x01=100rpm # eg 0x4B=7500rpm ego_maxrpm=50 # Warmup time # 0x01=1 sec # eg 0x3C=60 sec ego_warmup=DC # Maximum allowed enleanment of AFR # 0x01=0.4% # eg 0x30=19.2% ego_lean_limit=1A # Maximum allowed enrichment of AFR # 0x01=0.4% # eg 0x80=51.2% ego_rich_limit=1A # Don't touch ego_pid_kp=25 # Removed in 1.0.34 # mt_unused=00 # Added in 1.0.34 als_enrich=FF ego_delta=03 # Narrow band O2 sensor target voltage # ego_target = 51 * O2_sensor_voltage ego_target=19 ego_pid_window=FF wbo2_warmup_ramp=9C # wbo2_warmup_target: # UNUSED # Removed in 1.0.34 # wbo2_warmup_target=FF # Added in 1.0.34 als_react_tps=00 wbo2_abs_limit=E4 wbo2_limit_maxt=A0 wbo2_fallback=60 wbo2_retry_t=06 wbo2_edgetime_corr=BA wbo2_edgetime_min=50 wbo2_ri_target=96 wbo2_nernstdc_target=9C wbo2_pump_pw_zero=65 wbo2_calibration=C6 wbo2_heater_pid_kp=45 wbo2_heater_pid_ki=11 wbo2_heater_pid_kd=1A wbo2_heater_pid_ilimit=81 wbo2_pump_pid_kp=15 wbo2_pump_pid_ki=4E wbo2_pump_pid_kd=00 wbo2_pump_pid_ilimit=FF wbo2_ri_confidence_scale=80 ############################################################# # # Knock Detection and correction # 2-channel knock sensor control # # 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=01 knock_sampling_window=F2 # Channel #1 setup knock1_frequency=29 knock1_gain=40 knock1_integrator=14 # Channel #2 setup knock2_frequency=29 knock2_gain=40 knock2_integrator=14 # Trigger level knock_threshold=00 knock_noise_scale=00 # Ignition effects # # Knock getting louder knock_max_retard=00 knock_default_retard=00 knock_retard_step=00 knock_retard_delay=00 # Knock getting softer knock_advance_step=00 knock_advance_delay=00 # Use knock sensing in this RPM range # FF for both means no knock sensing/control knock_minrpm=00 knock_maxrpm=00 ############################################################# # # 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) # # 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=BD ve_learn_max_power=FF # 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_min_weight: # Minimum weight for modifying VE entry # NEED BETTER DESCRIPTION ve_learn_min_weight=AC # Also VE learn speed. ve_learn_speed=FF # ve_learn_limit: # Max deviation from reference VE bin # 0x01=0.4% ve_learn_limit=FF # ve_learn_conf: # VE Learning Enable/Disable # Use ve_learn_conf=00 to Disable # Use ve_learn_conf=01 to Enable ve_learn_conf=00 ############################################################# # # LCD layout # # A better description would definately be helpful # TODO: wiki page reference lcd_c0=F8 lcd_delay=FF lcd_backlight=FF # Removed in 1.0.34 #lcd_offs[0]=FF #Removed in 1.0.34 #lcd_offs[1]=DC #Removed in 1.0.34 #lcd_offs[2]=FF #Removed in 1.0.34 #lcd_offs[3]=FF # Added some time after 1.0.23 kpa_conf=21 ign_balance=00 als_retard_mintps=FF als_retard_maxtps=00 lcd_default_view=00 ############################################################# # For Audi ABZ V8 engine with 60-2 trigger. # 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=D1 # 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 # 02: Not used #secondary_trigger=02 # 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=3A # 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=02 # another_trigger_tooth: # 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) # 0F (decimal 15) 1/4-ds the 60-2 (4 events per crankrot for 8 cyl) #another_trigger_tooth=0F # 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=7D # angular width of trigger tooth tooth WRONG, note that this is not real degrees. # 0-720degrees is mapped to 0-240dec for 60-2 720/240=3, that means that # you the real life number with 3 to get the right number for angular width # For 60-2 tooth_wheel_twidth1=02 (6degrees per tooth divided by 3) #tooth_wheel_twidth1=02 # angular width of missing tooth WRONG, note that this is not real degrees. # 0-720degrees is mapped to 0-240dec for 60-2 720/240=3, that means that # you the real life number with 3 to get the right number for angular width #tooth_wheel_twidth2=06 # cam_sync settings: ################################### # # 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=F0 ############################################################# # For Audi PT V8 engine with 4 pins in flywheel (62deg BTDC) and stock cam sync. # 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=FF # 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 # 02: Not used # I don't remember if the hall sender show high or low in the gap, if it's high we want FE and if it's low we want FF. secondary_trigger=FF # 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=3A # 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=02 # another_trigger_tooth: # 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) # 0F (decimal 15) 1/4-ds the 60-2 (4 events per crankrot for 8 cyl) another_trigger_tooth=0F # 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=12 # angular width of trigger tooth tooth WRONG, note that this is not real degrees. # 0-720degrees is mapped to 0-240dec for 60-2 720/240=3, that means that # you the real life number with 3 to get the right number for angular width # For 60-2 tooth_wheel_twidth1=02 (6degrees per tooth divided by 3) # Here 09 as it is real degrees divided by 10. tooth_wheel_twidth1=09 # angular width of missing tooth WRONG, note that this is not real degrees. # 0-720degrees is mapped to 0-240dec for 60-2 720/240=3, that means that # you the real life number with 3 to get the right number for angular width # I'm unsure if this needs to be FF or if it is ignored anyway. tooth_wheel_twidth2=FF # cam_sync settings: ################################### # Audi PT explaination # Changed to comply with reset_engine_phase=240 after finding that it was confusing to use realdeg/10 as phase. # Now each phaseunit = 720/240=3 # The cam trigger is high to overlap the crank timing pin which is at 62d BTDC. As we don't have an engine to measure on right now we assume that the window is 30 degrees wide. Starting at 62+15=77deg BTDC and ending at 62-15=47d BTDC. The 77d value is suitable for trigging on. 720-77=643deg, 643/3=214dec=0xD6 cam_sync_r_edge_phase=D6 ################################# # 720-47=673, 673/3=224dec=0xE0 cam_sync_f_edge_phase=E0 ################################## # reset_engphase_after == 2 [revolutions] * ( (12-2) * tooth_wheel_twidth1 + 2 * tooth_wheel_twidth2 ) # 240 = 2 * ( 10*10 + 2*10 ) reset_engphase_after=F0 ############################################################# # # 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=64 # Dwell # Dwell settings for 14V and 6V ign_dwell14=1E ign_dwell6=44 # Ignition advance at cranking # 0x01=0.25 degrees (at crank) # eg 0xF0=60 degrees ign_crank_advance=30 # Dummy ignition with inverted output # eg 0x71= Dummy(7?), inverting(?1) # eg 0x70= Dummy(7?), non inverting(?0) ign_out=70 # Highest indexed ignition coil to trigger # At least 0..ignchmax index of h[2] must be filled in. # The controller ignchmax channels to the right of the first index # eg if ignchmax = 01 # This will be the first index and the ones to the right of it is ignored, safer to fill them in too though: # __ # eg h[2] = 03 03 03 03 03 03 03 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=04 # 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=57 ############################################################# # # Second stage of injectors # Not used and not working inj_stage2_rate=00 inj_stage2_start_tps=00 inj_stage2_start_map=00 ############################################################# # # Anti-lag system # Working but not used in this app # Removed in 1.0.34 # als_lowrpm=F7 # Removed in 1.0.34 # als_maxtps=D4 # Removed in 1.0.34 # als_ignretard=FF # Removed in 1.0.34 # als_rich=FF #Added some time after 1.0.23 als_deact_rpm=FF als_deact_time=01 als_deact_egt=00 als_retard=00 als_rev_limit=40 ############################################################# # # 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) # Example: # P259 ouput 6: EC36 pin 31 # misc1out_channel=P259_6 misc1out_minrpm=0A misc1out_maxrpm=1E misc1out_mintps=40 misc1out_maxtps=FF misc1out_minmap=DE misc1out_maxmap=FF misc1out_channel=0F misc2out_minrpm=FF misc2out_maxrpm=FF misc2out_mintps=FF misc2out_maxtps=FF misc2out_minmap=F0 misc2out_maxmap=FF misc2out_channel=0F act_wot_rpm=FF act_wot_channel=2E act_rpm_rpm=FF act_rpm_channel=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=EC # Removed in 1.0.34 # egt1_offs=FD ############################################################# # Added some time after 1.0.23 als_tks_channel=5F ############################################################# # # Boost Controller # Not used and not working well (Sept-05) 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 water_pump_temp=00 # Hybrid Alpha-N/Speed-Density hybrid_rpm_a=00 hybrid_rpm_m=00 # Water pump Controller water_pump_hyst=00 water_pump_channel=FF toothrel_normal=ED toothrel_missing=EA fuelcut_min_kpa=00 fuelcut_max_kpa=FF tach_channel=EF tach_divider=FE shiftcut_conf=00 shiftcut_channel=FF shiftcut_time=01 softrpm_rpm=FF als_max_cut=00