CDI Advancer Motorcycle

Programmable CDI (Capacitive Discharge Ignition)

The next schematic shows the coil configuration at magnetic plate and the position of the pick-up at the outer sider of the plate. This pick-up is triggered by the step on the plate. Below are shown the signals measured by means of an oscilloscope at the output of the magetic plate, and the output of CDI for the primary of the HV coil.

Ignition performing

The ignition explained here is a conventional one in which the trigger is controller by means of a microcontroller, in this case PIC16F84 of MicroChip. This micro has a FLASH memory that can be written with a simple programer that you can build easily, all information about the programmer can be found at JDM.

PIC receives the signal from the pick-up and delays it by using an internal table. This means that the starting point of the ignition should be place before of PMS at the most advanced point in which you want to the ignition works.

First graph shows the real advance curve measured in degrees over the PMS, nevertheless the PIC can not perform advancing, else it will make a delay from the pickup signal (typically at 36 degrees). For the maximum advance point, the PIC will do a zero delay (for 36 deg. advance). When this maximum value is determined, the second graph can be done, this graph shows delay in degrees that the PIC should perform after receiving the pickup pulse.

The PIC computes the elpased time between the last pulse and the present one, and by using this count it access to a table in which are stored time to delays vs measured period.

CDI Schematic (PIC16F84)

NOTES about the circuit:

* Schematic is designed to enable starting whithout battery.
* It is assumed that the pickup generates a double pulse.
* the first pulse (the negative one) is catched with the transistor to be processed by the PIC.
* The second pulse (the positive one) is sent directly to the SCR (thyristor) to enable starting when the PIC has not current yet.
* At least a 24 degree delay is required from the first pulse to the second to enable this configuration to work.
* If this delay can not be reached, it is recommended to remove the direct diode (into the gray box) or to use two pickups, one at 12 degrees and the other at 36 degrees (o higher).
* these values are typical values, some engines can run upto 42 degrees of advance.
* The circuit inside the gray box is provided in order to enable the engine to start easily (at the first pulse), even if no battery is built with the engine, but after the engine starts, the pic disables the direct pulse by using the transistor. This is done in order to leave the capacitor to start to charge before at high rpm (if new current from rotor is available)
* Power supply parts take power directly from the alternator at 200 or 300 volt and brings it down upto 10 volt, this configuration wastes a lot of energy on the resistor. It was designed in this way for simplicity, but for racing applications it may be more interesting to replace it with a miniature 9 volt battery (since PIC uses a very low current to run: 2ma continuous and pulses upto 20 ma for SCR) This battery can recharged before each race, and can work several hours.
* Typical values for the capacitor are 0.5u, 1u and 2u farad. But capacitor value may be critical because it should match with the power of alternator to enable to charge itself at maximum rpm. If capacitor is too large it may not charge enough at high rpm. And if capacitor is too small, spark energy can be lower.
* Excesive advance may cause the capacitor charge will be not enought to make spark, and the engine will fail at high rpm (see image). In this case the only solution is to make the capacitor start to change before by moving the coils several degrees in the oposite way to the magnets motion.

capacitor charge

PIC program

Ignition table (at the begining of the program) stores a series of values calculated with an Excel sheet. This values varies from the maximum allowed speed (15000 rpm) to the minimum stored at the curve (5000 rpm). For the lower values a simply calculation is done in order to calculate a fixed degre for the advance.

The program also has ignition rev-limiter for higher rpm
# C source code: ignition.c (CCS compiler)–> Contact
# ASM source code: ignition16.asm (MPLAB assembler)–>