MembersPage/JasonRussell/MazdaRX

Summer 2010 update

Running 1.1.78 with staged injectors

The car is running __much__ better than ever before. The changes in staged injection in the 1.1.7x firmware has made a world of difference.

Problem with the wideband controller though:

My config is here: [RX7 Config 2010-08-17]

Spring 2007 issues

Can someone give me a hint at what to look at to solve these problems bench testing (firmware 1.0.69):

Trigger from signalgen wav file for 12-1 trigger wheel works great for RPM, but the above problems are holding me back. If I can get an idea where to look next I'll troubleshoot as much as I can. Board hardware is v3.2. I did solder blob short the inductors up by the knock chip already. Thanks!

Configs are here: http://www.vems.hu/files/MembersPage/JasonRussell/rx7_1.0.69_mar2007mcd.txt

http://www.vems.hu/files/MembersPage/JasonRussell/rx7_1.0.69_mar2007mct.txt

Upgrade to firmware 1.0.39

I found some surprises (documented, but I missed them) when upgrading. Could someone take a quick look at these config files and see if there seems to be anything out of place? If it matters, this is running on a v3.1 board w/ 1 EGT channel. Other than that nothing special. ALS, Launch Control, Tach Output, etc. should all be disabled.

Of notable interest: The MAP sensor doesn't seem to register at all now. Blowing in the tube or using a syringe for pressure/vaccum it stays at "100 kPa" in both megatune and LCD.

Config:

http://www.vems.hu/files/MembersPage/JasonRussell/rx7_june2006.mcd

Tables:

http://www.vems.hu/files/MembersPage/JasonRussell/rx7_june2006.mct


Datalog from early afternoon of June 04, 2005. http://www.vems-groups.org/files/MembersPage/JasonRussell/jrussell_rx7_june04.zip

The WBO2 value in the log is questionable at this point.


Here's my current (31/05/2005) config and tables:

http://www.vems.hu/files/MembersPage/JasonRussell/may2005config.txt

http://www.vems.hu/files/MembersPage/JasonRussell/may2005tables.txt

Sanity check: Do these sound reasonable?

TDC After the trigger = 62.5 deg

Number of teeth on wheel = 11

Trigger tooth = 1

Another trigger tooth = 6

Crank Min. Period = 1280 uS

Angular width of tooth = 30.0 deg (not used without secondary trigger)

Angular width of missing tooth = 60.0 deg (not used without secondary trigger)

means TDC is assumed 62.5 deg after the relevant trigger event.

Notes:

The VR sensor on the scope looks really nice. I think it's my trigger setup that is causing me problems. I don't get any ignition advance at all and I have little insight to what the problem might be. I've tried changing settings for IAC and completely disabling it. It has nearly no affect on the idle and no affect at all on the ignition advance.

We agreed that VR sounds like good (not inverted)

CAD picture of the trigger setup as Jason envisions it.

trigger_setup.png

Example Calcs

Cranking:

MAP: 90 kPa

RPM: 280

Calculated advance (crank advance): 3 deg

Wheel specific: slightly after tooth 3

In practice: starts easily

1000 RPM:

MAP: 90 kPa

RPM: 1000

Calculated Advance: 15 deg (3C on table)

Wheel specific: roughly halfway between tooth 3 and tooth 4

In practice: advance = 0 deg


The below is really old information. Please consider that if reading and looking for information.

I am in the process of installing a Genboard v3.1 in my 1988 Mazda RX7.

I get this from Haltech tuners. Haltech is by far the most popular ECU for RX7's.

# Haltech setup from Hitman (modify to work with VEMS)
# Factory CAS alignment
# Use tooth offset (trigger_tooth) = 11
# Trigger angle = 65 degrees
# Multitooth trigger
# 24 teeth
# 4.5mS dwell
# falling output edge (coil fire)
                                                                                
# trigger1, bit0 0:falling/1:rising, bit1 0:toothwheel/1:coil, bit2 0:no filtering/1:filtering
# rising trigger for RX7 CAS - 24 tooth (binary: 111)
primary_trigger=07
                                                                                
# trigger2, bit0 0:falling/1:rising, bit1 0:enable/1:disable, bit2 0:no filtering/1:filtering, bit3   0:toothwheel/1:coil, bit4 0:alien advance/1:cam sync, bit5 0:single edge/1:both edges when cranking
# rising trigger for RX7 CAS - 1 tooth
# Binary: 011101 (rising, enabled, filtering, coil, camsync, single edge)
secondary_trigger=1D
                                                                                
# tooth wheel, active trigger tooth (00:missing tooth),
#
# after the missing tooth, ign_tdcdelay = 62 now
# so that trigger tooth is ~60 degrees BTDC
# This doesn't matter with coil type trigger (no missing teeth on wheel)
trigger_tooth=0B
                                                                                
tooth_wheel=18  # 24 teeth
crank_minper=50  # for std. coil tach signal
                                                                                
** Question about below... what do I do for a non-"missing tooth" setup?

# measured 115 degrees from first tooth after missing tooth to cyl#1 tdc
#ign_tdcdelay=7C # 62 degrees = 110 (from missing tooth) - 48 (trigger tooth * 6)                                                                                
                                                                                
# good range for rx7 coils: 4.5-5.0mS.
# 0x46(70 dec) * 64 usec = 4480 usec when VBatt >= 14V
ign_dwell14=46
                                                                                
# dwell6 = (dwell14 * 1.2 * 64) / 27
# add 199 * 27 usec = 5373 usec to dwell14 when VBatt = 6V
ign_dwell6=C7
                                                                                
# crank advance = 20 degrees
ign_crank_advance=50
                                                                                
ign_out=70     # EDIS:0x0? dummy: 0x7? disable:0xff bit0: invertout
ignchmax=01

# CAMSYNC #####################################################################
              

# the idea here is to use a phase variable internally, that goes from 0 .. reset_engphase_after (practically 240 decimal in your case), all variables are related to that.                                                             
cam_sync_f_edge_phase=00
cam_sync_r_edge_phase=78  # (cam_sync_f_edge_phase + reset_engphase_after/2) % reset_engphase_after if it's 360 crankdegrees after from falling edge. 
reset_engphase_after=F0
tooth_wheel_twidth1=05 # reset_engphase_after / 48
tooth_wheel_twidth2=0A

Please make a list of events associted with your trigger:

it will probably have

You can use some abbreviations, but the relation of TDC vs. the syncs are important.

You can look at timing.c update_engphase() and write the engine.engphase in your list of events.

Ok, I see a few problems here: cam sync doesn't do anything when using coil type trigger (comment in timing.c says "the argument is 0 when not using a tooth wheel trigger"). I can't use toothwheel type because I have no missing teeth.

The trigger events for 720 degrees of crank rotation (normal 4 cyl engine cycle) are:

24 crankwheel signals (30 crank degrees apart: 720 crankdegrees altogether). As you see, in _my_ setup there's only one coil. It fires 4 times per 720 crank degrees.

So this looks like an 8 cyl engine with a multitooth trigger, except the 24 cranktrigger doesn't miss a tooth. Starts to make sense (I really didn't want to make code changes before laying these out clearly). A few more issues:

Max Advance table:
5001000150020002500300035004000+
1315172433384038
The advance is the same from 4000 to 11000 RPM, so that part of the table is easy. The full table is here: MembersPage/JasonRussell/MazdaRX/IgnitionTable

In a normal RX7, there's two of the TDC signals (second one is just before the 12th tooth). We need to make this work at some point. I now have a 24&1 tooth and a 24&2 tooth trigger-sets, so I can test both setups. There's also 3 coils in a standard setup. We'll need to support this at some time. I don't mind taking on the code changes needed for the 3 coil setup.

Standard (idle) timing is 5 degrees ATDC (ATDC?? not BTDC?) for coil 1 (wastespark), 20 degrees ATDC for coil 2 & 3 (one for each rotor)


=Trigger Problem=

the 2 VR sensors output good waves, the lm1815 get good inputs, the lm1815 output looks good, but the RPM doesn't show up. In MegaTunix the status changes to "RUNNING" when I spin the VR sensor, so it's working in some capacity. Please help. I am on short deadline to get the car running (24 hours left!)

primary_trigger is setup for toothwheel but the wheel doesn't miss a tooth. When no missing tooth then RPM calc will NOT be triggered: it explains everything. I guess you need the teeth for mechanical reasons. The secondary trigger should probably fire RPM-calc and sync the teeth.

No matter what the divider is set to, I get an RPM of ~1400-1500 at cranking. RX7's have high speed (versus high torque) starters, but I know they aren't THAT high. ;-) Should be 350-500 RPM cranking. 24 tooth divided by 06 should be 4 triggers on the primary, exactly what I need for wasted spark. Please provide full commented config, not just extracts. Very easy to miss a constant, eg. rpm_k[] or config11..13 would be interesting here.

The cam_sync setup isn't documented at all (that I could find) here in the wiki and global.h either isn't clear to me or has no useful information about cam_sync. I would love to put a new page under the Manual, but the manual is disappearing from the wiki. *shrug* Yep, that's a problem, it's impossible to maintain that way. (or even to read it, very often).


2004-09-15 Trigger confusion

I got a little bit frustrated today at the trigger confusion I have with the coil type trigger not producing the correct output and camsync not working. I ground a tooth off the 24 tooth wheel (now it's 23-1). Set my trigger1=05 and tooth_wheel=17 (23). It's a reasonable RPM now! The injectors are firing. The injector lightbulb glows when I spin the sensor with the drill (~200 engine RPM). I used scope channel 2 connected to the IGBT and injector FETs, but I see only one pulse per CAM rotation. That's probably normal for injectors (alternate=03) however the engine won't run very happily with only one spark per 720 crank degrees. Any ideas here that I can try to fix this? I only have one coil (dual post wastespark) so it should fire 4 times per 720 crank degree cycle.

Jason,

If i understand correctly you have created a multitooth setup now (23-1) and you want to fire a single coil 4 times per cam revolution (720 crank degrees). Lets start out with the firmware, you wil have to compile the code with this added to my_make

# enable the coil to fire twice per crank revolation (on trigger
# tooth and on trigger tooth + 12)
MY_CONF += -D ANOTHER_TRIGGER_TOOTH=12

config variables:

                                                                                
# trigger1, bit0 0:falling/1:rising, bit1 0:toothwheel/1:coil, bit2 0:no filtering/1:filtering
# trigger signal after the lm1815, we trigger on the falling edge
primary_trigger=01
                                                                                
# trigger2, bit0 0:falling/1:rising, bit1 0:enable/1:disable, bit2 0:no filtering/1:filtering, bit3   0:toothwheel/1:coil, bit4 0:alien advance/1:cam sync, bit5 0:single edge/1:both edges when cranking
# disable camsync for now, with your multitooth crank wheel i dont see why its needed
secondary_trigger=FF
                                                                                
# tooth wheel, active trigger tooth (00:missing tooth),
# trigger tooth can be moved with this variable, but setting it 
# to >= (24 / 2 = 12 = 0B) does not makes sense lets keep that at
# missing tooth for now you can change it later when you have
# ign_tdc_delay set up properly 
trigger_tooth=00
                                                                                
# this number should represent the actual number of teeth on the 
# wheel in your case 24 - 1 = 23
tooth_wheel=17 

crank_minper=50  # for std. coil tach signal
                                                                                
# you should work this out for yourself, easy to change with 
# timing light so that actual advance matches seen advance.
ign_tdcdelay=7C 
                                                                                
# good range for rx7 coils: 4.5-5.0mS.
# 0x46(70 dec) * 64 usec = 4480 usec when VBatt >= 14V
ign_dwell14=46
                                                                                
# dwell6 = (dwell14 * 1.2 * 64) / 27
# add 199 * 27 usec = 5373 usec to dwell14 when VBatt = 6V
ign_dwell6=C7
                                                                                
# crank advance = 20 degrees
ign_crank_advance=50
                                                                                
ign_out=70     # EDIS:0x0? dummy: 0x7? disable:0xff bit0: invertout

# for a 4 cylinder set it to the number of cylinders - 1
ignchmax=03

if you set everything up like above you should be able to produce 4 sparks per cam rotation, and 4 injections too (you can adjust config.divider to fire less often) - DB


IAC settings

Since ignition advance can be configured to be adjusted to help maintain idle RPM, this worths some attention.

config.iac_conf // iac, conf bit7:4:stepper msec bit4=1:ignadv ON, bit3:preciseidle(0=on/off) bit2:stepper(0=pwm) bit1:low_power_halt bit0:power_iac_only_when_move

// since bit4 is used for 2 purpose, in the meantime
// set odd msec stepper speed if you want advance_control on,
// and even msec stepper speed if you want advance_control off

If you want to disable ignition advance based iac, but want odd msec for stepper, ignition advance adjust can be limited in other ways: