Controlling the sequential injection.

From DIY contraptions to sophisticated FreeEMS-specific designs! Plus general hardware development!
Post Reply
oughtsix
TO220 - Visibile
Posts: 9
Joined: Mon Mar 23, 2009 1:31 am

Controlling the sequential injection.

Post by oughtsix »

A quick review of the MegaSquirt sequencer shows an additional 9S12X processor just to handle the sequencing with some sort of multiplexed arrangement. Has anyone given any consideration to how to handle this functionality?

I will throw out an idea: Programmable timers, something like the CTS9513 or the common 82C54.

I was thinking of dedicating one timing channel to each injector and then another master timer channel to control the timing for each cam shaft revolution.

I.e. A V8 would use 3 82C54 timers. Program the period of each timer with the length of time the injector it controls should be open. Program the master timer channel to fire at 1/8th of the camshaft rotation period. The TACH signal would start the master timer. Feed the output of the master timer into a simple 8 channel sequencer (simple FlipFlops chained together). When the RPM changes the CPU would have to update the period for each of the 9 timers.

This would of course allow the injection time to be customized for each injector on an individual basis. I.e. 8 VE tables or 1 VE table with offsets for each injector. It would also make injector opening and closing overlap a non issue as each timer channel would finish its open cycle before the new value is on it's next cycle.

What I am thinking is building the sequencer controller board with room for 5 82C54's. Only install the number each implementation would actually need. This would handle a 14 cylinder engine with individual timing for each injector. Oh yeah, and not eat up any of the CPU I/O's.

I see the operating temperature range on the 82C54 is -40°C ~ 85°C. Is this sufficient? The 9513 is a 5 channel timer which works very similarly to the 82C54 but doesn't seem to have near the availability. I happen to have an ISA 82C54 I/O board and a PCI 9513 I/O board I used for controlling a couple of big IGBT's in a H bar arrangement with a variable frequency around 20Khz with variable power cycles (on times) for an induction heater. The circuit was almost identical to the one I described above. This is why I am familiar with this design.

Did I explain myself understandably on this at all?
User avatar
jbelanger
LQFP144 - On Top Of The Game
Posts: 387
Joined: Sat Feb 23, 2008 8:58 pm
Contact:

Re: Controlling the sequential injection.

Post by jbelanger »

oughtsix wrote:What I am thinking is building the sequencer controller board with room for 5 82C54's. Only install the number each implementation would actually need. This would handle a 14 cylinder engine with individual timing for each injector. Oh yeah, and not eat up any of the CPU I/O's.
That's not quite correct. Just to talk to one 82C54, you need 13 CPU I/O pins: 8 data, RD, WR, 2 adresses, and 1 chip select. And to talk to 5 you need 2 more pins to select the timer chip. Moreover, each timer is almost as expensive that the target CPU. So that's not a very efficient solution.

Jean
oughtsix
TO220 - Visibile
Posts: 9
Joined: Mon Mar 23, 2009 1:31 am

Re: Controlling the sequential injection.

Post by oughtsix »

So is the plan to dedicate an I/O line to each Fuel injector and handle the timing in software with interrupts? Is the cpu so fast that this is a non issue?

I don't have a clue which is why I am asking?

So 8 fuel injectors. Each turning on at a particular point of crank angle and then turning off at a particular crank angle and very likely overlapping each other. Plus 8 ignition events turning on at different crank angles (I assume that the ignition event is going to just be a logic pulse without an associated dwell? But still you are going to have to turn on the driver (I/O pin) and then turn it off after an amount of time).


Whether my idea is practical or not the programmable timers would operate at the last given injection settings even through a CPU reset. You are right, my thoughts on an implementation would consume some I/O pins, good point. You could put all of the timers on the same bus at the same chip select (address) and set all the fuel injector open times at once. Since ignition events should never overlap (is this a valid assumption?) you could get away with two timers for the ignition (one master and one dwell) then sequence them out. I do agree none of this is very efficient as far as cost or board real estate. I am just a novice trying to throw out some ideas.

I don't have much micro controller experience. Is the thought to have a second dedicated cpu just for timing? My vision is that this project is also going to control my climate functions, cruise control and display my mpg.................. Some day! My thoughts are that if we can achieve the functionality of a MSI that is a very impressive feat. If the long term goal of this project is only to achieve the functionality of the sequential injection microsquirt why not buy the sequential microsquirt other than this is an incredible learning experience?

Has anyone mulled this part of the design over in their head?
Post Reply