LLY Ficm

2004LB7

Super Moderator
Staff member
Dec 15, 2010
7,108
2,213
113
Norcal
Testing out some cobbled together injector drivers to test how much voltage spikes I'll have to deal with at various voltages, PW and frequency (RPM). Going through a lot of mosfets. Something about driving coils they do not like. It's weird because the FICM doesn't appear to have much in the way of flyback or snubber diodes or other inductive spikes protection. But I found the very common (but kinda old by today's standards) IRF540 does not last more then a few seconds driving the injectors. It's odd because the FICM uses one on the boost converter controlling an inductor.

I think they need to be really high avalanche rated mosfets to survive this environment. I ended up using the same ones the FICM uses and it seems to work as you'll see in the video. I'll have to look at the datasheet again and compare the ratings and see if I can see what makes them more suitable.

Anyways. Little video of the test where I have a fixed frequency and I vary the PW.
Source: https://youtu.be/EzksxVED8mI?si=DmNQ6H2eo6FZlXhe
 

2004LB7

Super Moderator
Staff member
Dec 15, 2010
7,108
2,213
113
Norcal
Anyone (Ken) suggest a good processor such as an AVR or ARM that would have enough pins, temperature requirements, memory, etc to use in the new FUCM board.

I need at least 26 GPIO or PIO pins and two for serial communication. Even better if those serial com pins can do CAN communication directly

8 pins for each injector control signal
8 pins for each injector command signal
2 pins for turn on/off each injector supply bank in case of errors/shorts
2 analog pins for current sensor input on each bank
1 pin for crank signal
2 pins for CAN/Serial communication
At least 5 more pins for configuration settings.

Additional programmable pins are welcome but not too many as I would want to keep it small and take up minimal space. Several additional pins for adding features or more functions down the road

125c minimum temperature tolerance

Preferably in the 32-TQFP package but 64-TQFP is workable too if we can't find a 32 with the right number of pins

Has to be able to run on 5 or 12 volts. None of the low 1.8v or 3.3v ones. Too difficult to get the rest of the circuits to work with less then 5 volts especially since the signals from the ECM are 5 or 12 volts

And no obscure or uncommon or difficult to find ones. Needs to be a simple off the shelf part so years down the road the chips are still available or there is equivalent replacements without having to completely redesign the board and program

It would have to have the memory and processing power to do the 90° timing delay, monitor the current sensor for both banks. Monitor the crank signal and possibly use it for error checking on the control signals. Invert the control signals for LB7 use. And maybe a few other easy tasks
 

DAVe3283

Heavy & Slow
Sep 3, 2009
3,729
297
83
Boise, ID, USA
If you use resistor nets you can combine a bunch of settings onto one ADC pin, saving some inputs. Or since settings don't change real-time, move them to a I²C expander chip which will take only a couple pins and let you read as many as you need.

Some of the settings can be detected at startup with a little bit of clever code. The LB7/LLY high-vs-low signaling level should be very easy to autodetect, since we know that at low RPM (e.g. 0 RPM when being powered on) only 0 to 1 injector at a time should be being fired. So look at the voltage level of all the command lines, and treat that as the "off" for the session, no setting needed.

I am personally a big fan of baking settings into the firmware, or using solder jumpers or soldered resistors if an end-user is expected to change the settings. Jumpers or DIP switches would make me nervous in an engine bay, especially given the vibrations it will be exposed to constantly.
 
  • Like
Reactions: kidturbo

2004LB7

Super Moderator
Staff member
Dec 15, 2010
7,108
2,213
113
Norcal
If you use resistor nets you can combine a bunch of settings onto one ADC pin, saving some inputs. Or since settings don't change real-time, move them to a I²C expander chip which will take only a couple pins and let you read as many as you need.

Some of the settings can be detected at startup with a little bit of clever code. The LB7/LLY high-vs-low signaling level should be very easy to autodetect, since we know that at low RPM (e.g. 0 RPM when being powered on) only 0 to 1 injector at a time should be being fired. So look at the voltage level of all the command lines, and treat that as the "off" for the session, no setting needed.

I am personally a big fan of baking settings into the firmware, or using solder jumpers or soldered resistors if an end-user is expected to change the settings. Jumpers or DIP switches would make me nervous in an engine bay, especially given the vibrations it will be exposed to constantly.
Solder jumpers are the plan. Starting with dip switches, which are very resilient against vibration. We would like to make it with the programming fitting all uses and then set the jumpers/solder pads or whatever before shipping them out. No changes to the program needed. The auto detect could be done with the crank signal. That should be very evident but would need up to one revolution to detect. This stuff can always be added to later revisions with just software updates

Expander chips are an interesting idea. May look into that more. Resistor nets are a possibility for very little of the board. Most of the pins are dedicated inputs and outputs for the injector signals and I would not want to share them with anything else. The serial data and crank signals should be isolated too. That doesn't leave much to make it worth combining them. Like the bank disabling circuit. It's an always on unless the processor cuts power to it. So it couldn't be joined up to to the constant power to an important mosfet. Current detection can't be shared because the other signals would interfere with the ability to tell them apart. So those are dedicated. That really only leaves a few for configuration settings. I'm planning on having one Dip switch/solder pad for inverting the signals, another for keeping the boost converter circuit active (at least usable for adjusting the voltage in setting it up or switching the voltage between different injector types). Then I'll probably have two more switches for additional features if needed
 

DAVe3283

Heavy & Slow
Sep 3, 2009
3,729
297
83
Boise, ID, USA
Yeah, I had meant using resistor nets for settings only, not the main I/O. That all needs to be as robust as possible, as you say.

Since we have to support at least some CAN messages to make the ECU happy, it might be easy to add some custom messages for debug / development, like holding the voltage regulator on, etc. Since that kind of thing won't be done by an end-user, no need to waste pins making it easy to do.

I bet we could come up with a clever method to avoid needing a 1-revolution delay every startup, such as remembering the last crank signal type (then we'd only be wrong for up to 1 revolution after swapping between LLY/LB7), or knowing that high- vs low-signaled injector command always correlates with a specific crank signal type.

That said, I don't know how long a LB7/LLY normally cranks before it builds fuel pressure. It might require more than 1 revolution anyway?
 

2004LB7

Super Moderator
Staff member
Dec 15, 2010
7,108
2,213
113
Norcal
Yeah, I had meant using resistor nets for settings only, not the main I/O. That all needs to be as robust as possible, as you say.

Since we have to support at least some CAN messages to make the ECU happy, it might be easy to add some custom messages for debug / development, like holding the voltage regulator on, etc. Since that kind of thing won't be done by an end-user, no need to waste pins making it easy to do.

I bet we could come up with a clever method to avoid needing a 1-revolution delay every startup, such as remembering the last crank signal type (then we'd only be wrong for up to 1 revolution after swapping between LLY/LB7), or knowing that high- vs low-signaled injector command always correlates with a specific crank signal type.

That said, I don't know how long a LB7/LLY normally cranks before it builds fuel pressure. It might require more than 1 revolution anyway?
I believe it takes 2-3 revolutions before it builds enough pressure. So it may not be an issue. But a jumper would make it fool proof and keep the programming simpler. External jumpers are also possible too as there are plenty of unused pins on the harness connector
 

kidturbo

Piston Tester
Jul 21, 2010
2,552
1,400
113
Somewhere On The Ohio
www.marinemods.us
What about the NXP Semicon S9KEAZN64AMLH ? Looks to meet the requirements but I'm not too educated in this area

I'll do some more reading on that one this evening. Was just looking at my compiled frimware size on the CANbus gateways I build with the M4, and that comes in at about 48k. Wouldn't expect this code to be much more in size, but we have buffers, and any learned calibration data that might need a byte or two of space. 256k vs 512k is mem size difference between those models.

Here is my 3.3v 4300 model.

The 105C operating temp is a good point to consider for this setup also. Believe the LPC4300's I've been hooked on for decade are an 85C chip. Seems main reason for everyone dropping to 3.3V from 5v is to lower temps on the chip. Knowing mine never break a sweat, and the PCB is in a IP67 enclosure, I've stuck a probe in case and loaded them down to check the heat. Never exceeds ambient plus 20F. Main producers are my little 12v to 5v buck, and a 5v to 3.3v regulator, which I've been fighting flaky QC on everything purchased since 2022 from here and Asia supplies. So I have a good stable and reverse protected layout for the power supply side of these circuits done by my Delphi developer long ago I can share.

Maybe we should all throw our best 5V MCU finds in a hat and get together one evening sort the the options. GPIO not an issue for any of the options I see. SPI based layout is always an options, just more coding. The 5v compliant seems to be main limiting factor on options.
 
Last edited:

kidturbo

Piston Tester
Jul 21, 2010
2,552
1,400
113
Somewhere On The Ohio
www.marinemods.us
Yeah, I had meant using resistor nets for settings only, not the main I/O. That all needs to be as robust as possible, as you say.

Since we have to support at least some CAN messages to make the ECU happy, it might be easy to add some custom messages for debug / development, like holding the voltage regulator on, etc. Since that kind of thing won't be done by an end-user, no need to waste pins making it easy to do.

I bet we could come up with a clever method to avoid needing a 1-revolution delay every startup, such as remembering the last crank signal type (then we'd only be wrong for up to 1 revolution after swapping between LLY/LB7), or knowing that high- vs low-signaled injector command always correlates with a specific crank signal type.

That said, I don't know how long a LB7/LLY normally cranks before it builds fuel pressure. It might require more than 1 revolution anyway?
From what I captured on the LB7 bench rig so far, it's looking for that gap plus 2nd tooth reference after it sees a certain control pin signal. Guessing #1, but it might be #7. I can slow it down on the emulator and try to verify which one actually triggers our start. But again, one crank revolution is 4 cylinders delay. Pretty certain nobody gonna notice that delay.. However as a long time 6Leaker owner, 5 or 6 revolutions before fire was a good start.. lol
 

DAVe3283

Heavy & Slow
Sep 3, 2009
3,729
297
83
Boise, ID, USA
However as a long time 6Leaker owner, 5 or 6 revolutions before fire was a good start.. lol
My brother owned one, and it would always make me nervous while cranking, as you wonder "is it gonna start today, or no?". The answer to that was no one too many times, and he went back to the LB7 club with me
 

2004LB7

Super Moderator
Staff member
Dec 15, 2010
7,108
2,213
113
Norcal
so, so.... how do you like them apples?




3D PCB v1.51 Top.png

3D PCB v1.51 Bottom.png

Was able to figure out how to incorporate the connector so really no need to mess around with the screw terminals anymore. also, a proper processor handling more of the functions defiantly eases up the board some and makes it a lot easier to fit everything on it. Defiantly not set on that processor I mentioned above. at least a place holder for now. this one, if I measured everything right, should be a drop-in replacement. still a lot of combing over everything to fix some issues and minor tweaks. probably nothing that will change the look much other than the addition of more silk-screening labels.
 

kidturbo

Piston Tester
Jul 21, 2010
2,552
1,400
113
Somewhere On The Ohio
www.marinemods.us
Received update last night about my possible FICM bin file swap approach. Have raw bin read outa from the LB7. Haven't personally dove into it yet, but was told it's 100% Not GM designed. Which we pretty well knew.

So next step is read out the LLY version. and compare the bins for differences. Maybe something pans out. But we now have the first known copy of a FICM OS in hand.