### ## ## ##### ## ## ## ## ######
# # # # # ## ### # # ####
_ | | _ | | | |_| | \___/
###### ## ## ## ## ##### ## ####
##### ## ##### ## ######
IMPORTANT: enter the case-INsensitive alphabetic (no numbers) code AND WRITE SOME SHORT summary of changes (below) if you are saving changes. (not required for previewing changes). Wiki-spamming is not tolerated, will be removed, so it does NOT even show up in history. Spammers go away now. Visit Preferences to set your user name Summary of change: '''Mazda Miata trigger''' Can someone take a look at this triggerlog, I have a wierd double trigger on each pulse. It shows up on the scope as well. The car runs on the stock engine management system. We are changing a few components to try to get rid of the problem but so far we have had no luck. Do you think that it can be generally ignored in firmware? http://www.vems.hu/files/JorgenKarlsson/miata/v3.3_u009005-2015-02-10-14.49.33.triggerlog '''Background''' The Mazda Miata is one of the most popular spec race cars in use in Sweden. One very successful combination is to put the 99-01 NB engine in the early 90's cars. The leading race car drivers here in Sweden wish to run with the stock trigger as they want the option to run the car on the stock engine management system if there is a problem. I am developing a plug and play harness for these cars and I would like us to look at the trigger to see if we can make this work reliably. '''Trigger system''' The crank and cam sensors are hall triggers on the 99-01 Miata NB engine. The teeth on the crank look like they are made for a VR trigger but it really is a Hall trigger. This is what I found when scoping the car. This should be sufficient for implementing the trigger. It could be a degree or two off here and there as it was taken with a scope on an idling car. As the crank trigger pattern is not symetric it's probably simplest to decode to a 4+1 trigger by counting and ignoring teeth. Possible pseudo code for the input filter: <code> Primtrig / Crank interrupt routine: if( secondarytriggercount ){ if( secondarytriggercount > 1 ){ if (primarytriggercount == 0){ initial sync found ...} primarytriggercount = 1; // tooth_wheel = .. } secondarytriggercount = 0;// Reset every crank pulse. } if (primarytriggercount == 0) return; // not in sync yet if( (primarytriggercount++) & 1 ){ // return if it was odd return(); // Return if it's the first tooth after cam sync () } //tooth at 50 deg found if this point is reached. primarytriggermagic(); ---- sectrig / cam interrupt routine: if (secondarytriggercount++ == 0) return(); // ignore single cam pulse // dual teeth cam sync pulse found if this point is reached. secondarytriggermagic(); </code> Note: '''this implementation depends on sectrig''' : Even if it has distributer (which I don't know), and same ignchannel configured for all 4 entries; it depends on working camsync, and will NOT limphome with broken sectrig. http://www.vems.hu/files/MembersPage/JorgenKarlsson/MiataNB/Miata99.png ---- '''They are not 90 degree apart, they are asymetric. something like 70-110-70-110 degrees.''' '''I have trigger log of this. It is correct''' - Can you publish triggerlog ? '''I removed 2 teeth, and got 2 x 180degree teeth and ran waste. Starts every other time.''' '''Now i need Cam sync. /Thorbjörn ''' * After removed primtrig teeth (don't remove in new installs), maybe camsync can be configured with ** max_prim_per_sec_count; //maximum primary pulse per sectrig pulse for sectrig filtering ** I think probably no. Optional: Add document to category: Wiki formatting: * is Bullet list ** Bullet list subentry ... '''Bold''', ---- is horizontal ruler, <code> preformatted text... </code> See wiki editing HELP for tables and other formatting tips and tricks.