AC-CDI based on PIC 16f628.
Synoptic.

Always the same principle, but a simplified design and the use
of a 16f628 (cheaper and better than the 16f84).
No more crystal, internal 4MHz clock instead, no more connector.
Further consideration...
Pulses coming from the 12° pickup directly trigger the SCR via D7 R7 C10
At the same time, pulses coming from the 36° pickup are
limited to 5 volts by the Zener D9 then trigger the PIC (pin 10).
( the PIC input detect a tension higher than 1,8 Volts.)
The green LED D1 flash at each correct pulse received from sensor 36°.
A delayed pulse, according to the programmed advance curve, is available on pin 8 and trigger the SCR T1 via D2,R7,C10.
If your bike have only one pulsar (pickup), connect it to the 36° input and leave the 12° input unconnected.
The polarity of the pickup is important, don't hesitate to invert the 2 wires of the pickup.
(because the first shape of the pulse must be positive)

Ways of the 12 and 36deg signals:
| There are 2 sparks by revolution:
one before the TDC (from the 36deg pickup) |
![]() |
On animation below, one can see the signal from the pickup (white trace, PIC input pin10) and the signal for the SCR (pink, PIC output, between D2 and R7) at various speeds between 1300rpm to 6000rpm

We can see:
- At low rpm:
the output signal is provided a little time after the input signal, therefore at the TDC.
-At high rpm:
the output signal is provided at the same time as the pickup signal, therefore before the TDC.
Main functions of the software
Easy kickstart
Advance is set for a easy kickstart at 300rpm.
Coil protection
Coil is never on while the engine is stopped.
RPM Limitation:
Over 10.900 RPM for the 2strokes version or 6510rpm for XT400, ignition is stopped, no more sparks.
Advance calculation:
Between the maximum and the minimum RPM, the PIC measure the duration
between 2 pick up pulses [the number of 4us (four microsecondes) period
between two pulses] to deduce the speed engine.
According to the speed, the PIC calculate the position in the map.
Duration of the spark:
The duration of the spark cannot be adjust on a CDI, it depend of the
capacitor value and the coil value. The duration while the thyristor is
on to discharge the capacitor, is set to 1ms (one milli second)
No reverse output available.
Accuracy:
The curve is defined by 80 to 106 points. The accuracy is high: 0.07 degree.
Modification:
As the souce code is not available, contact me for any special advance
curve.
Software.
Circuit.
| PCM6.4 | Schema | PCB | Part list |
| CDI for XT400-550-600 | Schema.PDF | circuit.PDF | liste.TXT |
Printed Circuit Board.
Compatibility with others pickups.
| This ignition need either 2 pickups: |
or only one pickup |
1st
pickup at 36° BTDC:![]() and 2nd pickup at 12° BTDC: ![]() |
Positive than negative:![]() |
But not negative than positive!![]() |
If your pickup signal is negative than positive (ie: Honda,Suzuki...), you must invert the trigger!
You can build this interface to invert the negative pulse and suppress the postive one.
Tests.
- Remove the sparkplug from the engine and connect it to the ground by touching a good metal part.
- Remove the PIC16f628 of its support.
- Just connect the CDI to the alternator (Don't connect neither the +12v, nor the sensor, nor the kill switch)
- Kick start several times to charge the big C11 condensator.
- Measure the tension between Anode and Kathode of thyristor
T1.
You must get around 150Vdc. (the tension slowly decreases because the
condensator is discharging into the multimeter...)
- Wait 30sec, measure again: the tension should not drop while the multimetre is disconnect.
- Kick start several times to reload the big C11 condensator.
- Touch the 12deg input with a wire connected to the +12v battery to trigger the SCR.
- You'll see a spark at the sparkplug.
- Connect all the wires from the pickup.(But don't connect the +12v and don't connect the kill switch)
- Kickstart, the 12deg pickup pull out a pulse each turn, this pulse trigger the SCR T1 through D7, R7, C10 and produce a spark.
- Insert the PIC16f628 in its support, in the good position! Plug in the +12v power.
![]() |
![]() |
Videos.
Test of this ignition (with advance values for Suzuki DR800) on a bench machine: video(mpeg - 4.5 Mo)
This ignition fitted an XT550: video
Versions.
- Version 6.0:
- First Version.
- Version 6.1:
- Modified software.
- Version 6.2:
- Adding software for 2 strokes.
- Version 6.3:
- software rewrited for extreme precision (0.07°).
- Version 6.4:
- Adding D4. Need to doesn't disturb Rev-counter.












