Quantcast

Spark redundancy.

HomeBuiltAirplanes.com

Help Support HomeBuiltAirplanes.com:

pictsidhe

Well-Known Member
Joined
Jul 15, 2014
Messages
8,650
Location
North Carolina
My car drove me nuts with its CEL for three months, then somebody suggested I unplugged the tacho. Problem completely went away. 6 months later I grabbed one from a junkyard. Tried the old one again: CEL in 1/2 hour. Put junkyard one in, no CEL for around 3 months now.
My tacho was crashing the CANbus and causing the CEL.
Apparently, on auto transmission cars, that would have put it into limp mode.

If/when I have an aircraft engine running from an ECU, it will only run the engine, no piggybacking any other duties/junk on. At least not in a way that could affect it. A dumb output of parameters via optoisolator(s) would be my hard limit.
 

pfarber

Well-Known Member
HBA Supporter
Joined
Feb 21, 2019
Messages
600
Location
Pennsylvania
My car drove me nuts with its CEL for three months, then somebody suggested I unplugged the tacho. Problem completely went away. 6 months later I grabbed one from a junkyard. Tried the old one again: CEL in 1/2 hour. Put junkyard one in, no CEL for around 3 months now.
My tacho was crashing the CANbus and causing the CEL.
Apparently, on auto transmission cars, that would have put it into limp mode.

If/when I have an aircraft engine running from an ECU, it will only run the engine, no piggybacking any other duties/junk on. At least not in a way that could affect it. A dumb output of parameters via optoisolator(s) would be my hard limit.
Gauge clusters are kinda important, so if it was not communitacting with the ECU to display trivial information like, say, current speed, or fuel tank level, or even what gear you are in.... so a CEL and limp home for safety would be a good choice for John and Jane Q public.

Even in a Certified AC, if your oil/fuel/tach all went dead, would you not land immediately?

Now the cool thing that EVERYONE seems to be missing is that in a CUSTOM ECU you could ignore the gauge cluster failure and not even throw a CEL or ever go into limp home... or you could. Its your choice.

What part of 'don't run a factory ECU' is confusing people???
 

pictsidhe

Well-Known Member
Joined
Jul 15, 2014
Messages
8,650
Location
North Carolina
My tacho read rpm, outside temperature and has idiot lights for the indicators and high beam. It is most certainly not anything of great importance. It's not even fitted to all models. But it was crashing the CANbus, which meant I would also lose ABS, traction control, speed, fuel and temp gauges. The tacho is not important, but its failure affects things that are. That's why I wouldn't want unimportant stuff on the same system as essential stuff and why I brought it up as an example. If you can't understand that, please stop trying to be an expert.
 

pfarber

Well-Known Member
HBA Supporter
Joined
Feb 21, 2019
Messages
600
Location
Pennsylvania
My tacho read rpm, outside temperature and has idiot lights for the indicators and high beam. It is most certainly not anything of great importance. It's not even fitted to all models. But it was crashing the CANbus, which meant I would also lose ABS, traction control, speed, fuel and temp gauges. The tacho is not important, but its failure affects things that are. That's why I wouldn't want unimportant stuff on the same system as essential stuff and why I brought it up as an example. If you can't understand that, please stop trying to be an expert.
Well ABS/Traction control are not critical. Running out of fuel or getting a speeding ticket.. also not critical to the safe operation of the vehicle. Knowing what gear you are in? Now we're talking safety, that's why there are always at least two indicators (dash and shifter). I 100% plan on using a CAN bus engine monitor (aka glorified serial port display) because its cheap and easy. The cost of a tablet and a CAN to USB adapter....

<---- simple

Is it not perfectly clear that factory ECUs are not recommended? If you were running a very early electronic ignition that only did spark, that's ok, and many current aftermarket ECUs' actually use the EI controllers like Fords, because they were so well designed.

You could make, with little effort, a PLC with 2-4 inputs to control an engine. Most aftermarket EFIs add in things like boost control, launch control, wacky nitrus controls etc etc because they are really geared towards racing. Most of those features can be turned off or repurposed, but the IO circuitry is still on the boards.

Speeduino could have cornered the 'simple tweakers market' but added in the race stuff that AC's really have no need for.
 

AdrianS

Well-Known Member
Joined
Jul 5, 2014
Messages
562
Location
Australia
My tacho read rpm, outside temperature and has idiot lights for the indicators and high beam. It is most certainly not anything of great importance. It's not even fitted to all models. But it was crashing the CANbus, which meant I would also lose ABS, traction control, speed, fuel and temp gauges. The tacho is not important, but its failure affects things that are. That's why I wouldn't want unimportant stuff on the same system as essential stuff and why I brought it up as an example. If you can't understand that, please stop trying to be an expert.
I could knock up a simple fuel / ignition system on either am Arduino or a real industrial micro, but I'm not going into competition with Ross et al.
As soon as you add eg. CanBus, you need an interrupt driven comms layer, and your bug potential rises exponentially.

KISS - an aircraft ECU doesn't need live tuning, or a wireless tablet display, or a Bluetooth interface. If you want that, setup an Arduino as a datalogger - if it crashes, you won't.
 

Mike0101

Active Member
HBA Supporter
Joined
Aug 24, 2020
Messages
28
I could knock up a simple fuel / ignition system on either am Arduino or a real industrial micro, but I'm not going into competition with Ross et al.
Real Automotive grade Micro? It's more than just temperature range.

As soon as you add eg. CanBus, you need an interrupt driven comms layer, and your bug potential rises exponentially.
Whoa - it seams like you are suggesting an interrupt less system...
Lets do some simple math:
Elapsed time for a (1) degree of crankshaft rotation = (1/(RPM/60))/360
* @3000 RPM, 1 degree of rotation = 0.00005555 sec or 55.5 uS (microseconds)
* @6000 RPM, 1 degree of rotation = 0.00002777 sec or 27.7 uS (microseconds)
Having sloppy ignition timing (spark scatter or jitter) cuts directly into your knock margin and generally not conducive to making good/repeatable/SAFE power.

Since the LS3 appears to be popular on this forum (and I've owned a few). Lets look at minimum events per revolution @6000 RPM:
* Reluctor wheel 58x (actually a 60-2), 6000 RPM / 60 (convert to revolutions per second) * 58 = 5800 events (to track engine and decode position).
* Injectors (sequential), 6000 RPM / 120 (Convert to 4-strokes per second) * 8 (number of injectors) * 2 (turn on/turn off) = 800 events
* Ignition coils (not wasted spark), 6000 RPM / 120 (Convert to 4-strokes per second) * 8 (number of coils) * 2 (turn on/turn off) = 800 events
Just above is 7800 7400 events per second... And, you certainly WILL need more than that to sufficiently run an engine.

How is above going to be done without interrupts in a simple main loop?

As far as CanBus, depending on micro (assuming 32 bit, reasonably modern) you have hardware buffers (for several message frames - 8 is not unusual), and DMA (direct memory access), which will simply in the background move messages to memory location with a depth specified by code. CanBus is actually easier to do without interrupts then above mentioned events.

KISS - an aircraft ECU doesn't need live tuning, or a wireless tablet display, or a Bluetooth interface. If you want that, setup an Arduino as a datalogger - if it crashes, you won't.
I guess I stink at tuning, because the more info in real time the better. Ever try to get 80 lb/hr or larger fuel injectors to just adequately idle? They don't even fully open and you are by default in nonlinear region...

For me, this stuff is a hobby, but can say it's not the childs play some make it out to be. Well - if you want to do it correctly?

Edit - fixed typo
 
Last edited:

rv6ejguy

Well-Known Member
Joined
Jun 26, 2012
Messages
3,875
Location
Calgary, Alberta, Canada
I guess I stink at tuning, because the more info in real time the better. Ever try to get 80 lb/hr or larger fuel injectors to just adequately idle? They don't even fully open and you are by default in nonlinear region...
Hmmm, I don't know what to say about this. There is a direct relationship between cylinder volume and injector flow rate vs. injector on-time. We've done dozens of EFI installations with SDS where the injector flow rate to cylinder (ccs) is over 1.5 X. Idle is just fine.. Some EFI systems apparently have poor driver circuits and you can't get a decent idle with big injectors.
 

Mike0101

Active Member
HBA Supporter
Joined
Aug 24, 2020
Messages
28
Hmmm, I don't know what to say about this. There is a direct relationship between cylinder volume and injector flow rate vs. injector on-time. We've done dozens of EFI installations with SDS where the injector flow rate to cylinder (ccs) is over 1.5 X. Idle is just fine.. Some EFI systems apparently have poor driver circuits and you can't get a decent idle with big injectors.
Well this is a bit of a apples to oranges thing.

I was referring to a automotive closed loop ECU with drive by wire (DBW) throttle, functioning AC and all amenities. I'm well aware of SD and MAF theory, and how that gets converted (calculated) to injector pulse width. Tuning for WOT (wide open throttle) is easier part, no bucking or surging takes a bit more, especially when it's blended SD/MAF.

I highly doubt injector driver was an issue, nor ECU granularity. Some hard coded limits do hinder progress. When done correctly, I can swap 80 lb/hr to say 60 lb/hr injectors, reduce boost, and need to update only injector data... In my previous post, that is what I was trying to get across, about doing things correctly.
 

rv6ejguy

Well-Known Member
Joined
Jun 26, 2012
Messages
3,875
Location
Calgary, Alberta, Canada
I don't understand your original statement then. You appeared to say you had difficulty getting a roughly 800cc injector on an 800cc cylinder volume to idle properly. Is that the case or not?
 

Mike0101

Active Member
HBA Supporter
Joined
Aug 24, 2020
Messages
28
I don't understand your original statement then. You appeared to say you had difficulty getting a roughly 800cc injector on an 800cc cylinder volume to idle properly. Is that the case or not?
Yes that is correct! I have a thing about having long and short term trims slightly negative, so if a sensor craps out, there is additional fuel there, due to going open loop. It's good practice. Also don't like huge variations in VE table to mask lack of correct injector calibration, again good practice. Then finally, don't like bending MAF curve, to mask injector data issues. These all interact, and there is more to it on complex systems, that are torque based.

With robust logging in real time, you can fix issues one at a time (or solving for one variable vs 3). Guess I'm picky.
 

rv6ejguy

Well-Known Member
Joined
Jun 26, 2012
Messages
3,875
Location
Calgary, Alberta, Canada
Sounds complicated to me, we reduce the RPM Fuel Value on SDS at 750rpm (idle) to reduce injector open time. Done.

You don't need all this complication on an aircraft system without DBW and closed loop.

Bottom line, we run 120-160lb. injectors on 550 cubic inch six cylinder engines at Reno and the idle quality is excellent. Ditto on some street cars, 2L 4 cylinders with 72 pound injectors.
 

AdrianS

Well-Known Member
Joined
Jul 5, 2014
Messages
562
Location
Australia
Real Automotive grade Micro? It's more than just temperature range.



Whoa - it seams like you are suggesting an interrupt less system...
Lets do some simple math:
Elapsed time for a (1) degree of crankshaft rotation = (1/(RPM/60))/360
* @3000 RPM, 1 degree of rotation = 0.00005555 sec or 55.5 uS (microseconds)
* @6000 RPM, 1 degree of rotation = 0.00002777 sec or 27.7 uS (microseconds)
Having sloppy ignition timing (spark scatter or jitter) cuts directly into your knock margin and generally not conducive to making good/repeatable/SAFE power.

Since the LS3 appears to be popular on this forum (and I've owned a few). Lets look at minimum events per revolution @6000 RPM:
* Reluctor wheel 58x (actually a 60-2), 6000 RPM / 60 (convert to revolutions per second) * 58 = 5800 events (to track engine and decode position).
* Injectors (sequential), 6000 RPM / 120 (Convert to 4-strokes per second) * 8 (number of injectors) * 2 (turn on/turn off) = 800 events
* Ignition coils (not wasted spark), 6000 RPM / 120 (Convert to 4-strokes per second) * 8 (number of coils) * 2 (turn on/turn off) = 800 events
Just above is 7800 events per second... And, you certainly WILL need more than that to sufficiently run an engine.

How is above going to be done without interrupts in a simple main loop?

As far as CanBus, depending on micro (assuming 32 bit, reasonably modern) you have hardware buffers (for several message frames - 8 is not unusual), and DMA (direct memory access), which will simply in the background move messages to memory location with a depth specified by code. CanBus is actually easier to do without interrupts then above mentioned events.



I guess I stink at tuning, because the more info in real time the better. Ever try to get 80 lb/hr or larger fuel injectors to just adequately idle? They don't even fully open and you are by default in nonlinear region...

For me, this stuff is a hobby, but can say it's not the childs play some make it out to be. Well - if you want to do it correctly?
Thanks for your kind lesson on things I've known for decades.
I never said an ECU could be done without interrupts, and am fully aware that an automotive grade ECU is more than just temperature range.
 

Mike0101

Active Member
HBA Supporter
Joined
Aug 24, 2020
Messages
28
Sounds complicated to me, we reduce the RPM Fuel Value on SDS at 750rpm (idle) to reduce injector open time. Done.

You don't need all this complication on an aircraft system without DBW and closed loop.

Bottom line, we run 120-160lb. injectors on 550 cubic inch six cylinder engines at Reno and the idle quality is excellent. Ditto on some street cars, 2L 4 cylinders with 72 pound injectors.
Ok - got it. Looked at website under fuel maps ( Link ).

So SDS fuel injector pulse width = Curve_A + Curve_B + Curve_C + Curve_D.
Curve_A, being "base fuel" or RPM based lookup values.
Curve_B, being "MAP (manifold absolute pressure) enrichment" based on lookup values.
Curve_C, being "IAT (inlet air temperature) enrichment" startup or running lookup values.
Curve_D, being some sort of density vs temperature lookup values (simply a guess on my part).

My description of "adequate idle" had to do with hunting due to control loops in contention with each other (RPM dip, then Rev, rinse and repeat). Not cam lope/chop... SDS system is very forgiving, as injector size is built into curves.
 
Last edited:

Mike0101

Active Member
HBA Supporter
Joined
Aug 24, 2020
Messages
28
Thanks for your kind lesson on things I've known for decades.
I never said an ECU could be done without interrupts, and am fully aware that an automotive grade ECU is more than just temperature range.
Sorry. if I offended.

My comment on "automotive grade" micro, had to do with ESD, vibration, in some cases flash endurance, injection current and so on, including temperature range (-40 to 125C). Industrial can be surprisingly wimpy by comparison.

As far as CanBus, it is a low overhead to receive and send. Reading/writing the data (1-8 bytes) takes up more CPU clock cycles. Again, sorry if there was a misunderstanding.
 

rv6ejguy

Well-Known Member
Joined
Jun 26, 2012
Messages
3,875
Location
Calgary, Alberta, Canada
Ok - got it. Looked at website under fuel maps ( Link ).

So SDS fuel injector pulse width = Curve_A + Curve_B + Curve_C + Curve_D.
Curve_A, being "base fuel" or RPM based lookup values.
Curve_B, being "MAP (manifold absolute pressure) enrichment" based on lookup values.
Curve_C, being "IAT (inlet air temperature) enrichment" startup or running lookup values.
Curve_D, being some sort of density vs temperature lookup values (simply a guess on my part).

My description of "adequate idle" had to do with hunting due to control loops in contention with each other (RPM dip, then Rev, rinse and repeat). Not cam lope/chop... SDS system is very forgiving, as injector size is built into curves.
RPM (which compensates for VE changes) X MAP gives the primary injector pulse width with additions for TPS (transient enrichment), IAT, ET and baro.

We generally don't idle in closed loop so that negates the hunting issue.

IAT isn't so important for cold start or warmup, this is mostly addressed through the engine temp input, (a separate table for cranking and warmup).

MAP can't be considered enrichment, it's a primary input just like RPM. The MAP values are generally pretty linear unless you want to bend them one way or the other to change the AFR at certain load points.

We don't get into specifying injector characteristics such as dead time as that's simply another unnecessary complication which serves no purpose in our view. Want to lean, enter a smaller RPM Fuel Value, want to richen, increase RPM Fuel Value. Dead simple.

Aircraft simply don't need many of the things done on OEM automotive ECUs. They sit mostly a steady power settings for long periods of time. We don't use closed loop with leaded Avgas as the sensors don't last very long in most cases.
 
Last edited:

AdrianS

Well-Known Member
Joined
Jul 5, 2014
Messages
562
Location
Australia
Sorry. if I offended.

My comment on "automotive grade" micro, had to do with ESD, vibration, in some cases flash endurance, injection current and so on, including temperature range (-40 to 125C). Industrial can be surprisingly wimpy by comparison.

As far as CanBus, it is a low overhead to receive and send. Reading/writing the data (1-8 bytes) takes up more CPU clock cycles. Again, sorry if there was a misunderstanding.
Sorry if I sounded crabby. I'm having some health issues (and eating some lovely strong drugs :) ) but that's no excuse for my being uncivil.

I was really only using CanBus as an example - simply put, more code = more complexity = more potential bugs.
Obviously an ECU will require interrupts.

I agree about micros - that's one of my criticisms of Speeduino.
That plus the fact that I've seen soo much amateurish Arduino code, particularly at the low-level use of hardware, timers and interrupts.

Safety critical hardware / firmware requires an attitude and approach that most programmers / engineers are not familiar with.

As an example, we've had issues where an opto-coupler fails at around 10 years old, and the (original) code went into a watchdog reboot loop waiting for a signal that never arrived.

Sorry for being snarky.
 

AdrianS

Well-Known Member
Joined
Jul 5, 2014
Messages
562
Location
Australia
As a aside, every time our micro supplier gets a new sales rep, they come out to see us and try to persuade us to switch to their latest and greatest ARM chip range.

When I ask about ESD, vibration, and extreme temperatures, I may as well be talking Martian.
 
Top