Thursday 25 July 2013

Splitter

So, for a while I have been wondering about the lift that I get from the front of the car at speed.  Basically the front gets a bit light and the steering less firm.
This was confirmed when the new buyers of the Phoenix project took their demonstrator to MIRA (http://www.jpsc-online.co.uk/viewtopic.php?f=4&t=594&hilit=mira#p3721 ).  To cut a long story short they found lift above 50mph.
Additionally all the race Phoenii run with some kind of splitter/air dam at the front which is found to be beneficial.

One of my reasons for altering the bonnet hinge mechanism was to allow some space for an air dam.  The problem before was that an air dam would prevent the bonnet opening as the way it pivots was not ideal.  The bonnet used to hit the ground far too easily even without any additions.

Finally, after changing the pivot I had to remove a section of the underside of the bonnet return, this was probably spilling air out the bottom that should have been going through the intercooler.

So, given all of that I decided that a splitter was in my future.  I already have a complete flat bottom [years of training and careful eating ;-) ].  So according to the words I have read on aerodynamics a splitter/dam will negate the lift, and maybe buy me some downforce.

Construction was from 9mm plywood, with a steel frame.  All painted satin black.  The front edge is rounded and the angle is slightly up from horizontal (higher at the front).  The lower edge of the splitter it 18mm below the flat floor and the gaps between the splitter and the region where the bonnet angles up (around the front wheels) have been filled.  The total width of the splitter is 1220mm (standard dimensions for plywood, an extra 150mm might have helped, but this might be just a prototype).  There have been some interesting recent articles on splitters in the FREE "track driver magazine" (http://www.trackdriver.com/ezine_subscription.php) and I have attempted (in general terms) to take on this guidance.

Anyway here are some pictures.


The raised section at the rear (right hand side in this picture) sits under the existing flat floor.  The cut-out (fairly central) is for the tow loop.




My sons (Top Gear experts) think it looks good, so that is positive.  Personally I am a bit worried that its a bit Max Power, but I'm prepared to see whether it grows on me.
Went for a test drive along our road, which has massive speed cushions.  These are the full 100mm (100mm is the legal maximum) and only across the middle of each lane.  I taped on bits of cardboard under the splitter.  On my return only bits of cardboard less than 15mm remained!

My test drive did seem to indicate that the front end is a bit more planted.  I say this based on feel alone, and to be honest I have found cars to drive way better after washing them or giving them a vacuum, so I don't think my assessment means much.

Anyway its been a nice little project and it seems to work.  The only problem that I ran into came from the known asymmetry of the phoenix body (they are all like that sir) which resulted in the front right rubbing against the vertical section.  I attacked it with and angle grinder (abrasive flappy wheel thing) and re-painted, need to check again tomorrow to see if that has sorted it.

Sunday 16 June 2013

Phoenix bonnet frame,

Okay a long overdue post
Anyway I will try to provide a summary of how I got to here, but now its fresh in my mind let me update on my new bonnet frame.

The standard Phoenix bonnet frame is a strange beast.  It sticks out in front of the radiator and pivots the bonnet about the back of the bottom.  The consequence of this is that the bottom lip of the bonnet crashes into the ground if you open it too far!  Bit strange as a design.

A couple of alternative methods have been proposed.   One is to use BMW boot hinges which use a clever double hinge system that makes for clever boot opening on that car, I got some photos from someone who had replicated that approach.   I bought some hinges (£8 e-bay) but it isn't easy to work out where to position the hinges.
Plan B is to use the Rob Farley approach which is to retain a single pivot point, but to move it further forward.

Here are some photos (note this represents nearly a weekends worth of effort!).

I needed to trim just over 2 inch off the back underside of the bonnet and a little more adjacent to the hinges.
The opening strut needed a little work as it needed extending, the headlight cable needed fettling, and the horn needed moving, but all in all a very successful project which will make future maintenance much easier and quicker.











The tubing was box section 20mm x 30mm for the main diagonals supported but a 20x20 brace from below.  The bar between the to end sections if a 20x20mm strut that also supports the intercooler.

Two thick walled tubes are used with 1/2inch i.d. that take the pivot rod.  1/2inch is massively over engineered, but it is what I had and the stainless rod is nice.  The pivot on the bonnet uses brass strip (approx 20mm x 5mm) which takes a M8 tap nicely, and should pivot well with stainless and not corrode.  R-clips are used to secure the stainless rod on one end and the 90deg bend prevents it pulling through.



Friday 22 June 2012

Gentle run out to check boost

RPM increase at 6-8k was due to a spot of wheel spin.  Boost seems to come in quite nicely.  Note the throttle isn't that wide open (60%) so more to come.

Some ignition triggering problems, but all seems to be working as expected.  Boost leaks fixed (JB weld had been blown out of the holes that need blocking in the TB's.

Thursday 10 May 2012

Is a gsf1250 compatible with a gsxr1100wp?

The question has come up of whether the gsf1250 engine shares components with the gsxr1100wp engine.

Here are some photos. To summarise, the bore spacing is the same and 10 out of 12 headbolts line up, but 2 don't and the barrels are not as tall.

Here are some photos.


Turbo porting, fast and furious

So, I had a problem with my turbo overboosting. Basically this means that even with the wastegate wide open the boost still builds so it is out of control.

This is not a good thing, because too much boost can result in engine damage.

I had temporarily addressed this by installing a exhaust dB killer (a device that reduces the noise a bit by constricting the exhaust at the outlet). This results in slightly higher pressure in the exhaust and it is the pressure difference between the two different sides of the exhaust turbine that provides the drive to the turbo.

Anyway, that was a short-term solution and did work, but it isn't ideal. The whole point of turbos is to get lots of boost and lots of boost when you want it. Decreasing the efficiency of the turbo would (in theory anyway) make boost come in later and generally make things more laggy.

So, I hit the internet and discovered that I needed to make the wastegate more efficient. This is done not by changing the wastegate, but buy making it easier for the gases to whip through the hole. As expected the casting was crude, so my die-grinder, a carbide bit and 20minutes was all that was needed to open up the flow paths so as to allow the gas flow to more easily get through the wastegate (when it is open).

Here are a couple of photos, post port (none before, sorry).


New battery

I got bored of my car not starting so bought a new battery.
This didn't help at all (bit annoying that), but the battery is bigger and seems to make the engine run smoother.  Specifically the voltage is more stable which previously impacted the injection times quite a lot.

The other issue was that turning the lights (HID ones) previously would stop the engine (due to voltage drop) unless the RPM's were up, now the lights or fan have no effect on the engine.

All good stuff.

Battery is a PC680 (with metal jacket), and I have mounted in the passenger footwell, with remote connections in the engine bay.

If only it would stop raining.

2012 Starting again

So, where have I been??

Mostly I have been trying to sort out a garage.  Lots of clearing away shrubs and soil.  Rebuilding walls, planning the building and struggling with the council and their contrived rules.

It looks like the planning permission has gone through so hopefully I should be able to get a garage built before next winter.


Back to my car.
For the longest time I have had problems starting my engine. The issue was that the crank on my engine is lightened to the extreme, and so when cranking the compression effect slows and speeds the cranking rate.  The consequence of this is that the tooth spacings are not equal.  The effect of this when cranking is that the long tooth isn't detected reliably.

The algorithm (in ms2extra) requires the missing tooth (nominally 2x a normal tooth gap) to be 1.5x the tooth before it, and the tooth after the long tooth to be less than 3/4 of the length of the missing tooth.

This is too stringent, which is crap for me.

So, I changed the code slightly.

Now the long tooth has to be >1.5x the tooth before, but the teeth after only have to be 7/8 of the long tooth.  The big risk with this type of code is that if we sync on the wrong tooth then we could end up getting serious detonation and possible engine destruction.

To protect against this I have added additional checks, in this case the 3 teeth after the long tooth all have to be less than 7/8 of the long tooth.


Anyway, here is the code (mostly so I can find it when I next need it!)
ms2_extra_ign_in.c


    /************ missing tooth wheel & missing and 2nd trigger wheel mode *************/
SPKMODE4:
    if ((flash4.spk_config & 0xc) == 0x8) {
        goto SPKMODE4B;
    }
    /* this is the "find missing" step */
    // look for missing tooth (subtract last tooth time from this tooth
    // count taking overflow into account, and then multiply previous
    // tooth time by 1.5 and see


    if (firstsync_iter == 0) {
        /* Here we will look for missing */


        temp1 = tooth_diff_last + (tooth_diff_last >> 1);


        if (tooth_diff_this > temp1) {
            firstsync_iter = 1;
        }
        return;
    } else if (firstsync_iter == 1) {
        /* tooth after what we thought was missing, lets make sure this one is short
         * on the first sync, we miss tooth #1, but that's ok as long as we catch it next time
         * split this into 2 operations so compiler doesn't call subroutine
         */
        temp1 = (tooth_diff_last >> 1); /* 1/2 of last value */
        temp1 = temp1 >> 1; /* 1/4th of last value */
        temp1 = temp1 >> 1; /* 1/8th of last value MDR ADDED */


        //temp1 = tooth_diff_last - temp1; /* 3/4ths of last value */
        temp1 = tooth_diff_last - temp1; /* 7/8ths of last value MDR ADDED */


        if (tooth_diff_this >= temp1) {
            /* this wasn't really the missing tooth... */
            firstsync_iter = 0;
            return;
        }


        firstsync_iter = 2;
        /* flagbyte4 |= flagbyte4_found_miss; DONT THINK WE WANT THIS YET */
        set_count = 1;
    } else if (firstsync_iter == 2) {
/*Check the next tooth as well so as to be sure */
/* tooth after what we thought was missing, lets make sure this one is short
* on the first sync, we miss tooth #1, but that's ok as long as we catch it next time
* split this into 2 operations so compiler doesn't call subroutine
*/
temp1 = (tooth_diff_last_1 >> 1); /* 1/2 of last value */
temp1 = temp1 >> 1; /* 1/4th of last value */
temp1 = temp1 >> 1; /* 1/8th of last value MDR ADDED */


temp1 = tooth_diff_last_1 - temp1; /* 7/8ths of long tooth MDR ADDED */


if (tooth_diff_this >= temp1) {
   /* this wasn't really the missing tooth... */
   firstsync_iter = 0;
   return;
}


firstsync_iter = 3;
/* flagbyte4 |= flagbyte4_found_miss; */
        set_count = 2;  /* Guessed that this should be 2,  needs checking */
   } else if (firstsync_iter == 3) {
/*Check the next tooth as well so as to be sure */
/* tooth after what we thought was missing, lets make sure this one is short
    * on the first sync, we miss tooth #1, but that's ok as long as we catch it next time
* split this into 2 operations so compiler doesn't call subroutine
*/
temp1 = (tooth_diff_last_2 >> 1); /* 1/2 of last value */
temp1 = temp1 >> 1; /* 1/4th of last value */
temp1 = temp1 >> 1; /* 1/8th of last value MDR ADDED */


temp1 = tooth_diff_last_2 - temp1; /* 7/8ths of long tooth MDR ADDED */


if (tooth_diff_this >= temp1) {
  /* this wasn't really the missing tooth... */
  firstsync_iter = 0;
  return;
}


  firstsync_iter = 4;
  flagbyte4 |= flagbyte4_found_miss;
       set_count = 3;  /* Guessed that this should be 3,  needs checking */
    } else if (firstsync_iter == 4) {
        if (tooth_no == 0) { // this should not happen, so reset
            outpc.syncreason = 1;
            ign_reset();  // note that this sequence of setting reason, resetting ign and incrementing counter is
            return;
    }




            if ((tooth_no == last_tooth) ||
                (((flash4.spk_config & 0xc) == 0xc) && (tooth_no == mid_last_tooth))) {
                /* this means we should have the last tooth here, so check for missing */
                temp1 = tooth_diff_last + (tooth_diff_last >> 1); /* 1.5 * last tooth */


                if (tooth_diff_this <= temp1) {
               firstsync_iter = 0;
                    flagbyte4 &= ~flagbyte4_found_miss;
                    outpc.syncreason = 2;
                    ign_reset();
                    return;
                }


                flagbyte4 |= flagbyte4_found_miss;
                set_count = 0;
            }
        }


        if (tooth_no == 1) {
            /* check to make sure this tooth is < 3/4th's of last tooth*/
            temp1 = (tooth_diff_last >> 1);
            temp1 = temp1 >> 1;
            temp1 = temp1 >> 1; /* Make it 7/8th's not 3/4 MDR ADDED */
            temp1 = tooth_diff_last - temp1;
            if (tooth_diff_this >= temp1) {
                /* lost sync */
                firstsync_iter = 0;
                outpc.syncreason = 5;  /* First tooth failure labelled as 5 */
                ign_reset();
                return;
            }
        }


        if (tooth_no == 2) {
           /* check to make sure this tooth is < 3/4th's of last tooth */
           temp1 = (tooth_diff_last_1 >> 1);
           temp1 = temp1 >> 1;
           temp1 = temp1 >> 1; /* Make it 7/8th's not 3/4 MDR ADDED */
           temp1 = tooth_diff_last_1 - temp1;
           if (tooth_diff_this >= temp1) {
               /* lost sync */
               firstsync_iter = 0;
               outpc.syncreason = 6; /* Check this and label as 6 MDR ADDED */
               ign_reset();
               return;
           }
        }


        if (tooth_no == 3) {
           /* check to make sure this tooth is < 7/8th's of last tooth  */
           temp1 = (tooth_diff_last_2 >> 1);
           temp1 = temp1 >> 1;
           temp1 = temp1 >> 1; /* Make it 7/8th's not 3/4 MDR ADDED */
           temp1 = tooth_diff_last_2 - temp1;
           if (tooth_diff_this >= temp1) {
               /* lost sync */
               firstsync_iter = 0;
               outpc.syncreason = 7; /* Check this and label as 6 MDR ADDED */
               ign_reset();
               return;
           }
        }


    if (flagbyte4 & flagbyte4_found_miss) {


        flagbyte4 &= ~flagbyte4_found_miss;


// found the missing tooth
if ((flash4.spk_config & 0xc) == 0xc) {
   if (!(flagbyte1 & flagbyte1_trig2active) && !(synch & SYNC_SYNCED)) {
goto common_wheel;
   }
}


        synch |= SYNC_SYNCED;


        if (synch & SYNC_FIRST) {
            syncfirst();
        }


        outpc.status1 |= status1_syncok; /* have sync */


if ((flash4.spk_config & 0xc) != 0xc) {
   tooth_no = set_count;
} else {
   if (flagbyte1 & flagbyte1_trig2active) {
tooth_no = set_count;
flagbyte1 &= ~flagbyte1_trig2active;
   } else {
tooth_no += flash4.No_Miss_Teeth;
   }
}
    }
    goto common_wheel;
 
The great thing is that the engine now start "on the button", first time everytime.  I am very excited as it takes my car from being a liability to an actual car.