Solutions to EFI interference Problems on Saab 99

Bernd Felsche bernie at innovative.iinet.net.au
Tue Oct 2 09:08:48 GMT 2001


David Sackett tapped away at the keyboard with:
> Hi, I have recently written to this list regarding my Saab 99 fuel
> injection computer based on the ATMEL AVR8535 micro. Thanks for
> all the suggestions regarding my idling problems.

> I have been having trouble with accurate measurement of RPM and I
> believe it is due to interference from the ignition system. When
> the engine is running RPM jumps around all over the place. If the
> engine is running at 1000rpm occasional values of 3000, 5500 &
> 15000 will be calculated by the computer.  I thought that the
> input and power supply filtering I had designed was inadequate so
> I constructed a new circuit board based on the megasquirt's power
> supply, coil based external interrupt trigger and TPS input
> (thanks for the design Bowling and Grippo). I still get the same
> interference!

> I have mounted the circuit board in a metal box and have wires
> running from the back of a D25 connector to the circuit board. The
> only things I can think of is that the filters should be closer to
> the back of the D25 connector to avoid having unfiltered wires
> floating around in the box and also I only have a single sided
> circuit board and don't have any large copper areas on it (unlike
> the Megasquirt design).

> Are these two things critical to filtering the noise? The computer works
> fine with a signal generator, is there anything else I can try?

Can you put a CRO on the timing signal? Is the timing signal source
"pre-cleaned" or is it raw; e.g. direct from contacts/coil?
An RC-filter may be enough to de-glitch it. You might also want to
consider shifting the sense voltage of the timing pulse closer to
logic level 1; or take care of it in software.

A software approach would for example allow for a variable-size
window for the next pulse to occur, depending on the last-known,
filtered interval. There's inertia in an engine so speed variations
aren't instantenous, not even from 3000 to 5500 rpm!

One basically disables (masks) timing interrupts until the next time
one can reasonably expect the next one to occur - the most sensible
place to do this is in the timing interrupt handler; which probably
starts by disabling that particular interrupt... 

Once the window for the next probable interrupt has been detected,
initialise an internal timer and enable a corresponding interrupt.
The interrupt routine for that internal timer disables its own
interrupt and enables the one from engine timing.

-- 
 /"\  Bernd Felsche - Innovative Reckoning, Perth, Western Australia
 \ /      ASCII ribbon campaign | I'm a .signature virus!       |
  X       against HTML mail     | Copy me into your ~/.signature|
 / \      and postings          | to help me spread!            |
----------------------------------------------------------------------------
To unsubscribe from diy_efi, send "unsubscribe diy_efi" (without the quotes)
in the body of a message (not the subject) to majordomo at lists.diy-efi.org




More information about the Diy_efi mailing list