Question? I seem to hove somthin not right can some one look at my config at the bottom and see if it looks ok for triggering on this wheel.
Hall
showing the tooth cut out of my Spica pump drive wheel
had 36 teth now I only have 35 left.
This is my 2nd proto
This is my first proto
I will remake it now and clean stuff up
VW COP
Too long for the 4cly
Looks like I can make it work for the V6
The pinout
if there is a power-NPN inside I think we will need to add a small NPN (2N3904), eg. on the IGBT pads:
- the small NPN's Base goes to where the gate was (1k away from ign259's output pin)
- Emitter need to go to a resistor (say 10..33 Ohm) then the COP pin 3 (driving the power-NPN's base)
- and the Collector goes to power (+14V, same that powers the coil)
Let me note that stepper driver could drive the NPN almost directly, through a resistor (and very fast!) if we allowed any digitalout()-pin for ignition in edis.c (not just the ign259 outputs).
1J0973724 might be the plug for the VW coil as vw etka lists them
Triggering
I have been working on a easy way to retrofit older cars with no tiggers.
The proposed GenBoard/InputTrigger setups below are optimized for fast startup (little time spent in cranking).
"They are not simpler than the supported (ncyl/2*N - m) missing tooth crankwheel setup (like a vanilla 24-1, 36-1 or 60-2),"
How is making a "Vanilla 24-1, 36-1 or 60-2" + some cam pickup(we need to know when to fire the coils and which cyl to inject to)
simpler the breaking off 2 tabs and adding a hall.
but with appropriate firmware support they can find out the engine position faster at cranking.
Anyway, I like the documentation format. We need to explain the direct ign setups on DummyIgnition page (or rather subpages) in a similar way:
- drawing - the 3D is especially nice (rotation direction is important in some cases!!)
- explanation
- advantages
- disadvantages
- config settings (if supported)
This is not the simplest for a 4 cyl.
It is not?? OK what is simpler that will do seq. injection and drive the 4 coils?
The pickups are 180° apart.
If the 2 pickups were ANDed it would look like a it had 4 tabs not 2
so with this we can see 8 edges one every 45° of the encoder or 90° crank
We can add more tabs if we want. 4 tabs would give 22.5° on the encoder and 45° on the crank.
With this we get:
- Sync after one gap.
- If a pickup dies we could still run.
- Very simple to make and install in a old distributor or on a CAM
- If the 90° is ok most Hall distributors could be retrofited by removing 2 tabs and adding a 2nd hall
This is a old example of a simple trigger for 6 cyl.
The pickups are 60° apart.
Pickup A is even. and pickup B is odd.
With this I can get sync after the first Gap.
So I will not have the crank and crank untill #1 comes around to get sync.
also if one fails I should be able to still get sync after no more the 2 gaps (1 gap past the working pickup) and use softwate timing for the missing pickup.
This can go ether on a cam or inside a distributor.
injector connectors
http://www.machv.com/fuelincon.html $12
http://www.racetep.com/injcon.html $10
http://www.clewett.com/products/connector.htm $4.50 + $2.50 for 5 pins ($3.85each for 8)
good pics here
http://shop.store.yahoo.com/eagleday/ampconnectors.html
tyco info
http://catalog.tycoelectronics.com/TE/bin/TE.Connect?C=17458&M=FEAT&LG=1&I=13
827551-3(black type C) very common pin 927846-1
826008-1(grey typa A) 826008-5 (black)
825414-1(grey type b)
the -x is the color
injectors to buy
http://www.fiveomotorsport.com/Injector_SetsBMW.asp
http://www.dune-buggy.com/turbo/partslist.htm
more info
Yay I got it to GO!!!
2 things I found one was there was a port conflict on port A3
so I changed to
- define LED_STATUS 1
- define LEDPORT PORTD
now I get the pulses from the header JP1
the 2nd thing was that a reflash did not load etc/config.mtt
so I needed to
cat etc/config.mtt /dev/ttya
mcd
- config july 03 2005
- WBO2 config from Dave Brul
- 36-1 cranktrigger (had 36 teeth cut one off now it has 35)
- Priming pulse at -40 F [100 usec] eg. 0x80 * 100uS = 12.8 msec
- Priming pulse scaling at 170 F (0x80=half, 0xFF=same as cold) 0xA0 = ~63%
- typically cwh =~ 0.2 * cwl
- Cranking pulsewidth [x100 usec] at -40F (-40C) eg. 0xE0 * 100uS = 22400uS
- Cranking pulsewidth [x100 usec] at 170F ( 76.6C) eg. 0x40 * 100uS = 6400uS
- Cranking threshold [x100 rpm] eg. 0x03 * 100rpm = 300rpm
- Afterstart warmup enrichment (%added value) 0x50 = +80%
- Afterstart warmup scaling at 170 F (0x80=half, 0xFF=same as cold) 0xA0 = ~63%
- Afterstart number of engine cycles, NOTE: This is not ignition events anymore
- 0x80 means 128 cam rotations = 256 crank rotations = appr. 16 sec
- injectors ?unknown? cc @ 3bar
- engine 1598 cc
- at 6000 RPM and MAP=100kPa I think 80% duty is reasonable: 8msec real pulsewidth
- when j=117 (*1.17) and l=0x59 (*1.13)
- so 6.1msec = 61
- HackStart:
- req_fuel=2b
- =01
- Normally:
divider=02
- alternate injectors, and fire all at cranking
- ==================== TRIGGER ====================
- tooth wheel, active trigger tooth
- after the missing tooth (00: right after missing tooth)
- so that trigger tooth is ~60 degrees BTDC
- I think ours should be 10 .. 11
ign_tdcdelay=78 # 80 degrees
toothrel_missing=89
toothrel_normal=7F
- dwell used when VBatt >= 14V (64 usec). usual range for COP coils: 1.5-2.2mS.
- 0x10 = 1024 usec
- 0x20 = 2048 usec
- 0x2c = 2816 usec
- 0x32 = 3200 usec
- 0x36 = 3456 usec
- dwell enlargement [27 usec] (above dwell14) when VBatt = 6V
- 0x30 = 1296 usec
- 0x40 = 1728 usec
- 0x60 = 2592 usec
- 0x80 = 3456 usec
- ================ EGO enable and WBO2 =============
- ==== config13
- define ODDFIRE 0 // 0:normal, 1:odd-fire
- define O2_WB_SENSOR 1 // 0:narrowband, 1:diy-wb
- define CONTROL_STRATEGY 2 // 0:speed-density, 1:alpha-N
- define BARO_CORRECTION 3 // 0:off, 1:on
- config13=00
- Min RPM for ego enabling [100rpm]
- 0x08 * 100rpm = 800rpm
- 0x0C * 100rpm = 1200rpm
- ================= WARMUP ============================
- 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
- F = 9/5 * C + 72
warmup_clt_range[1]=15 # -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
- Warm up enrichment as function of temperature, biased at 100 (0x64)
- enrichment @-40.0C
warmup_clt[1]=B4
warmup_clt[2]=AB
warmup_clt[3]=A8 # * 1.36
warmup_clt[4]=A0 # * 1.32
warmup_clt[5]=9A
warmup_clt[6]=8C # * 1.12
warmup_clt[7]=7F
warmup_clt[8]=73
warmup_clt[9]=65 # * 1.0
- no enrichment (0x64==100 which is *1.0) @71.1C and above
- above warmup_clt[] values are applied at lowest RPM.
- added fuel due to warmup is only 86.3 % (*256) at highest RPM (last r[] bin)
injopen=20 # 32*16 usec
battfac=10 # +- 16 * 16usec depending on VBATT
injocfuel=08 # max rampup time at VBATT=7V is 8 * 24 usec
injrampup_battfac=FF # min rampup time is injocfuel*77%
- MAP range [2kPa] 0: use A/B lookup table
- 2.5 bar MAP sensor: 8D
- 1.15 bar MAP sensor: (hexa) 39
- 5.1 bar MAP sensor (impressive boost !!): FF (max value)
- ofs=52 and kpafac=33 showed higher than real kpa at low pressure
- according to VE learning (lowkpa j decreased)
- TODO: PWM-ing
injpwmt=08
injpwm6=20
- 4 Cylinder (12000/4) = 3000 (0x0BB8)
rpmk[1]=B8
- 0: TPSDOT, 1: MAPDOT acceleration enrichment
- Accel TPSDOT threshold (throttle sensitivity), this specifies the
- minimum rate of change to enable any acceleration enrichment
- Acceleration duration [0.1 sec] eg. 0x0A * 0.1 = 1 second
- Acceleration cold multiplication factor, biased at 0x64 eg. 0x64 - bias = 0
- Cold acceleration added amount (at -40 F degrees) [x100 usec]. eg. 0x14 * 100uS = 2000uS
- Rate of change bins for use with tps_thresh. If 14 =< actual delta(throttle position)
- < 28 then tpsdotrate[1] is the active bin.
- define the tps-dot bins: d(tps)/[0.1 sec]
tpsdotrate[1]=0E
tpsdotrate[2]=20
tpsdotrate[3]=40
- TPS acceleration amount (fn TPSDOT) [100 usec]. This is the acceleration enrichment
- pulsewidth, the active bin is determined by tpsdotrate[].
tpsaq[1]=12
tpsaq[2]=17
tpsaq[3]=1B
- Deacceleration fuel cut, 100(0x64) means no fuelcut because of sudden tps-release.
- This can cause lean condition, misfire, kill-the-cat etc, so take care.
- 00 would be rough behaviour, other value under 96% (0x60) is dangerous, I'd leave it at 100%:
- Decel fuelcut enabled above threshold [x100 rpm] eg. 0x0F * 100 = 1500rmp
- Overrun fuelcut: injectors disabled above this [x100 rpm]
- 16 (0x10) x 100 = 1600rpm when engine.tps <= config.iac_tps_thres (TPS fully released)
- Overrun fuelresume, injectors reenabled below this [x100 rpm]
- eg. 13 (0x0D) x 100 = 1300rpm. Must be lower than overrun_fuelcut.
- Rev limit (hard) [x100 rpm] eg. 0x4B * 100rpm = 7500rpm
- Use to avoid enleaning of AFR when idling due to increased intake air temperature.
- A value of 98 (decimal) will limit the leaning of AFR at idle to 98% at 25C degress.
- ============ config11
- define MAP_SENSOR 0 // 0:mpx4115ap, 1:mpx4250ap
- define ENGINE_STROKE 2 // 0:4-stroke, 1:2-stroke
- define INJ_TYPE 3 // 0:port injection, 1:throttle body
- bit 7-4 defines no of cylinders
- 4 cyl
mt_unused=00
- Calibration of the voltage divider (VBatt)
- the calibration is downscale only, if you use the v3.0 voltage divider
- resitors (100k, 20k -> ADC0 = VBatt / 6 ), a good starting value would be FF,
- if you have the new v3.1 voltage divider (75k, 22k -> ADC0 = VBatt / 4.409)
- BB would be a good starting value (BB = FF / ( 6 / 4.409))
- Fast idle temperature, open solenoid valve under (fastidle - 40 Fahrenheit):
- if you want 88F, set 88+40 = 128 = 0x80
- mean barometric pressure
- max allowed difference in barometric pressure, else use baro=0x64 (100 kPa)
- tps, min adc-count
- with the strangely connected TPS tps_low > tps_high
- max adc-count
- Temperature when fan will turn on degC eg. 0x55 = 85degC
- fun_temp-fan_hyst=temp when fun will turn off 0x55 - 0x09 = 0x4C (76degC)
- coolant fan, output selection (digitalout)
- IAC configuration ###########################################################
- (0,1),(2,3)
- (A,B),(D,C)
- c9=0b11001001=3,0,2,1
- 0 0 0 1
- 1 0 0 0
- 0 0 1 0
- 0 1 0 0
- d8=0b11011000=3,1,2,0
- 0 0 0 1
- 0 1 0 0
- 0 0 1 0
- 1 0 0 0
iac_step_seq=c9
- config.iac_conf bits:
- bit4=1 advance_control // 0: off 1: enabled
- bit3=1 precise_idle // 0: on/off 1: pwm/stepper based
- bit2=1 stepper_iac // enable stepper based iac
- bit1=1 low_power_halt 1 // don't move iac if batt < 8V
- bit0=0 power_off_iac // power off stepper 1 step cycle after each move
- turn off stepper, so iac_sol_channel can be driven via mdi.. to drive MAT (ran out of variable R for stimulator)
- 7e=0b0111 1010
iac_sol_channel=77
iac_max_steps=FF
- enable overrun fuelcut and iac below this.
- C = 5/9 * F - 40 = 66.1 C
- C = 5/9 * F - 40 = 70.6 C
- 0x60 = 960 rpm
- 0x50 = 800 rpm
iac_cold_start_pos=E2
iac_warm_start_pos=B0
- rpm added to target rpm after starting, for the duration of iac_afterstart_duration
- iac afterstart rpm for the duration of 32 * 0.1 = 3,2 seconds
- steps per 160 rpm ??
iac_kp=25
iac_ki=10
iac_kd=30
iac_integral_speed=C0
iac_integral_limit_dec=05
iac_integral_limit_inc=E0
iac_integral_deadband=0A
iac_deadband=05
- bit0=1 enable asymetric behavior
iac_overclose_interval=B8
iac_ign_advance_change=28
iac_ign_retard_change=20
iac_ign_advance_limit=10 # max 4 degrees
iac_ign_retard_limit=18 # max 8 degrees
iac_ign_threshold=08 # above 2 degrees
iac_ref_pos[0]=35 # -40.0 C # 60 %
iac_ref_pos[1]=34 # -28.8 C # 60 %
iac_ref_pos[2]=33 # -17.7 C # 60 %
iac_ref_pos[3]=32 # -6.6 C # 56 %
iac_ref_pos[4]=31 # 4.4 C # 53 %
iac_ref_pos[5]=30 # 15.5 C # 50 %
iac_ref_pos[6]=2F # 26.6 C # 50 %
iac_ref_pos[7]=2E # 37.7 C # 48 %
iac_ref_pos[8]=2D # 54.4 C # 47 %
iac_ref_pos[9]=2C # 71.1 C # 45 %
- EGO configuration ###########################################################
- config.ego_conf defines:
- bit0 define PID_EGO_CONTROL 0 // only if my_make has NBO2_PID_EGO_EXPERIMENT
- bit1 #define WBO2_SENSOR 1 see config13
- bit2 #define INCREDIBLE_EGO_CONTROL 2 always used for WBO2
- bit4 // #define EGO_NBO2_TARGET 4 killed, dangerous with corr.lambda used unconditionally
- ego_conf, bit5:NBO2_adc7 bit0:PID
- Step size (percent) [0.4%] eg. 0x02 * 0.4% = 0.8%
- Time constant (engine cycles) for changing correction factor
- Min coolant temperature for ego enabling[F] eg. 0xC2 = 194degF (108degC)
- C = 5/9 * F - 40
- 60 degrees celcius
- Max TPS position for ego correction
- Max percent to lean/rich afr[0.4%]
- 0x10 * 0.4% = 6.4%
- 0x30 * 0.4% = 19.2%
- 0x80 * 0.4% = 51.2%
ego_rich_limit=28 # 60 during tuning
- Max rpm for O2 correction [100rpm] 0x32 * 100rpm = 7500rpm
- Max MAP for O2 correction[kPa]
- Warmup time [sec] eg. 0x3C (60 sec)
- ego_target = 51 * O2_sensor_voltage
- incredible_ego speed limit: 80..c0
- not used for the wbo2 incredible ego, only for NBO2_PID_EGO_EXPERIMENT
- WBO2 ########################################################################
- wbo2 config with softpwm_act; softpmw_act_var is broken!!
wbo2_warmup_ramp=A0
wbo2_warmup_target=FF
wbo2_abs_limit=E4
wbo2_limit_maxt=A0
wbo2_fallback=60
wbo2_retry_t=06
wbo2_edgetime_corr=BA
wbo2_edgetime_min=50
- (2.55mA * 61.9 / 106.2 ) + 2.55 = 4.036299 mA
- 4.036299 * 510 Ohm = 2.058512712 V
- i measured +/- 2.06V -> Good!
- 1% is eaten by the 10k pump+ to pump- resistor
- but does the AE calibration value also match my Rcal of 106.2 ?
- o2 percentage of 'normal' air: 20.947%, calibrated to 20.95
wbo2_pump_pw_zero=64
- wbo2, target Ri (pulse amplitude) [5V/8192]
- 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 [5V/256]
wbo2_heater_pid_kp=46
wbo2_heater_pid_ki=10
wbo2_heater_pid_kd=1A
wbo2_heater_pid_ilimit=A0
wbo2_pump_pid_kp=40 # 2E
wbo2_pump_pid_ki=01 # 1D
wbo2_pump_pid_kd=00 # 08
wbo2_pump_pid_ilimit=E0 # 84
wbo2_ri_confidence_scale=80
- KNOCK #######################################################################
- engine with bore 83mm and stroke 86mm
- 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)
knock1_frequency=29 # ? 7 kHz ?
knock1_gain=40 # FF
knock1_integrator=14 # FF
knock2_frequency=29
knock2_gain=40
knock2_integrator=14
knock_conf=01
knock_sampling_window=F2
knock_default_retard=04
knock_max_retard=28
knock_maxrpm=05
knock_minrpm=FF
knock_advance_delay=50 # FF
knock_advance_step=FF #
knock_noise_scale=d8
knock_retard_delay=FF
knock_retard_step=08 # 3.2 degrees
knock_threshold=FF
- VE auto-learning #####
ve_learn_coolant=D8 # 80 degress
ve_learn_max_power=ff
ve_learn_rpm_scale=1E
ve_learn_kpa_scale=1E
ve_learn_ego_scale=43
ve_learn_speed=FF # 80 .. E0
ve_learn_limit=ff #30
ve_learn_min_weight=4D
ve_learn_conf=00 # 01 = on, during tuning
- lcd settings ################################################################
- no busypoll:
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
- CAMSYNC #####################################################################
cam_sync_f_edge_phase=FF
cam_sync_r_edge_phase=FF
reset_engphase_after=FF
- tooth wheel, angular width of tooth
- for a 60 tooth wheel this is 360 / 60 = 6 degrees
- tooth wheel, angular width of missing tooth
- 60 - 2 wheel, 3 times tooth_wheel_twidth1 = 18 degrees
- trigger and ignout setup ###################################################
- trigger1, bit0 0:falling/1:rising, bit1 0:toothwheel/1:coil, bit2 0:no filtering/1:filtering
- 00
- trigger2, bit0 0:falling/1:rising, bit1 0:toothwheel/1:coil, bit2 0:no filtering/1:filtering
- trigger again on tooth 30 (dec) further than trigger_tooth
tooth_wheel=22 # teeth between the missing tooth
crank_minper=7f # for std. coil tach signal
- crank advance = 10 degrees
ign_out=70 # EDIS:0x0? dummy: 0x7? disable:0xff bit0: invertout
ignchmax=05
engine_off_delay=08 # 2 seconds
- seconds [*0.262 sec] before fuelpump is turned off at poweron (without start of engine)
- output selection for fuelpump (digitalout)
- INJFET_7
- ouput channels #############################################################
act_wot_rpm=FF # WOT switch RPM threshold (FF=disable)
- used for stimout !! C0 gives good signal, noninverted 40 is much worse
act_rpm_rpm=FF # RPM switch RPM threshold (FF=disable)
act_rpm_channel=FF # RPM switch output channel selector
misc1out_channel=FF
misc1out_maxmap=FF
misc1out_maxrpm=19
misc1out_maxtps=FF
misc1out_minmap=50
misc1out_minrpm=06
misc1out_mintps=20
misc2out_channel=FF
misc2out_maxmap=FF
misc2out_maxrpm=FF
misc2out_maxtps=FF
misc2out_minmap=FF
misc2out_minrpm=FF
misc2out_mintps=FF
- EXPERIMENTAL FEATURES ##################################################################
- injector staging
inj_stage2_start_tps=FF
inj_stage2_start_map=FF
- ALS
als_maxtps=FF
als_ignretard=FF
als_rich=FF
als_rev_limit=7F
- EGT
egt1_offs=00 # EGT offset (signed)
boost_channel=FF
boost_conf=00
boost_minpressure=FF
- boost_channel=02
- boost_conf=61
- boost_minpressure=00
boost_pid_ilimit=ff
boost_pid_kd=01
boost_pid_ki=80
boost_pid_kp=20
boost_targetoffs=00
water_pump_channel=ff
water_pump_hyst=00
water_pump_temp=00
- always by MAP sensor
hybrid_rpm_m=00
mct
j[0]=A77F 9F7F 307F 487F 557F 677F 797F 957F
j[1]=B57F B17F 307F 577F 6A7F 847F 907F A87F
j[2]=B37F C37F 307F 5F7F 857F 907F 987F A87F
j[3]=BE7F BC7F 317F 687F 997F A17F A47F A77F
j[4]=B77F B57F 3A34 4E38 7372 686D 3835 4E3C
j[5]=7D74 7A80 3935 4C3D 7E71 8D94 3D35 5543
j[6]=8973 9FA7 4830 6755 9579 B1B5 5730 846A
j[7]=A890 C3B3 5F30 9085 A898 BCBE 6831 A199
l[0]=FF FF FF FF 07 0C 14 1D
l[1]=25 2D 36 3E 27 46 64 7D
l[2]=96 B9 D2 FF 10 10 10 10
l[3]=15 10 10 10 20 20 20 20
l[4]=17 20 20 20 0F 0F 0F 0F
l[5]=15 0F 0F 0F 0F 0F 10 10
l[6]=19 10 10 10 20 20 20 20
l[7]=20 20 20 20 10 10 10 10
n[0]=30 20 20 02 B6 00 11 00
n[1]=8A 80 00 00 09 01 01 20
n[2]=00 00 6D 24 FF FF FF FF
n[3]=FF FF FF FF FF FF FF FF
n[4]=FF FF FF FF FF FF FF FF
n[5]=FF FF FF FF FF FF FF FF
n[6]=FF FF FF FF FF FF FF FF
n[7]=FF FF FF FF FF FF FF FF
k[0]=2A 10 10 10 20 20 20 20
r[0]=25 10 10 10 10 10 10 10
h[0]=FF FF FF FF FF FF FF FF
h[1]=FF FF FF FF FF FF FF FF
h[2]=FF FF FF FF FF FF FF FF
b[0]=FF FF FF FF FF FF FF FF
t[0]=FF FF FF FF FF FF FF FF
mdkff mdf05
RPM:0108 T 76 P000
RPM:0054 T 76 P000
RPM:0108 T 76 P000
RPM:0108 T 76 P000
0=0000 1=0000 2=0000 3=0000 4=0035 5=00F7 6=000A 7=0000 8=00FC
B0=0000 B1=21D5 B2=2A2A B3=1B28 B4=0000 B5=0000 B6=0000 B7=0000 B8=0000 B9=0000
BA=0000 BB=0000 BC=18DD BD=0000 BE=1201 BF=0000 B0=0000 B1=0000 B2=0000 B3=0000
B4=0000 B5=0000 B6=18E4 B7=0000 B8=0000 B9=18E6 BA=0000 BB=F300
E0=0000
I0=0068 I1=0000 I2=00EA I3=0015 I4=00A7 I5=0001 I6=007A I7=0000 I8=006B I9=0000
IA=000C IB=0000 IC=0001 ID=0000 IE=0000 IF=0000
KB: 0000 0000