DIS Ignition experiments
Page updated 15.09.2003
This project is an experiment with DIS (distributorless ignition system). Suzuki SJ410 was chosen as lab rat. This was easy decision because we are building one with my son for his Off Road training. This project is dedicated to my son Juuso.
This project is for your possible personal experiments, not for any kind of commercial use. No information is guaranteed to be right here. No liability is taken on what so ever you are doing with this information.
Some of the main goals of this project are:
Melexis MLX90217 Hall sensors are used to detect cam position and cylinder 1 sync pulses. I had few ideas where and how to mount sensors. I ended up building all of them inside distributor housing because it was the easiest way to do it. It was not necessary to bring the whole engine at home ! Electrical connection between sensors and controller board is done with two differential signals for better noise resistance. Here are few pictures about distributor modifications:
Motorola MPX4115 pressure sensor is used for manifold pressure metering. Sensor is mounted on controller pcb and pneumatically connected to engine.
Microchip PIC18F452 part was chosen for this project mainly because I had those parts and tools for them. PIC18F452 is new generation micro controller providing necessary performance to do real time calculations. I made single side pcb for this project myself. This was main reason to use large 40 pin DIP package.
Ignition coils & driver electronics
Partially broken (one out) Chrysler V6 waste spark coil pack is used for this experiment. No data what so ever is available about coil pack so I had to measure and characterize it. Here are some data : N1/N2 about 100, primary resistance 0R9, secondary resistance 12k8, primary inductance 5,7 mH, secondary inductance 44,5 H. Extremely low primary resistance is good for quick loading but also needs very careful dwell setting. I measured coil saturation time at different voltages and made dwell (coil charge time) table from this information. Separate coil saver process is also implemented in code.
Coil drivers are so called ignition IGBTs. These are IGBT transistors specifically designed for ignition coil driving. These can be driven directly from processor I/O and contains primary clamp circuit. I gave tested two types: IR IRGSL14C40L and Fairchild HGTP14N44G3VL. Both works well. Picture of coil and driver tests
In my Suzuki SJ410 test vehicle I am currently using NGK BP6ET 3-ground electrode spark plugs. I am still learning and trying to find out what kind of spark plugs is really needed with waste spark coil. In waste spark setup one of the two plugs connected to one coil has right arc voltage polarity and other has wrong polarity. According old theory books polarity of ignition voltage is one of the important things. I have not yet found what is changed with waste spark technology. Theory or stark plugs ?
CAM sensor simulator
I also made simple cam sensor simulator from PIC16F628. This device is good help during desk tests. Circuit is so simple that I did not do pcb for it. Simulator is build on prototype board.Board front side and board back side.
Software tools and source code
Project is coded with Hi-Tech PICC18 compiler. I have not tried if this compiles with demo version of it. All of the source code is c and easily portable to other systems. Spark engine part of the code is however very much connected with PIC18F452 hardware.
I have written parts of the project every now and then. Code is not "clean" or beautiful c it however does everything what I have wanted to experiment. Please feel free to do cleanup or any enhancements.
Few words about principle of operation
Timing is base on cam sensor which is giving four pulses per revolution. One pulse for each ignition event is generated. Pulses are timed about 6 deg before tdc. Separate sensor is used for synchronization. This sensor gives one long pulse for cylinder #1. Engine sync is found once per cam revolution. Worst case start up condition means two camshaft revolutions before first spark is delivered. With small Suzuki engine this is no problem
Controller has two operating modes. Run mode and start up mode (engine turning slowly). In start up mode coil load starts at reference pulse and spark is delivered after 4 ms. Engine starts with 6 degrees or less advance. When engine speed rise up to about 286 rpm run mode takes over.
Software is divided into two main parts. Real time part what I call "spark engine" and non real time part. Spark engine does all needed calculations at every cam sensor event and delivers spark with desired advance. Desired advance and dwell are updated asynchronously to engine events. Non real time part does all non time critical tasks. Manifold pressure and battery voltage is measured here. All table lookup and other target value calculations are done here. Also experimental user interface (LCD, terminal I/O, manual advance etc) resides here.
In this experimental code target advance is calculated from "distributor simulation" tables. This was easiest way to get engine running. Maybe later I implement real map look up for target advance. For test purposes manual setting for target advance is implemented with potentiometer and A/D input. This is interesting tool. Target dwell depends about battery voltage. With low primary impedance coils this is critical parameter. You can find more about this from software comments.
Rest of the things you have to find out from software comments and schematics.
Some other pictures