6g75 decoder eclipse for ms3

Testing and development of Megasquirt 3

Moderators: jsmcortina, muythaibxr

juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

6g75 decoder eclipse for ms3

Post 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.
Last edited by juansh2385 on Sun Dec 11, 2016 7:34 pm, edited 1 time in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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;
        }
Last edited by juansh2385 on Sat Oct 29, 2016 10:46 am, edited 2 times in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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;
Last edited by juansh2385 on Sat Oct 29, 2016 10:48 am, edited 5 times in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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)
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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)
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post by juansh2385 »

Screen Shot 2016-10-24 at 9.35.30 AM.png
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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?
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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.
Last edited by juansh2385 on Thu Oct 27, 2016 6:21 pm, edited 1 time in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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;
Last edited by juansh2385 on Tue Oct 25, 2016 1:41 pm, edited 1 time in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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?
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post by juansh2385 »

crank wheel 6g75.png
Screen Shot 2016-10-29 at 10.34.43 AM.png
Last edited by juansh2385 on Fri Dec 02, 2016 8:59 am, edited 4 times in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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).
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post by juansh2385 »

Sensor.png
added a new picture for reference in the future.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post 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;

Last edited by juansh2385 on Sun Dec 11, 2016 7:37 pm, edited 2 times in total.
juansh2385
Master MS/Extra'er
Posts: 612
Joined: Fri Feb 25, 2011 4:28 pm

Re: 6g75 decoder eclipse for ms3

Post by juansh2385 »

Here you can see how the compression effects of the engine cranking masked the missing tooth areas.
Post Reply