DC-CDI 89C2051

[ARCHIVE] An old project from  Thomas Schattat from Germany.



  • Adaptable to other single-cylinder bikes.
  • Tuning of the advance curve (255 points).
  • Software source available (.ASM).
  • 7.500RPM max
  • Compact & economic.
  • Don’t need a alternator.
  • Need a battery


Designed for a TT600R, this ignition is generating the High Voltage needed to load the capacitor.
It doesn’t need a AC alternator.

Circuit MC34063
DC-DC converter control circuit” switch on/off the primary coil of L1 transformer at 25KHz.
The transformer has a ratio of around 10, so the secondary gives 10 times the primary voltage.
The secondary voltage is half rectified by D3. There is around 160Vcc that charges C2 capacitor.
The energy in the spark is E=0.5 * C * U*U (joules,farad,volts)

At 12.000 rpm, with a scope we measure that the time available to charge a 1uF capacitor is 5ms
To go from 0 to 320volts in 5ms, it needs an Energy of:

E=0.5 * C * U*U
E=0.5 x 1 x 10-6 x 3202
E=0.5 x 1 x 10-6 x 102400
E=0.05 joules = 50mJ

25 to 100millijoules are enough to get a spark.

0.05J for 5ms => Then for 1 second (1000ms):
1000ms/5ms x 0.05j = 10 joules
To convert in Watt: 1 joule = 1 Ws (watt second) so 1 joule during 1 second = 1 watt
E=10 watts.

The dividing bridge R17 + R14 fixes the potential at AIN0 entry to 2.9volts.
D5,D6 protect the entry from over-voltage.
The positive pulse of the signal goes to gnd by D4
The negative pulse pull down the voltage at AIN0 pin, this is detected by the processor, which calculates the necessary delay then provide a zero volt pulse to Q1 transistor.
The transistor turns ON and blocks the inverter circuit MC34063 so that it does not produce any more High Voltage.
Q1 triggers T2 SCR Gate at the same time. T2 then discharges the preloaded C2 capacitor into the ignition coil.
The coil amplifies this tension by approximately 100 and puts out 20.000volts to the spark plug which generates a spark.



RPM Limitation:
Over 8000 RPM, the ignition is off (line 54)
Under 588 RPM, the ignition is off (line 56)

Advance calculation:
Between the maximum and the minimum RPM, the ATMEL processor measures the duration between 2 pickup pulses in 400us steps to know the speed engine in RPM.
According to the speed, the processor searches the related position in a 256 values map. (line 59)
The processor find the delay value (lines 105 to 116).
Then the proc. waits for this delay [in 100us steps].
At the end of the delay, a 400us length pulse is sent to the thyristor.(line 90)

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.
This SCR’s gate pulse duration can be change line 90, but without impact on the spark duration.

You can change directly the values from the table (lines 105 to 116)

And don’t forget:
The timing delays in the assembler program are based on a pickup coil mounted about 58° before TDC, different bikes may have different positions here!



Watch out! This is an old project exposed to be inspirational. You can have a hard time to update it for recent AVR-ASM compilers….

Assembling the .ASM file in a .HEX file with a assembler: AVR-ASM | ASM Introduction | GavrAsm



Schematic Schematic Eagle v4.11 Composants
Schematic.PDF Schematic.SCH liste.txt


PCB Circuit imprimé.PNG Eagle V4.11
Cuivre & composants.PDF Cuivre & composants.BRD


Software Source Excel
cdi8.ZIP mapXLSB10.XLS

Compiled with http://www.batronix.com/
You can remove the line “INCLUDE 89C2051.mc” if your compiler doesn’t need it but make sure that the ports I used are known by the assembler, otherwise you’ll get a different error.
Also the syntax may not completely be accepted by your compiler and you may have to tweak a bit.


L1: naked transformer available at Conrad Electronics

order #:51 66 43
Primary coil : 25 turns 0.5mm wire
secondary coil: 160 to 180 turns 0,15mm wire

Important : Leave a little air-gap between the 2 metal parts by slipping a bit of paper for example.

Another How-To build the transformer.


– This ignition on a BMW F650 Enduro:

22 thoughts on “DC-CDI 89C2051”

  1. Hi all.
    It’s a very simple design I will try to build.
    I have done a search in Conrad electronics for the transformer parts and I can’t find it with this part number. Please, could you please send the links?


  2. Hi guys,
    Can you help me? This CDI fitted on my own Gilera Rc 600 electric starter 12V (1989)?
    My motorbike (4 strokes, one cylinder)had an DC-CDI Denso.
    Factory advance values are: 7° a 1200rpm – 30° at 4000rpm (one output for low rpm and one for high rpm)

    1. Hi,
      It should probably work using the high rpm output. But it depend on how is the pickup signal (tension, polarity) and if he is referred to ground…
      In some cases, it can need a input interface.

  3. hi 2 questions

    1st, will a ATMega328 chip as used in the Ardino platform work with the code?
    for use on twin cylinder machine with 2 pick-ups (one for each cylinder) how would the code be adapted to deal with 2 channels? im also considering instead of the capacitor system maby use a transistor (something like DIP132 Bosch coil driver) to drive a DC coil

    1. Hi,
      – No it’s not the same code between this 89C2051 and the ATMega that power the Arduino
      – it’s must be entirely rewrite! Or you may use 2 separate cdi, one for each cylinder.
      – Then it will no more be a DC-CDI but a TCI meaning the electronic AND the software are differents!

  4. Hello friends, I am looking for help from you. I can not handle HEX file for TT600R if any of you has a working I will be very grateful to send it to me !!

  5. Hello,
    I need DC CDI without any delay or advance (controlled by external electronic unit).
    How can i use this schematic to build it without 89C2051?

    1. Hello,
      The “external unit” must be able to drive the SCR and put the DC converter off during the spark.
      It could be connected to R1 and replace the ATMEL processor.

        1. Hi,
          The link is in Chinese and I don’t read it…!
          I suppose EFI stands for Electronic Fuel Injection
          There is nothing common between EFI and CDI! I mean some “black boxes” can drive both CDI (inside the bbox) and EFI but mine are JUST a CDI and cannot drive a EFI.
          Sorry I really don’t understand what you are trying to connect…
          It’s impossible to draw a schematic of smth I don’t know and I don’t understand.

          1. Thierry,
            All i need is a standard analogue DC CDI module without any advance.
            This Electronic Fuel Injection system controls advance by generating standard pickup signal to DC CDI box (with calculated delay in Engine Control Unit).
            I know that i can buy the cheapest DC CDI for GY6 but i didn’t know if there is any advance (even 2 steps) in this modules.
            Maybe now You can understand me?

            I’m from Poland in Europe.
            I don’t understand Chinese to
            I’m using google translate.

  6. Thank You Thierry, i will try it.
    One more thing, can i replace D3:BA189 with something else (i couldn’t get it)?

  7. Hi Thierry,
    do you have scheme and asm file for 4 cylinder’s CDI? it use total 2 coils ( one coil for two spark plugs). from the manual it has ignition timing 13* BTDC below 1500 +- 150 r/mins and 35* BTDC above 2350 +- 150 r/mins.

    1. Multi-cylinders:

      If the sparks distribution is mechanical with the use of an Delco distributor
      =>my CDI works BUT 2000rpm in the XLS file for 1cyl equal 1000rpm for 4cyl.

      but if there is distributorless with multiples coils (ie: 4 coils for 4 spark plugs, 2 coils for 4 spark plugs) the CDI must drive each coil at the right moment but my CDI cannot, there are just able to drive only one coil (or 2 coils in parallel).
      =>my CDI won’t works


      my CDI works on BMW as they are opposed twin/4 strokes, and needs only one spark every 360°, the very same as a single cylinder/2 strokes.
      HT coil is double, so it generates at the same time 2 sparks, and one is wasted as the other cylinder is on its exhaust stroke.
      =>my CDI should works

      For bi that are not opposed, => my CDI won’t work


      If there is no separate pickup and the timing is done by using the High Voltage of the alternator
      =>my CDI won’t works

      If there is a separate pickup providing at least 3 volts
      =>my CDI should works
      but you eventually have to reverse the signal to get a positive signal first in order to have a good timing.

  8. Hello Thierry,

    I am facing a problem with compiling the file CDI8.asm. I am using two programs: Batronix Prog Studio and Keil uVision 5. There are two syntactical errors. I am not familiar with programming and I would like to ask you to send me a ready hex if possible.

    1. Hell Billi
      Sorry but I don’t know about AVR, as I wrote this soft is not mine. The author said in the comment section:
      “;Also the syntax may not completely be accepted by your compiler and you may have to tweak a bit.”
      The new/other syntax is certainly not too hard to find.

      Also you can use and adapt the ATTiny which is better and simpler:


  9. Hi Thierry,

    I am French residing in Hungary, having strong problem as follow…
    Please help to resolve incredible problem created by lack of ignition (CDI-DC type) for my motorbike Regal Raptor DD 125E (from 2008, copy of Honda Rebel) absolutely new, bough as scam in Austria and actually uselees !
    Thank you to say which of ready to use of your kits cna by adapted to my problem ?
    Please answer, after which I will send you some pics.
    Thank you andhave anice day

    1. Hi,
      Why don’t you give ALL information ?
      I had to google for this unknown brand to discover it’s a 2cyl !
      All CDIs here are for ONE cyl with ONE pickup.
      Depending on the architecture, it can work on TWO cyl if there have only ONE pickup.
      See: https://transmic.net/v9/doc_cylinders_strokes.pdf

      https://transmic.net/2016/07/17/dc-cdi-16f628-v2/ is a DC-CDI and use a software that let you program the advance curve with a PIC programmer.
      For more discussion PM me directly.

Comments are closed.

Shopping Basket
Scroll to Top