COP Coil on Plug Ignition for Suzuki SJ413

Page Updated 09.09.2009


The Story

My son Johannes bought his first car about a year ago. Since purchase he have been building and enhancing it for the off road use. Project descriptions can be found from Juuso’s web pages. This project has been enjoyable father-son project. All aspects are included. Conceptual design, mechanical design, software design, electronics building, mechanical building (sensors), tuning etc. We have learned a lot and of course plenty of learning yet ahead. Gathering components and the design work started already last winter. August 2009 we had first test run with the car. System was bench tested with simulator before installation. Surprise after installation car started with first try and ran smoothly. Look at Juuso’s smile!


Operation of the controller and general control strategy.

Sensor setup was chosen by inspecting crate motor. CAM sensor was decided to install into camshaft drive pulley in a way or another. This sensor is needed to define motor work cycle zero or beginning point. I decided to try crankshaft position sensing from the flywheel start motor gearwheel. There are 100 teeth In the SJ413 engine gearwheel. Good number it is divisible by 2. MAP pressure is measured with Freescale MPX4115 sensor. This time we decided to try so called Coil on Plug (COP) configuration. This means own ignition coil for each cylinder. This configuration gives us lots of benefits. System is e easy to build "watertight". This is Important feature in off road vehicle. Higher spark energy compared to distributor system especially in high revolution area. Less breaking parts. Ignition timing control is better compared to the distributor. This of course depends what your software does. I decided to implement simple timing algorithm. Just count flywheel teeth and do timing with this information. This approach however brings two problems with it. Coil load time (Dwell) must be converted to angle (number of teeth). Granularity of the timing is not very high. Counting just teeth we get with our 100teeth wheel 3,6 degrees. You can double this by counting both edges of the teeth. This gives us to 1,8 degree granularity but puts some pressure to sensor performance. If our engine could rev up to 9000rpm we get 150rps*100teeth*2 = 30kHz. There are also some challenges in the software side to do real time computing in this pace.



I decided to use dsPIC30F6014A microcontroller partly because of above-mentioned reasons and mainly because I have don few projects with this part and it is easy for me to work with it. 30F6014A contain enough timer units and provide needed performance.

Controller schematics Page1 Page2

Pictures. Controller board Top Bottom Cooling and insulation of the IGBTs. Attention must be paid how to install and insulate the IGBT switches. There are up to 400V voltage at the transistor metal case. PCB installed and connector holes cutted. Controller boxed


Inputs & Outputs

I/O requirements are quite simple. On board battery voltage measurement which is needed foe coil load time computations. On board MAP (pressure) sensor. High-speed digital inputs (interrupts) for CAM and Crank sensors. Two special digital outputs are implemented. We wanted to keep cars original tachometer. For tachometer drive there is charge pump to get needed over 20V voltage. Software generates the tacho drive pulses. Second similar output is reserved for coming EFI conversion. ECM needs also simulated distributor like timing information.

Four coil outputs switched with IGBT transistors. IR IRGSL14C40 parts are used. These are particular easy to use because of logic drive and internal active clamp.

Two RS232 interfaces for software downloads and possible in car display.

System is powered with simple automotive spec linear regulator LM2930T5.



Software is written with c-language. Microchip C30 compiler is used. Also all timing critical routines are c coded but verified from the assembler code what the compiler generates. Software design does not follow all excellent decign principles but is more "get it done" approach. Software source code can be found here. First 30.08.2009 version.

All software development and testing before first run is done with simulator and oscilloscope.



We had no starting point for our tuning. Simple solution was to datalog and characterizes existing distributor control function. It is not optimal but it is something to start with. I used my controller as datalogger. The job was done with some additional software and spark plug wire trigger connected to spare digital input. Example of datalog test run. Note that units are 1,8 degree each and base advance is about 6 degrees. Funny numbers (300 units and down) comes from incidence that I did not know when I installed the CAM sensor that CAM timing marks are at Cylinder #4 TDC not at #1 TDC. So advance is 300 – logged number multiplied by 1,8 degrees + base advance 6 degrees.



This is very first ignition control map. Map is composed based on original distributor characteristic. I am not a engine tuner so in this particular area there is lot to learn for me.

Second try was iterated with Ignition Map Configurator program. Map is slightly hand tuned to fit my 1.8 degree system and different RPM bin division. Map can be found here. Configurator program gives more aggressive high RPM advance values. Idle and moving off from idle strategy is also different compared my distributor mimic map. Configurator sets higher values overall in the idle area. Interesting detail is that at nominal idle the advance is 13 degrees but if RPM’s drop bellow it advance is increaced. This tries to increace idling speed. Based on very brief testing thias also works.



Both CAM and Crank sensors are electrically identical. Mechanical construction is however quite different.

Sensor schematics

As earlier explained crank sensor performance is critical in this application. I made simple but not safe sensor tester from angle grinder and variac. I had few commercial Hall sensors for reference. Unfortunately their performance was not enough for this application. I made my own sensors based on Melexis MLX90217 chip. Homebrew sensors needed also lots of mechanical building.

Cam sensor bolt installed. Cam sensor hole made. Camsensor board installed. Cam sensor shield installed For easy adjustment there is a LED indicator on the cam sensor board.


Crank sensor needed more fabrication work. My early best guess was 20mm tube for the crank sensor. I made the PCB according this plan. In real life only 16mm hole was possible in the clutch bell housing. Steel tube sensor body was fabricated. Pic1 Pic 2 Pic 3. Existing sensor BCB was cut and fitted in to the new 16mm body. After fitting whole thing was potted with epoxy. Ready sensor assembly waiting finishing. Crank sensor mounted. Note the diagnostic LED.

Sensor testing after installation..



I purchased few different COP coils from ebay. I tested and characterized the all COP coils and some others for the reference. I did separate simulator / coil tester program for my controller board. Measuring instruments was oscilloscope and current probe. I selected Chrysler / dodge coils because they had largest inductance and highest R. Easier to control and large energy. Coil rack was build to support them. Suzuki 1,3l engine is not originally designed for this type ignition coils. Exhaust manifold is quite near the coils. Heat shield was added to protect the coils. Note also heat shield over the crank sensor cable.


Wiring and installation

Unobtainable coil connectors. Unfortunately we have only three coil connectors and two seals for them. It looks like these connectors are not available anywhere. Standard Molex Minifit and Microfit connectors are used for all other connections.

Controller box is installed on the firewall. "Rain shelter" for the controller box was needed because Suzuki is not waterproof!

Controller power and tachometer connections are done at original coil connectors. This also allows switch back to original system if ended. Distributor is yet in place for backup system.


 Spark Plugs

Our project got also Denso Iridium IW16 spark plugs. Picture of normal and Iridium plug. Johannes doing the plug change work. More details about Iridium spark plug benefits and differences can be found from Denso web pages.


Future development

I also implemented Flasher function into my controller. This allows "on the fly" software development and field-testing. At least timing control map needs to be tuned. I also would like to get better accuracy to dwell control. In current configuration 1,8 degree resolution converted to time in low rpm area lead to quite coarse dwell timing control. CAM sensor which should give exact mod (400) crank pulses is not accurate enough. Typical jitter is +/- 1 crank events (tooth edges).