Page 1 of 5

6g75 decoder eclipse for ms3

Posted: Sun Oct 23, 2016 4:45 pm
by juansh2385
I going to start a new post to keep everything organize

I am working with the ms2 code for a simplified version of this but I want to upload everything thats necessary to get an official release form ms3 that includes the cam and crank pattern, not just the crank like the version Im working.

Cam and Crank signal identifying the phase of the engine are going to be the next thing I upload with the appropriate trigger angle.

Re: 6g75 decoder eclipse for ms3

Posted: Sun Oct 23, 2016 4:51 pm
by juansh2385
This is a modified rover 3 with corrected angles

Code: Select all

 } else if (spkmode == 24) {
        no_teeth = 32;  // wasted spark
        last_tooth = no_teeth;
        no_triggers = 3;
        deg_per_tooth[0] =   100;
        deg_per_tooth[1] =   100;
        deg_per_tooth[2] =   100;
        deg_per_tooth[3] =   100;
        deg_per_tooth[4] =   100;
        deg_per_tooth[5] =   100;
        deg_per_tooth[6] =   100;
        deg_per_tooth[7] =   100;
        deg_per_tooth[8] =   100;
        deg_per_tooth[9] =   100;
        deg_per_tooth[10] =  200;
        deg_per_tooth[11] =  100;
        deg_per_tooth[12] =  100;
        deg_per_tooth[13] =  100;
        deg_per_tooth[14] =  100;
        deg_per_tooth[15] =  100;
        deg_per_tooth[16] =  100;
        deg_per_tooth[17] =  100;
        deg_per_tooth[18] =  100;
        deg_per_tooth[19] =  100;
        deg_per_tooth[20] =  100;
        deg_per_tooth[21] =  200;
        deg_per_tooth[22] =  100;
        deg_per_tooth[23] =  100;
        deg_per_tooth[24] =  100;
        deg_per_tooth[25] =  100;
        deg_per_tooth[26] =  100;
        deg_per_tooth[27] =  100;
        deg_per_tooth[28] =  100;
        deg_per_tooth[29] =  100;
        deg_per_tooth[30] =  100;
        deg_per_tooth[31] =  300;

        smallest_tooth_crk = 100;
        smallest_tooth_cam = 0;
        
        trigger_teeth[0] = 12; 
        trigger_teeth[1] = 23;
        trigger_teeth[2] = 1;
        trig_angs[0] = -350 + tmp_offset; 
        trig_angs[1] = -350 + tmp_offset; 
        trig_angs[2] = -350 + tmp_offset; 


        if (num_cyl !=6) {
            conf_err = 17;
        }

Re: 6g75 decoder eclipse for ms3

Posted: Sun Oct 23, 2016 4:56 pm
by juansh2385
*EDIT*
initial sync code

Code: Select all

  //initial sync
    if (!(synch & SYNC_SYNCED)) {
        if  ((!tooth_diff_this) || (!tooth_diff_last) || (!tooth_diff_last_1)) {
            return; // only sync when there's enough data
        }

        // when unsynced we wait until we see a missing tooth and then another one
        // and count the teeth in-between

        if (!(synch & SYNC_SEMI)) { // just starting
            temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
            if (tooth_diff_this > temp1) {
                tooth_no = 0;
                synch |= SYNC_SEMI; // started sync sequence
            }
            return;
        } else { // started sequence, check possible sync points
            tooth_no++;
            if (!(synch & SYNC_SEMI2)) { // just starting
                temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
                if (tooth_diff_this > temp1) {
                    if (tooth_no == 10) {
                        tooth_no = 0; // tooth 1
                        goto WHL_ROV3_OK;
                    } else {
                        ign_reset(); 
                    }
                }
                return;
            }
        }
WHL_ROV3_OK:

	    synch &= ~SYNC_SEMI;
	    synch &= ~SYNC_SEMI2;
	    synch |= SYNC_SYNCED;

    } else {
        // recheck for sync
        if ((tooth_no == 11) || (tooth_no == 22) || (tooth_no == 32)) {  // (one less)
            temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
            if (tooth_diff_this <= temp1) {
                outpc.syncreason = 50;
                ign_reset();
                return;
            }
            if (tooth_no == 32) {
                tooth_no = 0;
            }
        }
    }

    goto common_wheel;

Re: 6g75 decoder eclipse for ms3

Posted: Sun Oct 23, 2016 5:01 pm
by juansh2385
Please remember that I have a ms3 processor that I want to use to verify any test code for the main code before I give back the car to the owner (I told him to buy a ms3 but he wants to use a spare ms2 he got laying around )

either way any work done by the developers (can/is) going to be tested if done before I got to give the car back (2 to 3 weeks probably)

Re: 6g75 decoder eclipse for ms3

Posted: Sun Oct 23, 2016 5:14 pm
by juansh2385
the hardware is configured as:
juansh2385 wrote: The patter was log in fallen edge. For this logs the pcb 3.0 is configure for vr input (hall sensor mod) for the crank and the opto input for the cam I jump tach select to vrout inv to match the opt coupler output. Right now both conditioner output ground(go low ) when the receive a low signal (crank and cam sensor go low when they are at a tooth)

Re: 6g75 decoder eclipse for ms3

Posted: Mon Oct 24, 2016 6:31 am
by juansh2385
James is it me or there is something wrong with the first tooth after a missing tooth section (either 2 0r 1) the first tooth is longer and I think is messing with the reading. With the code section that I pm you I could get rpm readings but where not stable and keep missing sync

Re: 6g75 decoder eclipse for ms3

Posted: Mon Oct 24, 2016 6:37 am
by juansh2385
Screen Shot 2016-10-24 at 9.35.30 AM.png

Re: 6g75 decoder eclipse for ms3

Posted: Mon Oct 24, 2016 7:27 am
by juansh2385
I think this is one of those cases that is easier to use the edge function in the decoder for sync.

What do you Think James?

Re: 6g75 decoder eclipse for ms3

Posted: Mon Oct 24, 2016 5:03 pm
by juansh2385
I found a couple mistakes in the implementation i was doing but I now have a stable rpm signal in ms2 using only the crank sensor. Next are the phase and trigger angles. Wether stop me from identifying today the angles but hopefully tomorrow will be a better day.

Re: 6g75 decoder eclipse for ms3

Posted: Tue Oct 25, 2016 1:36 pm
by juansh2385
This for now this mod version gave me a stable rpm reading. I haven't taken apart the engine cover to verify the phase of the car (still raining)
But plug a spare coil i had laying around to the ms2 using a strobe light I confirm a stable ign advance. After more test I'll update again.

Code: Select all

    //initial sync
    if (!(synch & SYNC_SYNCED)) {
        if  ((!tooth_diff_this) || (!tooth_diff_last) || (!tooth_diff_last_1)) {
            return; // only sync when there's enough data
        }

        // when unsynced we wait until we see a missing tooth and then another one
        // and count the teeth in-between

        if (!(synch & SYNC_SEMI)) { // just starting
            temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
            if (tooth_diff_this > temp1) {
                tooth_no = 0;
                synch |= SYNC_SEMI; // started sync sequence
            }
            return;
        } else { // started sequence, check possible sync points
            tooth_no++;
            if (!(synch & SYNC_SEMI2)) { // just starting
                temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
                if (tooth_diff_this > temp1) {
                    if (tooth_no == 10) {
                        tooth_no = 0; // tooth 1
                        goto WHL_ROV3_OK;
                    } else {
                        ign_reset(); // try again 
                    }
                }
                return;
            }
        }
WHL_ROV3_OK:

	    synch &= ~SYNC_SEMI;
	    synch &= ~SYNC_SEMI2;
	    synch |= SYNC_SYNCED;

    } else {
        // recheck for sync
        if ((tooth_no == 11) || (tooth_no == 22) || (tooth_no == 32)) {  // (one less)
            temp1 = tooth_diff_last + (tooth_diff_last>>1); // 1.5*
            if (tooth_diff_this <= temp1) {
                outpc.syncreason = 50;
                ign_reset();
                return;
            }
            if (tooth_no == 32) {
                tooth_no = 0;
            }
        }
    }

    goto common_wheel;

Re: 6g75 decoder eclipse for ms3

Posted: Tue Oct 25, 2016 1:39 pm
by juansh2385
James will you be able to write and oficial decoder that includes the cam patter for ms3?

I can test them if you make the test codes. I am concentrating only on the crank patter for ms2 but I can also test ms3 code you have the time to work with me.

Juan.

Re: 6g75 decoder eclipse for ms3

Posted: Fri Oct 28, 2016 10:09 pm
by juansh2385
I found the tdc tooth and phase for cylinder 4 (and cylinder 1 360 degrees away)

tomorrow I will upload a photo of a composite log for cam and crank and will identify in the screen shot the tooth aligning at tdc.


For now I can say that if you look ant the crank signal we have 36-2-1-1 wheel using the 2 missing tooth to start the count down tdc is at tooth no 5 and if you see at the composite logger you'll notice that if you poll on teeth number 5 we can identify cylinder one from 4. At tdc of cylinder 4 the crank sensor aling with tooth no 5 and the cam is pull low, and at tdc piston 1 (tooth no 5) there is no tooth in the cam signal.

The mods that I did for ms2 are already tested (I got rpm sync and the spark advance of the car match the commanded with the ms2 )hopefully on Sunday I will start the car with ms2.

James any other information that you want me to upload?

Re: 6g75 decoder eclipse for ms3

Posted: Sat Oct 29, 2016 8:26 am
by juansh2385
crank wheel 6g75.png
Screen Shot 2016-10-29 at 10.34.43 AM.png

Re: 6g75 decoder eclipse for ms3

Posted: Sat Oct 29, 2016 11:08 am
by juansh2385
the mark teeth in combination with the ms2 wheel code should be enough information of the engine anything else please ask.

Im done with the modifications for ms2 but I waiting on you James to upload any test code you want to provide for ms3 before I return the car.

Juan

Re: 6g75 decoder eclipse for ms3

Posted: Tue Nov 01, 2016 9:10 am
by juansh2385
Lastest info. This engine is Mivec technology I scoop the signal and even though it is an on/off type of system like the vtec the solenoid activates at 4000 rpm. It is design to limit the current in the solenoid.


I mean the factory ecu activate the solenoid with a constant signal for 2 second after 2 second the signal becomes a square wave signal (pwm) to reduce the current. at 400 hz 60% duty.

I found on the internet also info that confirms what I saw with this engine.
Waveform_zps15c90f55mivec.jpg

Re: 6g75 decoder eclipse for ms3

Posted: Fri Nov 18, 2016 5:41 am
by juansh2385
Is there interest in developing this officially? I already finish the code mods (ms2) and Im going to return the car to the owner in a couples day.

I have the necessary ms3 hardware the time and interest to help make this official but i haven't receive any kind of respond (positive or negative).

Re: 6g75 decoder eclipse for ms3

Posted: Fri Nov 25, 2016 11:01 am
by juansh2385
Last update the car is already running with a ms2 i had to change again the initial sync code, while cranking the compression effect made difficult finding all the missing tooth with the above code so I simplified the code just to fine the biggest missing tooth.


If there is interest i can upload a pattern of the car cranking and write the official code accordingly.


Juan

Re: 6g75 decoder eclipse for ms3

Posted: Fri Dec 02, 2016 9:01 am
by juansh2385
Sensor.png
added a new picture for reference in the future.

Re: 6g75 decoder eclipse for ms3

Posted: Fri Dec 09, 2016 11:56 am
by juansh2385
I am finally happy with the sync code area, the last mods I did work cranking but if I burn changes with the car running it did not re-sync correctly.

James instead of looking for the missing tooth, my approach was to look for the first tooth after the missing tooth because it can be differentiated correctly with the engine running or cranking state. Later I am going to upload a crank tooth logger of the engine cranking so you can se why I did it this way.

Please take a look.

Latest mods for initial sync

Code: Select all

    //initial sync
    if (!(synch & SYNC_SYNCED)) {
        if  ((!tooth_diff_this) || (!tooth_diff_last) || (!tooth_diff_last_1)) {
            return; // only sync when there's enough data
        }

        // when unsynced we wait until we see the first tooth after missing tooth 
        // and then another one and count the teeth in-between
        // I use the tooth after the missing tooth because while cranking the compression effect 
        // cause the time between continuous tooth to be the same as the missing area. 
        if (!(synch & SYNC_SEMI)) { // just starting
            temp1 = tooth_diff_this<<1; // 2*
            if ( (tooth_diff_last > temp1) && (tooth_diff_last_1 < tooth_diff_last) ) {
                tooth_no = 0;
                synch |= SYNC_SEMI; // started sync sequence
            }
            return;
        } else { // started sequence, check possible sync points
            tooth_no++;
            if (!(synch & SYNC_SEMI2)) { // just starting
                temp1 = tooth_diff_this<<1; // 2*
                if ( (tooth_diff_last > temp1) && (tooth_diff_last_1 < tooth_diff_last) ) {
                    if (tooth_no == 10) {
                    tooth_no = 1; // tooth 1
                        goto WHL_ROV3_OK;
                    } else {
                        tooth_no = 0; // wrong missing  try again from this missing 
                    }
                }
                return;
            }
        }
WHL_ROV3_OK:
	    synch &= ~SYNC_SEMI;
	    synch &= ~SYNC_SEMI2;
	    synch |= SYNC_SYNCED;

    } else {
    // recheck for sync
    if (tooth_no == 32) {  // (one less)
        if ( tooth_diff_this > (tooth_diff_last << 1) ) {
            tooth_no = 0;
        } else {
            outpc.syncreason = 50;
            ign_reset();
        return;
        }
      }
    }

    goto common_wheel;


Re: 6g75 decoder eclipse for ms3

Posted: Fri Dec 09, 2016 12:56 pm
by juansh2385
Here you can see how the compression effects of the engine cranking masked the missing tooth areas.