DC-CDI v7.9


The long-awaited DCCDI finally turned up in Nov2019 !


  • DC-CDI
  • Easier start when cold
  • For ONE or TWO* cylinders
  • Advance curve is in EEPROM and is freely modifiable
  • Rev until 20,000 RPM/330Hz
  • Accurate (0.15°/8000RPM).
  • Need a 6 or 12 volts battery
  • No need of HV source coil on the stator
  • Autotest jumper
  • Kill switch connection
  • Kit including:
    PCB + DC Converter + SMD Mosfet + SMD resetable fuse + programmed microprocessor
    is available in the SHOP section.


– DCDC Converter
– Programmed 16F1847 PIC microprocessor
(Source code is not available.)

Provided with a KIT in the SHOP section.

Electronic components


Create the advance timing curve Excel file
PICKIT3 software

To program your own advance timing map.
PICKIT2 or PICKIT3 programmer or clones

To burn the PIC


Connect the pickup to the HIGH pickup input.

At idle and low RPM, the PIC generates maximum delay before fire a spark a few degrees ahead of TDC. That way, there is no or little advance at low RPM.

As the RPM increases, the more the advance would increase ahead of TDC accordingly.
The PIC follows your ignition map programmed in EEPROM.

Pickup signal must be > 2 volts in order to be detected by the PIC

A pulse is available at pin 1 and trigger the SCR.
This pulse is adjustable from 500us until 5ms or can be self adjusted.

DC-DC Converter

The microprocessor drives a on-board 15 Watts DC-DC converter to raise the 12Vdc from the battery to 200Vdc.
– Better startup when engine is cold.
– A DC-CDI can be a substitute to a faulty stator (charging coil).
– This overkilled converter provide 1000 mj whereas most of commercial ignitions give 50 millijoule (50 mJ) to 200 millijoule (200 mJ)

Below: Blue= Gate of SCR, Yellow= Anode (HV) at 600 and 3000rpm

CDI reprogramming

The PIC that comes in the KIT embed a protected software, but the EEPROM zone is Read/Write allowing you to write your own ignition timing into the internal data EEPROM.
You can change the advance timing by yourself as often as you want!

Just draw the new curve in the excel sheet, write datas in the PIC’s EEPROM using a programmer then restart the CDI. That’s all done!

(Video to come…)

Draw the advance curve

  • Use the Excel sheet (in download section above) to define the curve for your bike:
    • Only change the yellow cells.
  1. Type in the max timing advance your bike uses in cell F5.
    Eg: 36 degrees BTDC
  2. Select the number or cylinders (cell M24) and the number of strokes (cell O24)
    (select 2 if the engine is a 4 strokes with wasted spark)
    The pulse coming from the PIC that trigger the SCR can be adjusted from 500us until 5ms or in “AUTO” mode (cell O28).
    Except for specials needs or lazy SCR, leave the default value of 0.5ms.
  3. Select the maximum RPM by changing the variable TIMER1 in cell B9.
  4. Play with prescaler value in cell O26 AND with TIMER1 value (cell B9) until the excel sheet displays the RPM range you want, and the advance values you need don’t give “Out of range” errors.
  5. To manipulate the points of the curve, type in the advance you want for each RPM in column F.

If you run into “Out of range” error messages column M, try to:

  • Change the advance values column F
  • Change the RPM range cell B9
  • Use another prescaler value cell O26
  • Use another step value in cell L5

Play with those steps above until the curve fit in the excel sheet.

Any Excel errors will result in a faulty HEX file that will not work !

When done:

  • Adjust the advance for low RPM with the help of the multiplier value in cell I2 of the Excel tab named “advance_at_lowRPM“.

    If the maximum RPM become too low, raise it with cell B9 and so on…
    Play with prescaler value (cell O26) and multiplier value (cell I2) to change the low RPM range.

  • Once your curve is drawn, export the Intel 16Hex data into a text file then change the extension from .TXT into .HEX
  • See Video


    See video

  • You are now ready to burn the PIC with PicKit3.10 or you can save the complete HEX and use your favorite PIC programmer…


    • Burn the chip with a serial or USB programmer then insert it on the board:
    • or use the ICSP connector to program the chip in situ with PicKit.


    • Error in degree of advance:


    – At startup, Led D3 flashes 2times and goes off meaning that programming was correct.
    (if it doesn’t flash, something went wrong with the PIC or the power line or the programming…)

    – When PIC input pin10 is high [>2.4v], led D3 (pin18) is on.
    So LED D3 pulse with the pickup.
    If LED D3 always stay ON, that mean either CDI is in “Autospark mode” or pin10 is always high!
    => Measure pin10 and try to lower R9 value from 12Kohm to 1.8Kohm or less according to your pickup…

    RPM limitation:

    Above the last RPM value on top of the XLS sheet, there are no more sparks.
    ie: when RPM goes over 10653, sparks stops.
    Rev limiter


    – Hook a ignition coil to the DC-CDI, with its sparkplug connected to ground.
    – Put a jumper ON so RB2/pin8 is connected to ground.
    – Power on the DC-CDI
    – LED blinks 2 times and stay steady ON then the PIC self generate sparks at 3000RPM without the need of any pickup.

    Please note that:

    • Soldering R2 is mandatory!
    • JP1 is tested once at boot time! So if you move the jumper, reboot the CDI.

    Compatibility with others pickups.

    DCCDI v7 can be triggered either by a positive-first pickup signal or a negative-first signal.

    It ONLY detect the positive edge of the trigger pulse, if the positive wave is the second one like Honda or Suzuki, the timing will be bad…
    Then use Q2 and Q3 transistors to reverse the negative signal in order to become similar to Yamaha’s pickup.

    According to YOUR pickup signal, just use and sold the appropriate components:

    For positive-first pickup signal (PN)

    Yamaha, Kawasaki

    Remove: Q2, Q3, R11, R12.
    Add : D6.

    For negative-first pickup signal (NP)

    Honda, Suzuki, Zongshen, KTM

    Remove: D6
    Add : Q2, Q3, R11, R12.
    Yellow: pickup signal
    Blue: PIC input

    4 strokes, 2 strokes, 1 cylinder, 2 cylinders…?

    See: CDI compatibility



    • Understand Ignition Timing:
    • How a pickup works?



    • Version 7.9R17r1c0:
      • [hard.] Prototype with a hand crafted transformer.
    • Version 7.9R2c0:
      • [hard.] Prototype with a complete DC converter.
      • [soft.] Bug corrected under 500rpm.

    13 thoughts on “DC-CDI v7.9”

      1. Thanks for your interest.
        Actually I had some problems with the prototype… It worked but wasn’t reliable enough (EMI, Heat…) that destroyed a few PICs and Mosfets over the time!
        Now I’m using another converter and the results are good and stable.
        10 firsts PCB have been ordered and I expect them to be here end of October to release a first shot of 10 Kits.

    1. Hi thierry,

      “…Oct the 30th. Hitch! The oversized DC converter destroys SCR… I have to change the schematic and order new PCB That slow down the release to December!”

      You are living an unpleasant situation.
      Hang in there, you will find the solution.
      Best regards.

      1. Hi Sylvain,
        I finally found a software workaround to calm down the DC converter!
        It’s also possible to add a 10ohm 0.5w resistor in series with D1.
        That reduce the max rev to 13000RPM too.

    2. Necesito un tci para una moto suzuki gsx 400 fws es 4 tiempos 4 cilindros con 2 captores y 2 bobinas dobles ocea con chispa desperdiciada 1_4 y 2_3 tira al mismo tiempo se puede hacer con un pic o necesito dos? Gracias saludos , abrazo desde Argentina..

      1. Please use ENGLISH ONLY.

        When everything is double (1 pickup+1 coil for 2 cyl) you could use 2 separate TCI.
        But TCI IS NOT CDI
        software and hardware are different. Here there are only CDI.

    3. Hi Thierry,

      I have two questions:
      First, concernig my programming device.
      Is it still compatible with winpic800 ? I dont see this pic in supported device…
      Second, concerning my hall sensor pickup.
      when no magnetic field detected, the output is high and low when detected, the signal is inverted with classical pickup.
      Should I provide a signal inverter (transistor) or not necessery it will work well.


      1. Thierry,
        The answer at my question2 seems to be evident.
        If I refer the schematic, I will have to install neither the transitor Q3 nor the diode D6 and link the Q3 emitter pin hole with Q3 collector pin hole.
        Do you agree with that ?


          1. Thank you Thierry, 16f1827 is supported.
            About my hall sensor, I need to pullup the output, either with 5v or 12v.
            For this reason, I use R12 and remove R14 for 5v pullup.
            Although, I would have preferred pullup 12V in order to avoid an hypothetic 78L05 regulator overload…

    Leave a Reply

    Your email address will not be published. Required fields are marked *