In this post we'll learn about a simple circuit which allows a manual adjust feature for the spark timing of a motorcycle's CDI either to achieve an advance ignition, retarded ignition or simply a normal timed ignitions.
After a comprehensive study regarding the subject I was apparently successful in designing this circuit which can be used by any motorcycle rider for achieving enhanced speed and fuel efficiency by adjusting the ignition timing of the vehicle's engine as desired, depending on its instantaneous speed.
Ignition Spark Timing
We all know that the timing of the ignition spark generated inside a vehicle engine is crucial in terms of its fuel efficiency, engine life and the speed of the vehicle, wrongly timed CDI sparks can produce a poorly running vehicle and vice versa.
The recommended igniting time for the spark inside the combustion chamber is when the piston is about 10 degrees after it has crossed the TDC (Top Dead Center) point. The pickup coil is tuned to correspond this and each time the piston reaches just before the TDC, the pickup coil triggers the CDI coil to fire the spark, termed as BTDC (before top dead center.
The combustion done with the above process generally produces a good engine functioning and emissions.
However the above works nicely only as long as the engine is running at some recommended average speed, but for motorcycles that are designed to attain extraordinary speeds the above idea starts malfunctioning and the motorcycle is inhibited from achieving the specified high speeds.
Synchronizing Spark Time with Varying Speeds
This happens because at higher speeds the piston moves much rapidly than the ignition spark can anticipate it. Although the CDI circuit initiates the triggering correctly, and tries to complement the piston position, by the time the spark is able to ignite at the spark plug, the piston has already traveled much ahead of the TDC, causing undesirable combustion scenario for the engine. This in turn results in inefficiencies, preventing the engine from attaining its specified higher speed limits.
Therefor in order to correct the ignition firing time, we need to slightly advance the spark plug firing by commanding a slightly advanced trigger for the CDI circuit, and for slower speeds this simply needs to be reversed and the firing needs to be preferably slightly retarded for allowing optimum efficiency for the vehicle engine.
We'll discuss all these parameters much elaborately in some other article, at the moment we would want to analyze the method that would allow us to achieve a manual adjustments of the ignition spark timing either to advance, retard or work normally as per the speed of the motor bike.
Pickup Timing may not be Reliable Enough
From the above discussion we can conclude that the pickup coil trigger does not solely become reliable for high speed motorcycles, and some means of advancing the pickup signal becomes imperative.
Normally this is done using microcontrollers, I have tried to achieve the same using ordinary components, apparently it looks to be a logically feasible design, although only a practical test can confirm it's usability.
Designing an Electronic CDI Advance Retard Processor
Referring to the above design of the proposed adjustable CDI spark advance and retard timer circuit, we can see an ordinary IC 555 and an IC 4017 circuit which are rigged in a standard "LED chaser light circuit" mode.
The IC 555 is set like an astable that produces and feeds clock pulses to pin#14 of the IC 4017 which in turn responds to these pulses and produces an "jumping" high logic across its output pinouts starting from pin#3 to pin#11 and then back to pin#3.
A couple of NPN/PNP BJTs can be seen on the left side of the diagram, these are positioned to reset the two ICs in response to the signals received from the motorcycles pickup coil.
The pickup coil signal is fed to the base of the NPN which prompts the ICs to reset and restart the oscillations, each time the pickup coil senses a completed revolution by the associated flywheel.
Optimizing the IC 555 Frequency
Now, the IC 555 frequency is adjusted such that by the time the pickup coil detects one revolution and resets the ICs, the 555 IC is able to produces about 9 to 10 pulses enabling the IC 4017 to render a high upto its pin#11 or at least upto its pinout#9.
The above may be set for revolutions corresponding to the idling speed of the motorcycle.
It means that during idle speeds the pickup coil signals would allow the 4017 outputs to travel through almost all the pinouts until its reset back to pin#3.
However, now let's try to simulate what would happen at higher speeds.
Response at Higher Vehicle Speed
At higher speeds the pickup signals would produce faster signals than the normal setting, and that would in turn prevent the IC 555 from generating the stipulated 10 pulses, so may be now it would be able to generate say around 7 pulses or 6 pulses at a given higher speed of the vehicle.
This in turn would prevent the IC 4017 from enabling all its output to be high, instead now it would be able to conduct only as far as pin#6 or pin#5, after which the pickup would force the IC to reset.
Dividing the Flywheel into 10 Advance/Retard Divisions
From the above discussion we can simulate a situation where at idle speeds, the outputs of the 4017 IC is dividing the pickup flywheel rotation into 10 divisions, wherein the bottom 3 or 4 pinout signals can be considered to be corresponding to the signals that may be occurring just before the actual pickup coil triggering signal, similarly the pinout high logics at pin#2,4,7 could be simulated to be the signals appearing just after the actual pickup coil triggering has gone past.
Therefore we can assume the signals at the lower pinouts of the IC 4017 to be "advancing" the actual pickup signals.
Also, since the resetting from the pickup pushes the IC 4017 high to its pin#3, this pinout can be assumed to be corresponding the pickup's normal "recommended" trigger....while the pinouts that follow the pin#3, that is the pinouts2,4,7 could be assumed to be the signals corresponding to the late signals or the "retarded" signals, with respect to the actual pickup triggers.
How to Set up the Circuit
For this we first need to know the time required by the pickup signal to generate each alternate pulses.
Suppose you record it to be around 100 millisecond (an arbitrary value), this would imply that the 555 IC needs to produce pulses at its pin#3 at the rate of 100/9 = 11.11 ms.
Once this is set, we can approximately assume the outputs from the 4017 to be producing high logic across all its outputs which would gradually "recede" as the pickup signals become faster and faster in response to the vehicle's speed.
This would induce a receding "high" logics across the bottom pinouts of the IC 4017, therefore at higher speeds the rider would get an option of manually resorting to the lower sets of pins for triggering the CDI coil, as shown in the diagram (see selector switch options).
In the figure we can see a selector switch which can be used for selecting the pinout triggers from the IC 4017 IC for triggering the CDI coil.
As explained above, the lower set of receding pinout high logics once selected, would enable an advance triggering of the CDI coil and thus allow the rider to achieve a self adjusting automatic advance firing of the CDI coil, however this must be selected only when the vehicle is running much above the recommended normal speed.
Identically if the rider contemplates a lower speed for the vehicle, he can toggle the switch for selecting the "retarded" timing option, available across the pinouts that are just after the pin#3 of the IC 4017.
During the recommended normal speeds the biker can opt for the pin#3 as the triggering output for the CDI which would allow the vehicle to enjoy an efficient ride at the given normal speeds.
The above advance/retard timing theory was inspired from the explanation as expressed in the following video:
The original video link which can be watched on Youtube, is given below:
How to Make the Above Concept Automated
In following section I have explained the method of upgrading the above concept to an automatic version using a tachometer and an opamp circuit stages. The idea was requested by Mr. Mike, and designed by Mr.Abu-Hafss.
Technical Specifications
Greetings!
Interesting stuff here, im currently laying out traces on CAD and would like to etch this on some PCB but i would rather have the selection of advance standard or retard left to electronics...
I am a bit new to this but feel as though i have a pretty good grasp on the concepts at play...
my question is, are there any articles you have on automating the advance selection based on engine RPM? oh and a parts list of the various components would be spectacular???
Thanks, Mike
The Design, by Abu-Hafss
Hi Swagatam
Referring to your article on advance, retard ignition spark CDI for enhancing high speed motorcycle efficiency, I would like to comment that I haven't yet came across any situation in which RETARDation (or more precisely DELAY) of firing of the sparks is required. As you mentioned, mostly bikes (racing bikes) fail to perform in high RPM (typically above 10,000RPM) so advance firing of spark is required. I had almost same idea in my mind, but could not test physically.
Following is my proposed addition to your circuit:
To automate the switching of firing spark between NORMAL and ADVANCE, a tachometer circuit can be used with a few more components. The voltmeter of the tachometer circuit is removed and the output is fed into pin #2 of IC LM741 which is used as a comparator. A reference voltage of 10V is assigned at pin #3. The tachometer circuit is designed to give 1V output against 1000RPM thus 10V refers to 10,000RPM. When the RPM is more than 10,000, pin #2 has more than 10V and hence the output of 741 goes low (zero).
This output is connected to the base of T2 hence, low output switches on T2. If the RPM is below 10,000 the output goes high and hence T2 switches off. At the same time T4, which is configured as signal inverter, inverts the output to low and the same is connected to the base of T3 hence, T3 is switched on.
Regards
Abu-Hafss
bob wilson says
Hi Swagatam,
Very interesting concept and a beautiful idea but with my limited (extremely) knowledge of electronics would it be possible to incorporate a variable control to cover 10 btdc and 10 atdc so you could tune as you ride- very much as in the old days when you had a mechanical advance/retard on the handlebars of the bike- and how would you do this in your diagram?? I am not sure about the tacho idea someone proposed because this just measures the input frequency from the coil- which is exactly what you are already doing???
Swagatam says
Thank you Bob, Glad you found the post useful!
Since this idea was created by me a long time ago (2015), I don’t quite remember all the minute technical details of the working of this concept. So I am not sure how this can be adjusted according to your specific requirements.
I guess the 555 IC frequency will need to be tweaked for getting the adjustments fixed as per your requirements, but I am not sure about the exact calculations.
I will try to give it some more effort, and let’s see if i am able to figure it out or not…
Adrian War says
Good night, I need a diagram of a CDI with self-delay to adapt it to a 2t motorcycle, specifically an MZ ETZ 250, since I have a normal one, that is, a fixed point and they have me. commented that with this improvement the efficiency of the motorcycle, they could help me, thanks in advance
Swagatam says
Hi, thanks for your question, currently i do not have this design with me, I will try to investigate more and let you know if i happen to find anything useful…
Adrian War says
Thank you for answering, I have found places but they are paid and from Cuba where I am it does not work, within your possibilities put it as a task, greetings.
Swagatam says
Thanks for your feedback, I will surely investigate and let you know if I find any relevant information…
Cepiburhanudin says
Hi, can you provide the automated version of the schematic? I plan to make it for my motorbike.
Swagatam says
Hi, the concept is not tested yet, therefore I would recommend testing the concept on work bench first, and only then try to finalize the design for implementing it practically.
So the circuit first needs too be thoroughly tested and optimized before finalizing.
Jozef Balaz says
I am asking for your advice. I have a Yuki CSR motorcycle that I am really struggling with. Replacement parts for it are no longer available and I am annoyed with the injection unit. I replaced the injection with a carburetor, and it probably would have worked if the damaged injection control unit was not partially serving the ignition module. Therefore, I need to install a separate ignition. The engine is a two-cylinder, four-stroke, with a crankshaft that is designed with connecting rods on one side. This means that both pistons go down at the same time, and both pistons go up at the same time. One ignites, the other ends the exhaust phase. I’m considering the commercial (https://www.aliexpress.com/item/1005004068350176.html?pm=a2g0o.order_list.order_list_main.15.21ef1802MCCkIU) and when that doesn’t work I’m determined to introduce yours. What I need is to keep the stator, rotor and (probably inductive, because 12V doesn’t go into it) ignition sensor, from which two wires go. It is this one: https://www.ndmoto.cz/snimac-otacek-5/ It is because of design reasons.
My question is (may be it is so obvious that you would not consider it important to mention it): One wire should probably go to ground, and the other should be the input to the unit, right? …And probably does not matter which one goes where. Right?
Thank you very, very much in advance for your answer.
Swagatam says
Hi, thanks for the question. Regarding the speed sensor, it is not clear what type of sensor is used inside the module, and whether it has polarity for the output wires or not. You can perhaps test the output of the sensor with a DC millivoltmeter and check if it has a polarity, I think it should.
Let me know if you have any further questions.
Jozef Balaz says
Hello there.
I completed all the things yesterday. I mean the ignition sensor, ignition module, and necessary wiring for the experiment. I can say, that it works (at least on the table, if not on the motorcycle, where I am going to install these things in a few days). Regarding your question: The ignition sensor provides a voltage pulse. If one side is grounded, the other provides a positive voltage pulse. This pulse is 15–40 mV high, and in combination with the ignition coil, it provides spark (not very emphatic). This is the reason I am going to buy a more powerful and, most importantly, double coil. I would really be afraid to connect two simple coils to one pulse source of the ignition module because of interference.
Swagatam says
Hi, thanks very much for the update, it sounds great.
Hope to hear more from you regarding the project.
elvin says
please make circuet for hei 4 pin ignition module advance retard capabitili I dont know if your cdi circuet wuld work on hei ignition system or any other way to phase shift an inductive pick up coil or please make variabel ignition module circuet that works on pick up coils
Steven R Jaffe says
Some people may have confusion because they are utilizing sensors already installed in the motor which are designed for use with a very advanced control unit’s algorithm. I found a place to epoxy a small magnet on a pulley and was able to install a 3144 hall sensor in a fashion where it is would be too early if fired at that time at idle, but this circuit delays the pulse at idle, so it is perfect, then when you pass 3000rpm have it delay less perfect at 5000, you no longer need delay…..having the hall sensor helped me understand the operation and it’s currently working well.
Steven R Jaffe says
You show a capacitor “Cx” assuming that is to absorb emissions that might affect the operation, has anyone figured out an actual value for that capacitor? Love this page, learn so much from the people here. Thank you.
Swagatam says
Thank you for your valuable feedback. Cx will need to be determined through a practical testing, and adjusted to suit the requirements.
arky says
hello, glad to see this being pursued.
from a small engine point of view, there is a ton of low cost cdi units, but they are all fixed at 10btdc, or the “racing” units are fixed at 35-50btdc. having a stand-alone unit that could control the timing of these units would be great.
there are variations, but the “standard” firing signal from the pickup coil is a “falling plus at zero volts”. this can be a sine, square, or pulsed dc. i’ve ‘scoped it, seen the actual pickup output referenced against tdc.
so when the pickup coil pulses plus+, and then falls back across zero to pulse (-), that’s “the trigger”. this is set to occur at 0deg btdc as a base timing; adjustments to timing are then made either by mechanical (centrifugal, vacume advance) or electronically in non-fixed-timing cdi units.
so when starting the motor, the cdi sees the first two pulses, calculates the next 3rd based on the interval, and fires 0-10deg early. once up and running, it would calculate advance against rpm, which are knowable /plot-able frequencies.
pickup coils are ether going to pulse once per rev (= wasted spark in a 4-stroke, fires at top of exh stroke as well), or once every two revolutions, ie any pickup run off the camshaft (turns half-as-fast).
a switch for these two types of inputs would be useful.
(4stroke wasted spark); so, referenced against a clock-chip, 0deg adv till 500hz @ pickup input, then straight line advancing till 25-30 deg btdc @ 2000hz or so. flatten the curve there. that would be a great start, useful for lots of small engines.
the magnetic pickup coil on my single cyl motorcycle puts out < 1/2vac while cranking/starting, to maybe 5vac at 3000rpm. i've seen automotive magnetic pickups put out 17vac at higher rpms.
Swagatam says
Thank you for this interesting information.
Aba khadija says
A more simpler way to automate the choice among retard – normal – advance is by modify the throtle grab to a circular switch following the spin of the throtle. A pin and 3 circular copper sheets, glued to the throtle mechanism at slightly distance each others can be applied.
Swagatam says
Thank you for the valuable suggestion, hope the readers will find it useful
Tommy says
Hi I am new to this site.Do you have any schematic drawings of PVL CDI ignitions. Thanks.
Franklin L. Blackstone says
Hello Swagatam, I have a project to run a 5 HP Briggs engine that uses fuel that needs to be ignited at 5 degrees after TDC. Since this is magneto powered and will run at a constant speed there is no timing adjustment. I have heard it can be done using a 555 circuit. Which of your designed circuits would you recommend. I attempted to comment through the article Adjustable CDI spark advance/retardCircuit and was blocked for
Swagatam says
Hello Franklin, In the above concept I have tried to create an arrangement which could be applied for getting the desired advance or retard feature in an ignition system. So probably you can try this concept and check whether it works for you or not.
Another idea could be using IC 4060, which can be configured to generate pulse with the desired delay, after each revolution. If possible I will try to update it soon….
dave says
ok that’s fine.
If you get chance I would love you to look into it for me.
Let me know when you do as it still may need doing. obviously happy to pay you for your time
dave says
hi,
Can you contact me via email please. I have a project that will be funded.
Swagatam says
Hi, I appreciate your offer, however due to work pressure I am unable to accept external jobs at this moment.
Danh Le says
We can get speed information from the MCU to replace the tachometer circuit
Marcus Gilliland says
Hi Swagatam, I’m working on a little project where I need to fire an electric magnet based on a rotational speed. Sooner to speed up the rotation, later to retard the rotation and reverse the polarity to stop the rotation. The battery power is coming from a 12volt automotive battery. Is there a way to do this?
Thanks, Marcus
Swagatam says
Hi Marcus, you can use the following concept, replace the motor with your electromagnet. You can also eliminate the IC1 IC2 stages and trigger the N1, N2, N3 from your preferred source.
https://www.homemade-circuits.com/wp-content/uploads/2019/03/motor2Bspeed2Bcontroller2Bcircuit.jpg
Adam says
Hello
I have a motorcycle without a pickup coil. I would like to use a DC CDI box from ebay. Can you please tell me what type of pulses do these CDI units accept as a trigger? Is a 12V spike enough or should it be higher?
Regards
Adam
Hungary
Swagatam says
Hi, yes a 12V spike will be enough, you can also get the same through a Hall effect sensor and magnet arrangement on the wheel of the motorcycle.
Danh Le says
We can get RPM information from the MCU to replace the tachometer circuit. We can copy data from MCU. Thank you Sir
S30ZTurbo says
Hello
Would it be possible to add a pressure sensor to the circuit with a linear 0-5V output so that the circuit would retard the timing gradualy with rising pressure in the intake manifold (for an engine with a turbocharger upgrade) in like two or three steps?
Swagatam says
Hello, this will require some research and investigation before it can be finalized.
Mansor Dimer says
Thanks for sharing your work with us.
Is it possible to use a flyback transformer from a TV as an ignition coil??
Swagatam says
If it has a 100—200V input for accepting the capacitor discharge then yes it can be used.
Salvador Martinez says
Hi Dear friend, I am putting together this project, I have a question, can I change the ignition time by changing the position of the outputs pin 1-11 of the IC 4017? That is, give more initial progress or less, depending on the type of engine you have? The advance is progressive? or does it only change in two stages? Is it as effective as an AC CDI with programmable Pic? I appreciate your excellent comments, thank you, greetings.
Swagatam says
Hi friend, the advance and retard will be progressive but since the output from the 4017 IC is quite limited therefore the progress is restricted with a a few pins of the IC making the process crude.
Alternatively you can try cascading two IC 4017 as described in the following article, and get better progressive response:
https://www.homemade-circuits.com/how-to-make-18-led-light-chaser-circuit/
Swagatam says
sorry it can’t be as efficient as an MCU based design…
Learn by doing says
I’m interesting with this project..please your comment about value R1 100K but R2 100K too. Refer to astable using 555 theory, value R2 must be 1/10 from R1,why in the schematic value R1 same as R2. Please inform the value of Cx, i refer to 0.01 uf..this is correct? Thanks for your answer..
Learn by doing says
Thanks for your quick response and i’m very interesting for your project…but my knowledge about this very low..sory for my bad english. Btw, i will test this circuit and i will inform u for the result.
Can you help me if i want to make programmable cdi with wifi or bluetooth for connection to the notebook?like cdi rextor maybe..of course with the cheapest.
Thank you
Swagatam says
I am glad you are finding my site interesting, however I am sorry I do not a have a programmable CDI circuit at the moment with me.
Learn by doing says
I have been test this circuit but not work. Led work only in normal..led in retard and advance doesn’t work. And nothing volt on output to cdi triger..can you help me? Thanks
Swagatam says
I won’t be able to troubleshoot your circuit….as you can see this circuit is based on a complex working procedure which needs to be understood and set up precisely….I have already explained the functioning principle comprehensively and you must follow each and every section and implement by understanding them thoroughly. also The timing is crucial in the experiment.
before going to the trigger stage first verify the IC functioning through manual inputs, once you are able to setup the basic retard/advance function across the IC stages, then you can proceed to the trigger stage.
Learn by doing says
Hello sir, i just want to report..i design this circuit twice..and not work..the problem same as the first..output to the cdi maybe to high because of vcc from 4017 and 555..maybe you can try this circuit for tested and find the solution. Thanks
Swagatam says
As I said earlier this concept is complex and involves many critical adjustments, you will have to understand and move step-wise…if you try to implement the whole circuit at once, it will never work, it must be built stagewise by confirming each stage systematically…if you are not able to troubleshoot your design it means you have not understood it well,
alternatively you can take an expert’s assistance in your locality and then try building it again
Vibin Joy says
Confusion with cx?
Rajasi says
In the circuit the voltage pulse coming at T1/T2/T3 collecter is around 0.4 volts.Is it sufficient? (Selected Base is 0 volts,so emitter of selected transistor is at 0.7 volts.saturation voltage is around 0.3 volts)
Swagatam says
the collector voltage should be almost equal to the 4017 output pin voltage connected with the emitter of the transistors, which will be in turn equal to the supply voltage…therefore if the supply is 12V, the 4017 pinout voltage could be around 10V, and the same should be available across the collectors of the PNP
Justin says
Hello. I'm also in the process of designing a total loss ignition controlled by a micro controller.
I just wanted to let you know that as the engine RPMs increase you want to retard the timing, not advance. And conversely at lower RPMS you want your timing to be advanced. You also said "the recommended igniting time for the spark inside the combustion chamber is when the piston is about 10 degrees after it has crossed the TDC" This is not true. Ideal maximum combustion pressure occurs at 10 degrees after TDC. Ideally you want your combustion to begin around 5-20 degrees before TDC. You need to keep in mind that although piston velocity is variable, combustion speed is a constant.
Swagatam says
Hello, I have uploaded the video from which my theory was inspired, according to this video, as the engine speed increases the spark timing must be proportionately advanced so that the combustion does not lag behind due to the delay, and the compression is able to take place at the optimal point.
Denk Peace says
May know many watt for all size of resistor ?
100K preset use the type of VR potensio or trimpot ?
What size resistor to the basic Transistor BC547 ?
And LED are used measuring how, please help Sr…!!!
Swagatam says
all are standard parts, nothing is specific.
https://www.homemade-circuits.com/2015/09/how-to-identify-component-specs-in.html
Ryan Leikness says
This is over my head! But I learn as I go I want to make something like this for my bike. I will be running a turbo on my bike and I've been told 1 degree retard per psi of boost . This person told me set timming 29 degrees and run all out but it will be crap off the line . I rather have a unit that can be played with . What would it take for this to be in my hands?
Swagatam says
the above concept will need to be first tested on a work bench, then refined, optimized, customized, and only then it could be practically implemented in a particular bike…and all these will need to be done by an expert, so at the moment it may not be recommend for any newcomer.
Edwin Nugraha says
Wow, very very innovative,
This circuit can use for stock CDI?
Do you had test it?
How many adjust in degree if set this to advance/retard from stock/normal ignition?
Thanks a lot Mr. Swagatam
Swagatam says
thanks, it has not been tested but I am sure, it will work, since the stages are very obvious.
However the 10 outputs from the IC4017 means only 10 divisions for the pickup cycle which can be crude, it needs to be around minimum 36 divisions which could the response much accurate…it could be achieved by cascading more number of 4017 ICs.
Denk Peace says
Tanks alot
Denk Peace says
Thi is circuuite for AC CDI or DC. CDI …sr???
Swagatam says
it is for both
expectum says
innovative , efficient and cheap solution.
thanks lot Mr Swagatam.
Swagatam says
you are welcome expectum
mike3684 says
Greetings!
Interesting stuff here, im currently laying out traces on CAD and would like to etch this on some PCB but i would rather have the selection of advance standard or retard left to electronics… I am a bit new to this but feel as though i have a pretty good grasp on the concepts at play… my question is, are there any articles you have on automating the advance selection based on engine RPM? oh and a parts list of the various components would be spectacular??? Thanks, Mike
Swagatam says
Thanks for understanding and appreciating the concept!
I have not yet published the automatic version of the above, possibly I'll try to finish it soon and post it in this blog