DC-CDI v7.9

NEWS AUG. 2019:

The long-awaited DCCDI with v7.9 software is coming soon!!


  • DC-CDI
  • Easier start when cold
  • For ONE or TWO* cylinders
  • Accurate (0.15°/8000RPM).
  • Advance curve is in EEPROM and is freely modifiable
  • Rev from 200 to 20,000 RPM
  • Optional rev-limiter
  • Need a 6 or 12 volts battery
  • Kill switch
  • Kit available soon in the SHOP section. Available soon!
  • Low cost Firmware.


PIC 16F628A 600 to 20000rpm
Build the CDI: Schematic
Draw the advance curve: Excel file

(Source code is not available.)


  • One PCB : you can make it yourself with the PDF in download section or buy a KIT in SHOP section. Available soon!
  • Electronic components: Partlist in download section. Available soon!
  • Crafted transformer: Wrap it yourself or buy a KIT in SHOP section. Available soon!
  • Excel file to draw the advance map: download section.
  • PIC Firmware: free or full version in SHOP section. Available soon!
  • PICKIT3 software to merge the firmware and your advance map.
  • PICKIT2 or PICKIT3 programmer or clones to burn the PIC


    If the bike has only one pickup, connect it to the 36° input and leave the 12° input unconnected.

    If the bike has 2 pickup (Yamaha XT600), connect the Low pickup to the 12° input that directly trigger the SCR and connect the High pickup to the 36° input that goes to the microprocessor.

    At idle and low RPM, the PIC generates maximum delay (about 36°) 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 500us pulse is available at pin 1 and trigger the SCR T1.
    This pulse is adjustable from 500us until 5ms or can auto adjust.
    (from 5ms at idle shorten to 0.5ms at max rev.)

    DC-DC Converter

    The microprocessor drives a on-board DC-DC converter to raise the 12Vdc from the battery to 300Vdc.
    Better startup when engine is cold.
    A DC-CDI can be a substitute to a faulty stator (charging coil).

    100Vdc when powered by a 6v battery:

    300Vdc when powered by a 12v battery:

    The converter use a hand-made transformer described here.

    CDI reprogramming

    The ignition timing is stored in the internal data EEPROM so you can change the advance curve 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!

    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 M25)
      (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 M28).
      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 M26 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. Set the optional rev-limiter in cell M30. This RPM limit is activated by Jumper JP2.
    6. 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 K, try to:

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

    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 M26) 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…)

    – With the Free version, at first power on, LED D3 flashes 19 times which is the number of remaining trials.
    This number decrease until it reach 0 where the LED is steady ON and the CDI won’t start.

    – When PIC input pin10 is high [>2.4v], led D3 (pin2) is on. So at each input pulse received from the pickup, LED D3 blink synchronized.
    If LED D3 stay always ON, that mean pin10 is always high! => Measure pin10 and try to lower R9 value from 10Kohm to 1.8Kohm or less according to your pickup…

    – You can remove D3 + R4 to lower the current consumption, but you’ll lose the feedback.

    RPM limitation:

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


    If jumper is ON (meaning putting a jumper, so RA1/pin18 is connected to ground)
    then RPM limit setup in XLS [cell M32 of Advance_curve tab] is activated.
    This jumper can be use as a racing/legal switch.

    Please note that:

    • Soldering R5 and R6 is mandatory!
    • JP2 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 Q1 and Q2 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

    Yamaha, Kawasaki

    Remove: Q1, Q2, R10, R11.
    Add : D5, D9, R9.

    For negative-first pickup signal

    Honda, Suzuki

    Remove: D5, D9, R9.
    Add : Q1, Q2, R10, R11.
    Yellow: pickup signal
    Blue: PIC input

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

    See: CDI compatibility


    • Understand Ignition Timing:
    • How a pickup works?



    Leave a Reply

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