Bringing TBI and Multi Port Fuel Injection to a New Level.     EFI Conversions and Tuning! Seattle to Portland! E-mail Tuning Consultant!
Page 10 of 15 FirstFirst ... 56789101112131415 LastLast
Results 136 to 150 of 211

Thread: DIY LTCC or similar system for LT1s

  1. #136
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    So, Johnny, how's the northstar ignition module working for you? I still need to learn how to write a program to generate crank signals from the array I made. I was hoping you knew how, since I have over extended myself on solving multiple problems.
    In case everything fails, I have a toothed northstar wheel designed in a DXF file that should bolt up to the harmonic balancer. I am working on the dual crank sensor bracket. This was inspired by the Indmar LT-1 ignition system installed in the Mastercraft boats. The waterjet cutter service would cost me about $80-$100 for one wheel. Less if I have more made, but I am still working it all out with no final design yet. The belt system goes on the left or right, depending on application. How inconvenient.

  2. #137
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    I revisited the thread tonight to catch up, and finally read the link in the second post pointing to chevythunder. I couldn't help but stumble several times on the description of the degree wheel.

    Quote Originally Posted by (chevythunder page)
    and since the camshaft rotates once per two revolution of the crankshaft, it is in reality seeing 720 pulses.
    Uh, no. Your math is bass ackward. It is true that the camshaft rotates once per two crank revolutions, but if the outer wheel has 360 slots it's only seeing 360 / 2 = 180 per crank revolution. Let's not get caught up on rising and falling edge signals here, but looking past one's interpretation of "pulses" it's getting 360 signals per crank revolution or 720 signals per cam revolution, max.

    Quote Originally Posted by (chevythunder page)
    Like the outer ring, the ecm "sees" 16 pulses for each revolution of the camshaft
    This statement is only correct if you consider "pulses" as both rising and falling edge, but why would we be thinking in terms of camshaft revolutions? As a person who's on the Asperger's spectrum, this drives me batty.

    Unless vilefly beats me to it, I'm thinking my game plan for winter is giving the arduino a shot with the assumption of driving ls1 coil modules with 5v ttl signaling. I think this can be done without looking at the high resolution signal by keeping memory of the current position and calculating rotational speed based on the smaller of the lower resolution signals which the aforementioned page says are signaling 1,4,6 and 7. Another presumption I think can be relied on is where the crank comes to rest at engine shutdown. I've learned from talking to some white haired gentlemen who've seen their share of missing flywheel teeth that chevy v8s tend to come to rest in only about four different spots. In a case of the crank being jogged by a mechanic, if we assume the ECM follows the same logic, worst case the uC will miss the first or second cylinder firing after a power loss but so will the ECM with injection sequencing.

    Am I making any grotesque oversights?
    Last edited by spfautsch; 4 Weeks Ago at 08:51 PM.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  3. #138
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    nope, didn't miss a thing. It sounds like a game plan to me. I did wonder why they only synched using cylinders 1,4,6,7, but I think you may have answered that question. Resting position.
    The TTL drive sounds like a winner to me, providing a current limiting transistor is used between the two, just in case. 15-20mA sounds safe to me.
    I've been buying some Arduino Pro Mini controllers on ebay at about $5 each to tinker with. The very flexible compiler will let me use the same code on a different controller. Kinda nice, when building expendable projects where risk is high. Made some animated 8x8 led matrix eyes for my kid's halloween costume. Taught me a lot. Still, I borrowed heavily from the example code, but I am hooked.
    The Pro Mini is the size of a medium postage stamp, and it just might be able to pull this trick off. Much more powerful than I expected.

  4. #139
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    I'm thinking a simple class d bjt amp powered by the ECM's coil trigger output for each coil. Or FETs if you want to get fancy (possibly higher parts count)? There are also some widely available stepper motor driver DIP ICs that may fit the bill.

    My thinking is the uC employs a watchdog timer that triggers relearn. So we haven't seen an input change in a while, watchdog timer fires and says assume the engine isn't running anymore so set a bit in memory and go to sleep (power consumption can be an issue with the arduinos).

    Let's assume that the stopping position is 20-30 degrees shy of tdc of a compression stroke. We're either going to be near 1, 4, 6, 7, or 8, 3, 5, 2. Let's also make a huge leap that this is not in a light gap in the wheel (logic low to the uC).

    So the user cranks the engine.

    The user engages the starter, and the uC picks up a rising edge interrupt that wakes it. We look at the "is it running" bit to see if we need to re-learn the position. We do, so we start counting microseconds until the next falling edge.

    The falling edge signal happens and we store the microseconds in variable a.

    Now we wait for the next rising edge signal. <thumbs twiddling>

    Rising edge signal clicks. Now we count microseconds again until the next falling edge signal.

    Falling edge signal happens. Store microseconds in variable b. Compare a to b.

    Code:
    if ( a > b ) {
      c = a / b;
      [ some code I haven't thought through completely]
      x = (next firing cylinder);
    } else {
      c = b / a;
      [ some code I haven't thought through completely]
      x = (next firing cylinder);
    }
    Once the running bit is set the uC sequences ignition from memory based on the rising edge.

    So you say what if the engine is parked in a light gap, and the first signal we see is a falling edge. Simple - set another bit that inverts the sequence detection logic [that I haven't thought out completely].

    Easy peezy. I'll think about fleshing out the code on my drive to work tomorrow. There will need to be some fuzzy math allowing for variance in angular velocity during cranking. That's why they made the big gaps larger by multiples of 5.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  5. #140
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    After working this out mentally and doing some additional research on Arduino interrupt handling I've learned that accessing time functions inside an ISR appears to be a bit of a tangled subject. This would make it quite a bit "hairier" to detect sequence with only the low-res signal.

    This got me wondering how the ECM behaves. If no-one knows I'll confirm myself when I have a chance, but I'm wondering if it will start after:

    1) disconnecting the high-res signal
    2) removing power from the ECM to clear learned cam position

    I know it will start and run without the high res signal, but it was more than a few years back when I worked on replacing my opti sensor and I don't know if I ever disconnected the battery throughout that process. I don't believe I did.

    If the ECM is improperly sequencing the injectors I would presume the engine may run, but poorly. If, on the other hand the ECM simply won't detect cam position or fire the injectors without the high res signal that simplifies things immensely. Detecting the position becomes considerably simpler and faster if we need only count high res pulses to determine a trigger slot's opening size.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  6. #141
    Fuel Injected! Terminal_Crazy's Avatar
    Join Date
    Oct 2015
    Location
    Lancashire England
    Posts
    151
    Quote Originally Posted by spfautsch View Post
    After working this out mentally and doing some additional research on Arduino interrupt handling I've learned that accessing time functions inside an ISR appears to be a bit of a tangled subject. This would make it quite a bit "hairier" to detect sequence with only the low-res signal.

    This got me wondering how the ECM behaves. If no-one knows I'll confirm myself when I have a chance, but I'm wondering if it will start after:

    1) disconnecting the high-res signal
    2) removing power from the ECM to clear learned cam position

    I know it will start and run without the high res signal, but it was more than a few years back when I worked on replacing my opti sensor and I don't know if I ever disconnected the battery throughout that process. I don't believe I did.

    If the ECM is improperly sequencing the injectors I would presume the engine may run, but poorly. If, on the other hand the ECM simply won't detect cam position or fire the injectors without the high res signal that simplifies things immensely. Detecting the position becomes considerably simpler and faster if we need only count high res pulses to determine a trigger slot's opening size.

    1: Don't know
    2: It always runs after you pull PCM fuses?

    Can't you watch / count pulses whilst the motor cranks over untill you know the cam/crank position then start firing the injectors.
    Presumably monitoring/counting the pulses is only watching we're synchronised with the motor.
    Timing time between events so we can measure RPM and time spark & injector firing.

    Mitch
    '95 Z28 M6 -Just the odd mod.
    '80 350 A3 C3 Corvette - recent addition.

  7. #142
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    1) it will start, but in simultaneous double-fire mode (1x inject per revolution). Since it has a distributor, all it need to do is fire the coil on the leading edge. The IAC will have to open up to compensate for 0 degrees TDC timing, so it may start and die unless the throttle is held open a little and set down slowly.
    I might have to disable the hi-res signal and break out the timing light to confirm if it really is 0 deg base timing.

    2) I don't believe there is a memorized cam position, but a programmed one might exist, but not applicable in this fail-safe mode of operation.

    Hope my waveform posts on page 8 were helpful.

  8. #143
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    Quote Originally Posted by vilefly View Post
    Hope my waveform posts on page 8 were helpful.
    There was definitely some useful information in page 8 and 9 that I missed. Re-reading...

    Quote Originally Posted by vilefly View Post
    1) it will start, but in simultaneous double-fire mode (1x inject per revolution). Since it has a distributor, all it need to do is fire the coil on the leading edge. The IAC will have to open up to compensate for 0 degrees TDC timing, so it may start and die unless the throttle is held open a little and set down slowly.
    I might have to disable the hi-res signal and break out the timing light to confirm if it really is 0 deg base timing.

    2) I don't believe there is a memorized cam position, but a programmed one might exist, but not applicable in this fail-safe mode of operation.
    Are you sure this is actually a fail-safe mode and not an unintended coincidence? I'd love to have confirmation that it will run like this - with batch fueling I can't imagine it would run very well.

    The batch fire / double fire explains some of difficulties I had with the startup afr tables after an injector swap.

    In consideration of your timing light experiment, do you have a keyed balancer hub? It's one of the items I need to put on my winter to-do list.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  9. #144
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    This is a very helpful piece of information I overlooked.

    Quote Originally Posted by kur4o View Post
    Another thing that bogs me down is the built in total advance of 46 degree.
    I got two theories. First is the the rotor tip is wide that much and is a mechanical limit.
    Second is the soft theory. The degrees between falling edge of the widest low res slot and the rising edge of the next low res slot is exactly 46 degrees, It could be coincidence, but as we know in the code PCM counts high res slot between falling edge and rising edge of low res signal and determines current firing cyl ID.
    So we know this? Cool.

    Quote Originally Posted by kur4o View Post
    What is strange there is built in +-2 degree error built in the code. The cyl ID on first cyl can vary between 44 and 48 degree. If it is outside this range high res failure code is triggered.
    I would venture a guess that this is because the sequenced slots differ in 5 degree steps (plus 2 degree base), and that more than 4 degrees of error would prevent the code from determining cyl ID.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  10. #145
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    Quote Originally Posted by spfautsch View Post
    There was definitely some useful information in page 8 and 9 that I missed. Re-reading...



    Are you sure this is actually a fail-safe mode and not an unintended coincidence? I'd love to have confirmation that it will run like this - with batch fueling I can't imagine it would run very well.

    The batch fire / double fire explains some of difficulties I had with the startup afr tables after an injector swap.

    In consideration of your timing light experiment, do you have a keyed balancer hub? It's one of the items I need to put on my winter to-do list.
    GM always used simultaneous double-fire (all injectors per 1x rev) when starting on prior years, but to blast the shadow of doubt into oblivion, I will see about getting a waveform to prove it. We are crazy-busy at work, so it may take some time to get. My other injector waveform proves the cranking strategy, though.
    My harmonic balancer is marked at 0 deg, as I was testing fitment of my northstar crankwheel project. I will probably use the hi-res waveform to prove exact timing.

  11. #146
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    Ok. More codebreaking done. I used the previously posted northstar crankwheel data array to make a
    ignition module "stimulator" program to be compiled by Arduino IDE. I haven't had time to test it on an ignition module yet.
    Pins 2 and 3 will be the crank sensor outputs. 2= "A" and 3= "B" crank sensors.
    4,5,6,7 are the coil selector outputs/indicators.
    All outputs have been tested as best as possible w/o a module.
    Remember to put a small value ceramic or polyester capacitor between the Arduino outputs and the Ignition module crank sensor inputs to simulate an ac voltage signal so that the zero-crossing detector in the Module will work.
    Code:
    int nstar[] = {1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0};
      // there are 0-95 elements, position 0 = 1st pulse from crank sensor A
      // crank sensor B = lags behind A by 7 positions
      // position 2 = cyl 1-4 TDC
      // position 18 = cam sensor pulse
      // position 26 = cyl 2-5 TDC
      // position 50 = cyl 7-6 TDC
      // position 74 = cyl 3-8 TDC
      // approx 3.857* per position
    int crank1 = 2;  //pin2 = cranksensor 1
    int crank2 = 3;  //pin3 = cranksensor 2
    int coil = 4;
    int x = 0;
    int y = 0;
    void setup() {
      Serial.begin(9600);
    pinMode(crank1,OUTPUT);
    pinMode(crank2,OUTPUT);
    pinMode(4,OUTPUT);  //coil 1
    pinMode(5,OUTPUT);  //coil 2
    pinMode(6,OUTPUT);  //coil 3
    pinMode(7,OUTPUT);  //coil 4
    pinMode(LED_BUILTIN,OUTPUT); //enable the built-in led
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
        for (int x = 0; x < 96 ; x = x + 1) {
          Serial.print(x);
          Serial.print(" ");
        if (x==2) {digitalWrite(5,HIGH); digitalWrite(7,LOW);};  //coil 2 enable   coil 1 disable
        if (x==26) {digitalWrite(6,HIGH); digitalWrite(4,LOW);}; //coil 3 enable   coil 2 disable
        if (x==50) {digitalWrite(7,HIGH); digitalWrite(5,LOW);}; //coil 4 enable   coil 3 disable
        if (x==74) {digitalWrite(4,HIGH); digitalWrite(6,LOW);}; //coil 1 enable   coil 4 disable
        if (nstar[x]==1) {digitalWrite(crank1,HIGH);
        delay(3);
        digitalWrite(crank1,LOW);}
        else {digitalWrite (crank1,LOW);}
           y = x+7; 
        if (y>=96) {y=y-96;}
        if (nstar[y]==1) {digitalWrite(crank2,HIGH);
        delay(3);
        digitalWrite(crank2,LOW);}
        else {digitalWrite(crank2,LOW);}
       // digitalWrite(LED_BUILTIN,HIGH);
      //delay (3);
      //digitalWrite(LED_BUILTIN,LOW);
      }
    Serial.println("");  
    }
    Last edited by vilefly; 3 Weeks Ago at 06:13 PM.

  12. #147
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    I performed a few tests tonight, and think I've been laboring under flawed assumptions.

    I wasn't able to determine pins readily at the opti pigtail connector, and though my 22 year old harness is a bit discolored I wasn't seeing anything similar to blue so I just determined the pins by trial and error. With a DMM I found ground and +12v with key on. The other two pins went to +5v which I made the assumption were the ECM's opti inputs. I removed the male connector end from the pigtail side of the connector.

    The first one I disconnected appeared to be the low res pin, because it cranked but nothing was happening - no RPM change in the ALDL, and it immediately set DTC16.

    I cleared the DTC, reconnected low res and disconnected high res. This time i was seeing RPM changes in the ALDL data, but no codes, no fire, nothing.

    I would love for someone to confirm or disprove. I wonder if the presumption that the engine would fire without high res signal came from the pre-94 LT1s that were batch fired and didn't need to sequence anything. In the case of my having witnessed it start with the high res code, it would have to have been a case where the high res phototransistor was working well enough during cranking for the ECM to determine sequence. As I think I mentioned, mine would only re-set the code when the engine got to temperature.

    What I'd like to find out is what happens when the high res signal is removed while the engine is running, but I don't currently have the connectors to allow this without cutting wires I don't want cut.

    At any rate, I'm going to labor under the assumption that we need high res to determine sequence. I hope to post a sketch soon.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

  13. #148
    Fuel Injected! vilefly's Avatar
    Join Date
    Sep 2017
    Age
    47
    Posts
    73
    Does yours have a front crank sensor on it or not? I imagine if it did, it would still start with the hi-res disconnected.
    Here's a tool kit that everyone should have.....
    https://www.toolsource.com/terminal-...t-p-54385.html
    the thexton #392 micro/metric pack jumper wire set.

  14. #149
    Fuel Injected!
    Join Date
    Mar 2013
    Posts
    316
    Quote Originally Posted by spfautsch View Post
    I performed a few tests tonight, and think I've been laboring under flawed assumptions.

    I wasn't able to determine pins readily at the opti pigtail connector, and though my 22 year old harness is a bit discolored I wasn't seeing anything similar to blue so I just determined the pins by trial and error. With a DMM I found ground and +12v with key on. The other two pins went to +5v which I made the assumption were the ECM's opti inputs. I removed the male connector end from the pigtail side of the connector.

    The first one I disconnected appeared to be the low res pin, because it cranked but nothing was happening - no RPM change in the ALDL, and it immediately set DTC16.

    I cleared the DTC, reconnected low res and disconnected high res. This time i was seeing RPM changes in the ALDL data, but no codes, no fire, nothing.

    I would love for someone to confirm or disprove. I wonder if the presumption that the engine would fire without high res signal came from the pre-94 LT1s that were batch fired and didn't need to sequence anything. In the case of my having witnessed it start with the high res code, it would have to have been a case where the high res phototransistor was working well enough during cranking for the ECM to determine sequence. As I think I mentioned, mine would only re-set the code when the engine got to temperature.

    What I'd like to find out is what happens when the high res signal is removed while the engine is running, but I don't currently have the connectors to allow this without cutting wires I don't want cut.

    At any rate, I'm going to labor under the assumption that we need high res to determine sequence. I hope to post a sketch soon.

    That`s happening because when high res dtc is set eside processor is trapped at infinite do nothing loop.
    If you unset high res dtc bit at 12029 bit $10, you may try again runnig with high res disconnected.
    I am pretty sure it will at least fire up and all the calculations will be time based on the low res signal. It will work just like the older distributor system with coil pick up signal. Of course spark scatter will be higher and timing will be not very accurate and we will lose the great starting time of less than a second.

  15. #150
    Fuel Injected! spfautsch's Avatar
    Join Date
    Apr 2015
    Posts
    135
    No that was only on OBD-2 cars.
    '95 C4 LT-1 ZF-6, Polo Green
    Comp 467 / XFI 280, UltraProMag RRs, LE1 Heads, Lunati 73925 Springs

    Somebody stole the spark plugs out of my other car, yet it still runs???

Similar Threads

  1. Which TBI system is better?
    By KeyAir in forum GM EFI Systems
    Replies: 39
    Last Post: 01-13-2016, 12:18 PM
  2. Hard start 93 LT1 with LTCC Ignition Mod
    By beestoys in forum GM EFI Systems
    Replies: 0
    Last Post: 05-17-2015, 10:58 PM
  3. ABS system?
    By K1500ss4x4 in forum Gear Heads
    Replies: 3
    Last Post: 02-05-2014, 08:21 PM
  4. Vortec EGR System?
    By EagleMark in forum OBDII Tuning
    Replies: 40
    Last Post: 06-02-2013, 12:07 PM
  5. Quicker way to do Spark Hook test on the street for LT1s and others?
    By sherlock9c1 in forum Fuel Injection Writeups Articles and How to New and Old
    Replies: 15
    Last Post: 03-02-2013, 03:52 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •