Jump to content

Ghostchips

Members
  • Posts

    4869
  • Joined

  • Days Won

    5

Posts posted by Ghostchips

  1. If it's your midlife crisis, don't grow old wishing you'd done something less wild. 

    2 doors, fancy top if you like but i'm thinking....
    New monaro (Or euro, or new challenger ect) with 2 stroke modular engine from a truck.

    This is my advice & it may be horrifically misinformed or otherwise impractical..

    • Like 2
    • Haha 2
  2. Didn't see any oldschool.co.nz tent this year.

    Swapmeet was a bit light on goodies, unless you want random animal skulls and gemstones.  Someone got a good deal on a bigblock though, it wasn't me.
    Didn't find the crankshaft i wanted, but i bought some stickers.

    On 16/01/2020 at 18:14, SOHC said:

    Fuck I am over kumeu now, been going almost ever since it started but it has crapped out so bad 

    You didn't miss much this year.  Want some old style oil stickers?

    • Like 1
  3. 5 hours ago, yetchh said:

    Ok cheers, how do I fix this? Should the ecu run on its own separate relay? Where would I find these flywheel diodes in a 70's mazda? 

    I thought the flywheel diodes would be in the ECU itself?

    If not, i put a "schotcky diode" to short a relay, but only if the relay is hooked up backwards. Seems to flywheel ok for the most part.

  4. I'm told (and have experienced) eucalyptus oil removing labels and other sticky things so that might work for removing residue should you need to.
    Oh, and i wonder if holding a kettle next to the window would be a good test for steaming.

    • Like 1
  5. 29 minutes ago, SOHC said:

    Got an XR200 to fire up after 15 years sitting this afternoon and then got offered a BSA C11 and a C15 for $1000 for both, I dont want them but offered them to a friend and now he says he cannot sleep till he has them.

    great.... now i want one too.

    • Like 2
  6. On 28/11/2019 at 20:57, SOHC said:

    I gave you like 7 carburetors and you lost them all, did you find the brass ones?

    Yes i found enough pieces of bronze ones to make about 80% of one, then faked the rest with bits from the rustiest one i could find.
    Not sure why i spent about...50 hours on it?  It's a ...questionable? design, like, Victorian era "I just designed an engine that runs on gas & want to run it on liquid fuel & this is the best I have" design.  Not horrible, just weird.  They have a 'toilet lid' looking flapper in them and a bowl of gas, and tubes, and the flapper not only regulates how much air (yes air) gets sucked into the main jet but opens at speed as a kind of mixing valve?  And doubles as a backfire arrestor.
    Weird, logical enough, but horridly old fashioned.
     

     

    • Like 6
    • Thanks 1
  7. /* i have no idea how this works
     *  I gave up in frustration & just starting putting code anywhere, it works?  Umm ok.
     *  
     *  There should be a second scale to test out for diagnostics, it's hidden
     *  by the star slash symbos just like this text is, appers 'greyed out' in my uploader software
     *  (arduino IDE i think it's called?)
     *  Should be the same for you?
     */
     // constants won't change. Used here to set a pin number:
    const int coil1 = 3;
    const int coil2 = 5;
    const int coil3 = 7;
    const int coil4 = 9;

    const int sensorPin1 = A4;
    const int sensorPin2 = A1;
    const int sensorPin3 = A2;
    const int sensorPin4 = A3;

    int sensorValue = 0;
    int starterDelay = 10000;
    int sensorThreshold = 200;
    int sensorMax = 0;

    // Variables will change:
    volatile int coilState = LOW;
    volatile int coilPin = LOW;

    volatile unsigned long startingDelayTimer = 0;
    volatile int startingDelay = false;
    volatile int sparkTriggerDelay = 0;               //added this to try & see if i can delay spark at low RPM.
    volatile unsigned long timestamp = 0;
    volatile unsigned long rpmCurrMicros= 170000;
    volatile unsigned long rpmOldMicros = 0;
    volatile int sensorTriggerState = false;         // current state of the button
    volatile int lastsensorTriggerState = true;     // previous state  of the button/sensor in this case.

    // Generally, you should use "unsigned long" for variables that hold time
    // The value will quickly become too large for an int to store

    const long dwell = 10;                // but this is how long the "points" are open, open longer reduces duty cycle of coils.
    const long coilCharge = 2;           // interval at which to charge coil (milliseconds)

    void setup() {
      // put your setup code here, to run once:
      pinMode(coil1, OUTPUT);
      pinMode(coil2, OUTPUT);
      pinMode(coil3, OUTPUT);
      pinMode(coil4, OUTPUT);
      pinMode(A4, INPUT_PULLUP);
      pinMode(A1, INPUT_PULLUP);
      pinMode(A2, INPUT_PULLUP);
      pinMode(A3, INPUT_PULLUP);
      Serial.begin(115200);
    }

    void activateCoilsIfLow(uint8_t inPin, uint8_t outPin)
    {
       if (analogRead(inPin) <= sensorThreshold)
       {
        sensorTriggerState = true;
        if (lastsensorTriggerState = false)
        {
          lastsensorTriggerState = true;
        }
        else if (lastsensorTriggerState = sensorTriggerState)   //this isn't working with one equal sign.  I'm so lost.
         {
          delayMicroseconds(sparkTriggerDelay);
          coilState = HIGH;
          coilPin = HIGH;
          digitalWrite(outPin, HIGH);
        
          timestamp = millis();
                                              
          while (coilState == HIGH && coilPin == HIGH && (timestamp + coilCharge) > millis());  //Busy wait
       
          digitalWrite(outPin, LOW);
          coilPin = LOW;
          timestamp = millis();

          while (coilState == HIGH && coilPin == LOW && (timestamp + dwell) > millis());
     
          coilState = LOW;
          coilPin = LOW;
        }
      }
      if (analogRead(inPin) >= sensorThreshold)
      {
        sensorTriggerState = false;
        if (sensorTriggerState != lastsensorTriggerState)
        {
          rpmOldMicros = rpmCurrMicros;
          rpmCurrMicros = micros();
                
          if (millis() >= (startingDelayTimer + 10000))
          {
            if ((rpmCurrMicros - rpmOldMicros <=  169491))         //over approx' 177RPM
            {
               startingDelay = true;                               //no longer hold timing advance-retard at full advance, hope you moved the timing lever by now.
            }
            if ((rpmCurrMicros - rpmOldMicros >= 497512))
            {
              startingDelay = false;                               //chances are you have to re-start the engine now. it'll take 10 seconds or more at over 200RPM to act normal again.
              startingDelayTimer = millis();
            }
          }
          if (startingDelay == true)
          {
            rpmConsultRatioTable();
            lastsensorTriggerState = false;
          }
          else
          {
           Serial.print ( " Starter delay period not ended " );
           lastsensorTriggerState = false;
          }
        }
      }
      lastsensorTriggerState = false;           //Why do i need to make that 'false' so many times to avoid it doing weird things?
    }


    void loop() {
      activateCoilsIfLow(sensorPin1, coil1);
      activateCoilsIfLow(sensorPin3, coil3);
      activateCoilsIfLow(sensorPin2, coil4);
      activateCoilsIfLow(sensorPin4, coil2);
    }


    void rpmConsultRatioTable()
    {
      if (rpmCurrMicros - rpmOldMicros >= 497512) //sub250rpm
        {
          sparkTriggerDelay =0;
          startingDelay = false;
          startingDelayTimer = millis();
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 255024) && (rpmCurrMicros - rpmOldMicros >= 169491)) //125rpm
        {
          sparkTriggerDelay =81000;                     //was 57, then 59 and i don't know what overflow is but i get an error for it here.
          Serial.print ( " RPM 125" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 169491) && (rpmCurrMicros - rpmOldMicros >= 127512)) //177rpm
        {
          sparkTriggerDelay =61000;
          Serial.print ( " RPM 177" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 127512) && (rpmCurrMicros - rpmOldMicros >= 85008)) //250rpm
        {
          sparkTriggerDelay =41000;                    //was 27  //at 250 RPM and 45 degree sensor advance, this would be 30ms to TDC, subtract 2ms for coil charging and subtract more m.s. for advance
          Serial.print ( " RPM 250" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 85008) && (rpmCurrMicros - rpmOldMicros >= 61000)) //375rpm
        {
          sparkTriggerDelay =31000;                 //was 16
          Serial.print ( " RPM 375 " );
          }
      else if ((rpmCurrMicros - rpmOldMicros <= 61000) && (rpmCurrMicros - rpmOldMicros >= 48000)) //500rpm
        {
          sparkTriggerDelay =23000;                 //was 11
          Serial.print ( " RPM 500 " );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 48000) && (rpmCurrMicros - rpmOldMicros >= 41000))  //625rpm
        {
          sparkTriggerDelay =7000;
          Serial.print ( " RPM 625 " );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 41000) && (rpmCurrMicros - rpmOldMicros >= 30000)) //750rpm
        {
          sparkTriggerDelay =1670;
          Serial.print ( " RPM 750" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 30000) && (rpmCurrMicros - rpmOldMicros >= 25000)) //1000rpm
        {
          sparkTriggerDelay =1670;
          Serial.print ( " RPM 1000 " );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 25000) && (rpmCurrMicros - rpmOldMicros >= 23076)) //1200rpm
        {
          sparkTriggerDelay =125;
          Serial.print ( "RPM 1200 " );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 23076) && (rpmCurrMicros - rpmOldMicros >= 22222)) //just under 1300rpm
        {
          sparkTriggerDelay =20;
          Serial.print ( " RPM 1300 " );
        }
      else if (rpmCurrMicros - rpmOldMicros <= 22222)//just over 1300rpm
        {
          sparkTriggerDelay =0;
          Serial.print ( "RPM over 1300" );
        }
    }

    /*
    void rpmConsultRatioTable()  //Very Retarded, for diagnostic purposes
    {
      if (rpmCurrMicros - rpmOldMicros >= 497512) //sub250rpm
        {
          sparkTriggerDelay =0;
          startingDelay = false;
          startingDelayTimer = millis();
          Serial.print ( "RPM Zero" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 255024) && (rpmCurrMicros - rpmOldMicros >= 169491)) //125rpm
        {
          sparkTriggerDelay =162000;                     //was 57, then 59
          Serial.print ( "RPM 125" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 169491) && (rpmCurrMicros - rpmOldMicros >= 127512)) //177rpm
        {
          sparkTriggerDelay =78000;
          Serial.print ( "RPM 177" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 127512) && (rpmCurrMicros - rpmOldMicros >= 85008)) //250rpm
        {
          sparkTriggerDelay =64000;                    //was 27  //at 250 RPM and 45 degree sensor advance, this would be 30ms to TDC, subtract 2ms for coil charging and subtract more m.s. for advance
          Serial.print ( "RPM 250" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 85008) && (rpmCurrMicros - rpmOldMicros >= 61000)) //375rpm
        {
          sparkTriggerDelay =32000;                 //was 16
          Serial.print ( "RPM 375" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 61000) && (rpmCurrMicros - rpmOldMicros >= 48000)) //500rpm
        {
          sparkTriggerDelay =26000;                 //was 11
          Serial.print ( "RPM 500" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 48000) && (rpmCurrMicros - rpmOldMicros >= 41000))  //625rpm
        {
          sparkTriggerDelay =14000;
          Serial.print ( "RPM 652" );
        }
      else if ((rpmCurrMicros - rpmOldMicros <= 41000) && (rpmCurrMicros - rpmOldMicros >= 31500)) //750rpm
        {
          sparkTriggerDelay =2670;
          Serial.print ( "RPM 750" );
        }
      else if (rpmCurrMicros - rpmOldMicros <= 31500) //just under 1000rpm
        {
          sparkTriggerDelay =0;
          Serial.print ( "RPM 1000" );
        }
    }*/

     

    • Like 6
    • Thanks 2
    • Haha 1
    • Confused 2
  8. Forget that one, the new tune is better.  That one sounded like a series of tiny gearshifts, kind of like an early fast&furious movie.

    477826078_exhaustgassensor.thumb.JPG.6ca629cd683ee2a3c2d1b32007f28f71.JPG

    Eww why is there a digital thing on my dash?  Oh, if i look closer it's an exhaust temp' sensor.  But the gauge seems to have suffered damage from a 25 volt alternating current charging system.  But it worked for a month so i guess i got enough data...

    • Like 2
    • Thanks 1
×
×
  • Create New...