DC-CDI 16F628 v2.1


Adaptation done by:



  • Same software as AC-CDI v7
  • For single cyl.
  • 1 advance curve.
  • No alternator.



PIC 16F628A v2.1
DC-CDI Schematic PCB Board layout Partlist Eagle files


How does it works?

The software is the one from the AC-CDI version 7 but the High Voltage is no more coming from a charging coil, but it’s generating from the 12v battery.
A UC3845 is driving a home made transformer that raise the tension from 12Vdc to around 200Vac.
The HV is rectify by D1 and charges C9 capacitor.

A high voltage charging coil is not necessary.

Pulses coming from the 36° pickup are limited to 5 volts by the Zener D7 then trigger the PIC (RB4 – pin 10).
(PIC input detect any tension higher than 1,8 Volts.)

LED D2 turns on at each pulse received from sensor 36°. (You can remove R17 and LED2 if not necessary)

A delayed pulse, according to the programmed advance curve, is available on RA2 (pin 1) and trigger the SCR T3 via LED1,R12-C14.

The polarity of the pickup is very important, don’t hesitate to invert the 2 wires of the pickup.



SCR is BT151-500
(High power with shottky diodes integrated and very low internal resistance)
Diodes are fast rectifier diodes ( BR307 , UF5408 …3A-1000v)
Same bikes needs to lower R19 resistor value.
Exp: for Suzuki 125cc: R19 must be 560ohm (instead of 330k)

  • EI Core 22/19/6 (width/height/thickness)
    Primary : 0.6mm , 15 turns
    Secondary : 0.2mm , 350-400 turns (as much as you can because it’s flyback)
  • Wind the primary and secondary in the same direction (clockwise or anti-clockwise BOTH)
  • Leave a 0.05 to 0.8mm air gap between the 2 legs of the magnetic core.
  • Try different air gap walue, it’s critical and can avoid the Tx to saturate.
  • The Tx behavior depend on many factors: core, ferromagnetic material, shape, size, air gap, tension, frequency, duty cycle, primary coil, efficiency, temperature, etc etc etc
  • It’s normal to face with overheating and spikes when dealing with high currents and high voltages…!
  • Do not operate without ignition coil (need a load on output cause it’s a boost converter)


  • R4, C7 are used to setup the oscillor frequency.
  • Fosc = 1.72 /( R * C ) = 1.72 /( 33k * 1nF ) = 0.50MHz = 50KHz
  • Fosc is the input frequency of PWM controller and output frequency provided by PWM controller is Fosc/2 = 25KHz which used as the switching pulse of MOSFET switch.
  • The frequency has a lot to do with output voltage. The ON time must be long enough to let current increase to the required level, in order to get the desired output volts.
  • You may want to experiment other frequencies.
  • The duty cycle of pulse is controlled by the feedback control loop. (pin2 of IC1)
  • The greater the duty cycle, the greater the output Voltage. Until some point…
  • When FB pin is high it cause the output PWM to switch off and the MOSFET will not get triggered.
  • When FB pin is low it generate output pulse of high duty cycle to the MOSFET.

Oscillator IC:

  • Use a UC3843 with a Max. Duty Cycle of 100% instead of a UC3845 with max Duty= 50%
  • With a UC3845 we get a max voltage of 140Vac at 12000RPM with a transfo wired with primary 12T and secondary 700T
  • With a UC3843 we get a max voltage of 280Vac at 12000RPM with a transfo wired with primary 12T and secondary 180T
  • If you are facing mosfet overheating, considere switching to UC3845 to lower the duty cycle.
    – Thanks to Irfan Galuh Sayoga


  • You need to verify if the mosfet goes completely ON and OFF. Measure the voltage across the mosfet both ON and OFF and calculate the internal resistance.
  • If the internal resistance in higher than the datasheet value, it mean that it doesn’t totaly turn ON (it needs 10v for a guaranteed Rds)
    – Increase Gate voltage by reducing R1 value
    – Decrease Drain voltage by lowering the current
    (increase R6 or install a low ohm resistor in the current path)
  • Use R6 to read volt level across it when the mosfet is ON and when it’s OFF
  • Calculate values for current when both ON and OFF.
    These are good indicators of what’s going on…
  • Mosfet can only dissipate 2watts: Add it a big heatsink with thermal paste.


  • When CS pin3 of UC3845 goes beyond 1volt IC1 output is automatically switched off.
    If Tx secondary is shorted, Q2 will drive a high current, tension at R6 will increase and pin3 will go high.


  • D2, R2, C3 are used as a snubber to protect MOSFET transistor.
  • D2 is a fast diode type(BYV26C…)
  • R2 goes from 100 to 100k
  • C3 goes from 2nF to 10nF
  • Use a snubber calculator
  • If you MOSFET is getting hot, you probably have to change the snubber value according to your Tx windings…



This ignition fitting a Honda SS50:

Tested with the pickup simulator:




  • Version 2.0:
    • Initial release with a home made transformer.
    • Use AC-CDI v6 software.
  • Version 2.1:
    • PCB redrawn.
    • Use AC-CDI v7 software.

51 thoughts on “DC-CDI 16F628 v2.1”

  1. Hi Thierry
    Thanks for the fast shipping of the board for V1 .
    I kind of enjoy soldering and this could be my next project , dispensing with most of the heavy flywheel sounds good . I ran my little Ducati SL2 when I first hit the road without a flywheel (just the centre to operate the points)and loved the way it picked up . Crank bearings lasted longer too !I was clocked by the police doing 82mph on their speedo as I didn’t have one ( no cameras or guns back then) not bad for a 50cc in the 1970s.
    The transformer used in this unit interests me as what immediately springs to mind is a 220v-12v wall wart transformer used in reverse or perhaps a DC-DC converter ? Have you tried either of these ? Silly question but are the pcbs available because I hate etching in any shape or form .
    It would be nice to dump the alternator completely and relocating a pickup is easy .

    1. For sure removing the inertia of a flywheel gives a more responsive engine and it’s painless for the crankshaft.
      For a competion bike, it make sense but for a everyday bike how do you get the 12v power for the front light, break light, for charging the batterie etc ?
      Removing the high voltage coils while keeping the low voltage ones lose the balance of the flywheel…

      I first tried to use a classical wall wart 220/12v transformer in reverse mode, and it load the capacitor well ….until you fire a spark.
      After being shortened by the SCR, the transformer take ages to oscillate again, due to the magnetic core remanence. Those core only work at low frequency 50Hz or so but have dysfunction at higher frq.
      It would work for a lawn mower but not more.
      At high frq the core as a tendancy to warm up.
      In short the world of magnetic field is mysterious and building a home made transformer is really the trickiest part when building this DC-CDI !!

      1. Mechanically: a flywheel gives the inertia needed for the engine to run steady without RPM changes and vibrations.
        Vibrations can destroy other parts.

        Electrically: A flywheel often/always act as a stator: magnets excite the rotor that give the High Voltage for ignition.
        This HV can be build by a DC-CDI from the +12v battery

        but the flywheel is also used to produce low voltage (12Vdc) for light and battery charging.
        => Without flywheel, the battery won’t be charge (you need to charge it regularly)

        It also include a metal bar that trigger the pickup to give the timing for the CDI thus for the spark.
        => Without flywheel, you need to setup a pickup on another rotative part of the engine or install a lightweight flywheel just to trigger the pickup.

        In one word: removing flywheel “can” be done in race conditions only (short and risky) not for everyday life…

  2. This project was very nice, I am keen to make,but my trouble hex file for this version are the same as AC CDI v6. Where can I download it. thanks

    1. Hi,
      There is one little difference in the pinout between AC-CDI v2 (output pin8) and DC-CDI v6 (output pin9)
      So you cannot use HEX from DC-CDI v6 here unless you modify the PCB of AC-CDI to use the output at pin9 (like DC-CDI)

      If you want another curve than the 3 at DC-CDI contact me by PM.

  3. The SCR used in your circuit (BTV58) is a Gate Turn Off type.
    Is it used in this format in this configuration or can I substitute say for example a BT151..?
    Thanks Jeff

  4. my bike is twin cylinder waste spark ignition system,..my question this cdi can handle 2 ignition coil(because 2 cyl) or 1 ignition coil with 2 output (waste spark ig coil) or not?…or i must modify this circuits into 2 power.

    1. If you engine work with wasted spark, this CDI can drive:
      – ONE DUAL output ignition coil.
      – TWO single coils in parallel but you’ll probably need to increase the capacitor value to 2uF as the charge double.

  5. Ok, this is my problem, I am modifying a Aprilia 1000 RSV engine and wish to build a simple ignition system for it. Can I just use two of your units? each unit fires two coils.

    1. What do you mean by “preset value” ?

      The position of the pickup Before Top Dead Center??
      this value depend on the v6 curves
      it can be 20 deg btdc for one bike, 36 for another etc etc

  6. Hola muy lindo proyecto . Necesito una curva que tenga un avance inicial menor a la de honda s50 . Hice el DC/CDI PARA UNA YAMAHA YBR 125 . GRACIAS .

  7. Sorry for write in spanish . Hi, very nice project. I need a curve that has an initial advance lower than that of honda s50. I made the DC / CDI FOR A YAMAHA YBR 125.Or can you give me a map for yamaha ybr 125 or yamaha fz 16 . THANK YOU .

    1. Hi
      no worries but use English preferably!
      I can’t know the map of YOUR bike but fill in this excel file with the map you want and send it back to me using the email address on the left hand.
      (there must be no error in the file or it won’t work)

    1. it’s a DIY transformer so we don’t know how it will behave, if it will produce lot of transient surges or not…
      It will certainly work but if you want a reliable CDI it’s best to add this mosfet protection.

  8. I think it is easy to understand,I’ll start from here,the software is simpler than your version7,thank u thiery…assalamualaikum for u

    1. Atem, watch out! AC-CDI and DC-CDI are not the same. At first you must know what type you really need.

      v6 is simpler then v7 but for any advance modification you must send me a new excel file and I have to write a new HEX.
      It’s not great for you and for me. it’s a waste of time and you are not by yourself.
      On the other hand I know that I don’t offer ready to build DC-CDI in v7…

  9. hello lol i be back ,
    y aura t il prochaine des circuit imprimer en vente de ce model ?
    ou est il preferabale que je le realise par mes propre moyen
    j ai cru lire dans les commentaire plus haut que si l on connecter la led1 au pin 9 on pouvait donc utiliser la programmation du ac cdi v7?
    et donc ne pas vous embeter pour chaque programmation

    1. Non entre le schema AC-CDI v2 et le DC-CDI v7 il y a de trop nombreuses différences. Il faudrait refaire un circuit imprimé complet.
      Vu que je développe une autre version AC-CDI v8 pour l’instant, je n’ai pas le temps d’en faire une version DC-CDI v8 mais c’est prévu fin 2017 j’espere…

  10. desoler changement d avis je vais realiser le module d amplifacation appart est utiliser le ac-cdi comme base
    le pad3 pour l arriver de S1
    le pad4 pour S2
    piloter avec le pad 6 le transistor t2
    quelle est votre avis sur ceci?
    (biensur surment 2 ou trois composent a retirer et des diodes uf5400 a rajouter

    1. oui ca doit fonctionner mais c’est la sortie du PIC qui en meme temps declenche l’etincelle et bloque le convertisseur.
      Donc la pin1. Prenez le signal a la cathode D4 (avant R7) plutot que PAD6. Ca marche peut-etre avec PAD6, Bref faut tester!
      (Pas de diode uf5400 a rajouter)

  11. Dc or ac cdi won’t confuse me,u know terry..that make me so confusing is just about programing the pic,I like your attension I’m so thanks to u to give us idea,becouse reading this link I can study so many things about microcontrol,I ever modifi a 100cc honda with mechanical centrifugal like added in old vehicle,I set the device beside overhead like honda CB series,it was work great,by changing cap value with higher,becouse in this sistem there is not waste spark anymore,but of course it’s a waste money projet.

  12. One thing I wanna tell u,I even could not use a laptop or pc,I bought it about a month ago,and I asked the shop keeper to teach me to start it on and shut it off before before leaving his shop.now I’m waiting a friend to install my laptop with axcel 2010 like what u’ve wrote in version 7 cdi,I really interested about modifing and changing the ignition curve..once again so thanks to u..

    1. You can also use Linux with LibreOffice that can read Excel files. It’s free and lightning fast.
      I know development is a waste of money at least at the beginning but you learn a lot beside…

  13. Hello Thierry thank you to share your project

    Treatment of simulating in Proteus8 and I don’t find the UC3845N
    it is possible to replace it for another that if this in Proteus

    1. Hello Bely,
      The motorola family contain:
      or if you find another PWM Controller…
      At least don’t simulate this part, it’s not the most critical one. The UC3845 works. That’s it!

  14. Hi thierry,,I’ve made the version 6.7,I burn the 628a with your honda cup110 software,the cdi is in ON THE ROAD test,it works extremely great on honda grand 100cc,I move forward the pick up coil to 30 degres btdc,factory standart is 15 degres btdc.next I wanna try make your dc cdi but using your version 7 software,so I can write my own curve,my own motorcycle is dc sistem,or mabye I’ll try to put a transistor as a final switch,so it will drive a discharge coil(TCI),
    Thanks to u…your explanation is so simple to aplied.
    Assalamu’alaikum for you.

    1. Glad to hear that AC-CDIv6.7 works great on your Honda Atem !

      You are right, converting a CDI into a TCI mean to control a transistor instead of a SCR but NOT ONLY…
      The software must be a little bit different because it’s not when the trans. goes ON that you got a spark but when it goes OFF !
      The trans. must be ON during the so call “dwell time” so to say 1ms BEFORE the spark.
      See: http://www.sportdevices.com/ignition/ignition.htm

      You can build your own DC-CDI v7 if you mix the HV part of DC-CDI v2 (UC3815 + transformer) with the PIC v7.9. Pay attention to the different pinout.

  15. Thanks to u,I’ve been thinking it,u’re right, converting a source code is out so far from my ability,dwell angel is so confusing.and I actually hate against spike from coil igniter..I have broken a lot of darlington trans,mosfet and igbt.burn much money…
    at last I think it’s better to play with scr,simple and cheap,even for old 4 cylinder

  16. Hi thierry,
    I want ask you about pickup sensor, how to change the degree from 36 to about 15 btdc?
    Then every trailing edge of magnetic fields every stock bike is different value, can it ignore by this schema if i only change stock ignition degree to 36? As far i know the trailing edge is construct wave pulse form

    1. You can’t change the pickup position in the V6 software. I need to rewrite the code for each different need.
      If you need a DC-CDI for any bike, I suggest that you mix to replace the hardware part circled in red by the v7 hardware.

  17. Bonjour,
    es qu’il y a une référence ou un type de “transformateur” a acheter pour éviter de le fabriquer?
    encore merci pour votre partage!

    1. ETD19,29,39 (puissances différentes) sont des carcasses a bobiner soi-même. Dans ce genre de transfo, je doute qu’il y en ai deja bobiné avec pile les valeurs nécessaires… en tout cas je n’en connais pas mais je n’ai pas vraiment cherché.

  18. Bonjour Thierry, je suis un débutant et je souhaite me lancer dans la fabrication d’un dc-cdi pour une moto actuellement équipée d’un ac-cdi. Je sais repérer les composants sur le schéma mais pas comprendre leur fonctionnement. Pensez-vous que cela soit réalisable ? Ma machine est un xt600. Merci.

    1. Bonjour Arnaud
      Je déconseille pour un débutant a cause de la partie DC-DC convertisseur qui est le plus délicat a faire fonctionner, difficile a reproduire et souvent assez instable…
      Je te conseille d’utiliser un module DC déja construit associé avec l’AC-CDI v7.9.
      Pour plus d’infos me contacter par le lien “Contact Us” en haut a dr.

  19. Hi thierry,

    Can we use this dc cdi unit for 4 cylinders motor bike engine?
    I have suzuki bandit 250cc bike.
    If not plz advice me how to accomplish my requirement,
    Thank you.

    1. Hi

      No this unit is for 1 cyl only (and some 2 cyl).
      You could use this cdi on a 4 cylinders with a distributor.
      But Suzuki bandit is distributorless!

      Theoretically, you need 2 units driven by individual pickup.
      Each units drive a DOUBLE-COIL so it’s a WASTED spark system.
      pickup 1 drives CDI N°1 which operate cylinders 1 + 4
      pickup 2 drives CDI N°2 which operate cylinders 2 + 3

Leave a Reply

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

5 + 2 =