- Easier start when cold
- For SINGLE cylinder (and SOME TWO cylinders).
- Advance curve is in EEPROM and is freely modifiable
- Rev until 20,000 RPM/330Hz
- Pickup position can be freely set from 0 to 360°
- Accurate (0.15°/8000RPM).
- Need a 6 or 12 volts battery
- Current drain: 2mA to 1.5A
- Power: 40mj
- No need of HV source coil on the stator
- Autotest jumper
- Kill switch connection
- Dimensions: 91 x 58 x 28mm – 67g
WHAT DO YOU NEED?
|PCB, DC-DC Converter, Electronic components
and Programmed 16F1827 PIC microprocessor
(Source code is not available.)
|Everything is provided within a KIT in the SHOP section.|
|Schematic||Hardware Version V7R7C9|
|Create the ignition timing curve||Excel file v79r25c1|
|To program your own advance timing map.||PICKIT3 software|
|To burn the 16F1827||PICKIT3 programmer|
|Wiring||Connect the DCCDI to the bike|
HOW DOES IT WORK?
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.
The pulse length is adjustable from 500us until 5ms or can be automatically adjusted.
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).
– When no pickup signal is detected, DC converter stops and goes in sleep mode. (2mA)
– Power selectable:
– 40 millijoules (40 mJ) with R7.
Transistors need heatsinks if this unit run at 10.000rpm longer then 1 minute.
– 50 millijoules (50 mJ) without R7 resistor. (video) Always add heatsinks!
– HowTo wire the DC converter to the PCB?
– Some measurements done on scope.
– 1 input for inductive pickup with 1 signal per crank rev.
– Pickup must puts out 3 to 30Vac
– Points, reluctors, Hall sensor, optical sensors can be used as long as they give only 1 pulse per revolution.
– This CDI works with 1 pickup and 1 reluctor (the metal strip on the flywheel) [A,B].
– This CDI works with 2 pickup and 2 bars [E,F].
– This CDI DOES NOT work with 1 pickup and multi-pulses pickup (ie 2 reluctors on flywheel) [C,D].
– This CDI DOES NOT work with 1 pickup and missing tooth flywheel [G].
How to calculate the Pickup Position?
Pickup wiring.Click here for more info...
Variable Reluctance coil (VR)
PIC processor ONLY detect the positive going edge of the trigger pulse.
That mean the FIRST pickup pulse coming to the processor MUST be Positive!
– If this is the case (like Yamaha, Kawasaki most often) connect the pickup to J10 input and close JP2 solder pad in PN position.
– If your pickup gives out a NEGATIVE first pulse, (like Honda, Suzuki, Zongshen, KTM most often), the timing will be bad…
There are 2 solutions:
1) Just invert the 2 wires that come from the pickup to the CDI if none of them are internally connected to GND!
2) connect the pickup to J9 input and close JP2 solder pad in NP position.
(This way Q2, Q3 transistors will reverse the first Negative signal so it becomes Positive.)
HALL EFFECT SENSOR
Most often, Hall sensor output are default HIGH, going LOW when a magnet pass in front of them.
To use an Hall sensor with ACCDIv79 or DCCDIv79 you need to invert the signal with one NPN transistor then connect to JP10 (JP2 solder pad in PN position.)
The PIC that comes in the KIT embeded 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!
The PIC comes with an empty Eeprom. Before to use it, 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 curveClick here for more info...
- Use the Excel sheet (in download section above) to define the timing curve for your bike:
- Only change the yellow cells.
- Enter the pickup position (which is slightly more than the max timing advance your bike uses) in cell F5.
- Select the number or cylinders (cell O24) and the number of strokes (cell O25)
(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.
- Select the maximum RPM by changing the variable TIMER1 in cell B9.
- Play with prescaler value in cell O26 AND with TIMER1 value (cell B9) until the excel sheet displays the whole RPM range you want and the advance values don’t strike “Out of range” errors.
- 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” Warning 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 !
Warning are not critical, but you won’t get the exact timing you want.
Excel Error are critical.
- 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.
PROGRAM YOUR IGNITION MAPClick here for more info...
The PIC that comes with the KIT embeded a protected software, but the EEPROM zone is empty.
Having no data the processor cannot produce sparks!
You must first fill out the Eeprom zone with the timing you want.
Load the Eeprom file with PicKit3 (IC-Prog or PICkit2 don’t support this PIC.)
Don’t forget to UNCHECK “Program Memory” to avoid wiping out the Firmware!.
- Use a serial/USB programmer then insert the PIC into its socket on the DC-CDI board:
- or use the ICSP connector to program the PIC 16F1827 in situ with PicKit.
- See video of the burning process.
(This video had been done with a 16F1847. For a 16F1827 just select the right PIC but the process remain the same.)
(More info on ICSP in comment section)
The process is also described here: CDI programming with PicKit3 Software
Once done, I suggest you to test the DC-CDI with the “Autospark” feature (JP1 jumper close).
The processor will send sparks independently of the advance timing. This way you can test the hardware first !
Some guys seem to run into issue with Pickit3, here are some info that could help you to Troubleshoot Pickit3
- Error in degree:
Above the last RPM value on top of the XLS sheet, there are no more sparks.
Below: If RPM goes over 10653, sparks stops.
DIAGNOSE with LEDClick here for more info...
– At startup, Led D4 flashes 1 to 4 times and goes off meaning that PIC .HEX software is OK.
If it doesn’t flash, something went wrong with the programming or is wrong with the power line…
– 1 time = PIC has been reset because power went below +5v.
– 2 times = PIC has been reset because +5v power went off.
– 4 times = PIC has been reset because of the RESET pin4.
– blink forever = Eeprom is empty
– When PIC input pin10 is high [>2.4v], led D4 (pin18) is on. So D4 LED pulse with the pickup.
If D4 LED always stays ON, that mean either:
– pin10 is always high! => Measure pin10 and try to lower R9 to 1.8Kohm or less according to the pickup…
– or CDI is in “Autospark” mode.
JumpersClick here for more info...
JP1: AUTO SPARK
– Hook a ignition coil to the DC-CDI, with its sparkplug connected to a solid ground.
– Put a jumper ON so RB2/pin8 is connected to ground.
– Power on the DC-CDI
– LED blinks 3 or 4 times and stay steady ON when 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.
JP2: PICKUP TYPE
– If the pickup gives a Positive first pulse, then connect it to PN input and close JP2 in PN position.
– If the pickup gives a Negative first pulse, then connect it to NP input and close JP2 in NP position.
TroubleshootingClick here for more info...
After a reset:
– If led blinks 3 times it means that +5v has been cut (CDI has been powered off.)
– If led blinks 4 times it means that a RESET occurred (Manual or due to parasitic transient/aka EMI)
Electromagnetic Interference comes when external high dV/dT append nearby the processor.
– Only use ignition coil designed for CDI (not for TCI!)
– Use 5K to 20Kohm spark cap noise eliminator
– Use shielded sparkplug wire
– Ground shift: Sparks induce high current in the ground line. If gnd trace or wire are too narrow, ground level will raise up. Use a separate strong ground wire as close as SCR’s cathode as possible. Don’t use a unique ground path for microcontroller AND ignition coil!
– Add a filter across the SCR (snubber, varistor, Ferrite bead choke)
– Search for bad solder joint
– Use a good power rail strong and stable, can need more caps on it. (100uf + 100nf + 10nf)
– Add 100nF decoupling cap to power supply pins as close to the PIC as possible
– Add 100nF between reset pin (MCLR pin4) to ground
– Lower R1 pullup resistor to 4.7k
– No floating pins. Ground any unused pins if they are at low state.
– Use the last firmware
– Shield the circuit: Enclose the PCB inside a metallic box connected to ground.
PHOTOS.Click here for more info...
VIDEOS.Click here for more videos...
How a pickup works?
Honda CY80 converted from Magneto to DCCDI running until his pickup breaks!
On the bench, measuring DC converter transistors at 52°C
VERSIONSClick here for more info...
- Version 7.9R17r1c0:
- [hard.] PIC 16F628 at 4MHz.
- [hard.] Prototype with a hand crafted transformer.
- Version v7r2c0:
- [hard.] PIC 16F1847 at 16MHz.
- [hard.] Prototype with a complete DC converter.
- [soft.] Bug corrected under 500rpm.
- Version v7r3c1:
- [soft.] Major improvement at low RPM (Works from 42RPM).
- Version v7r4c0:
- [soft.] Alow pickup position from 0 to 360°.
- [soft.] Bug fix when 100us steps
- Version v7r5c0:
- [hard.] PIC 16F1827 at 16MHz.
- [soft.] Power of DC converter: 20mj.
- Version v7r6c0:
- [soft.] Sleep mode if no pickup detected. (only 2mA)
- [soft.] Power of DC converter: 50mj.
- Version v7r7c0:
- [soft.] Accuracy increased
- Version v7r7c1-c2:
- [soft.] Bug fix at 450rpm
- [soft.] Improvements
- Version v7r7c3-c4:
- [soft.] Bug fix between 470-1000rpm
- Version v7r7c5:
- [soft.] Change HV generation
- Version v7r7c6:
- [soft.] Fix HV generation
- Version v7r7c7:
- [hard.] Add D8, change R13
- Version v7r7c8:
- [soft.] Free version increased to 50 trials
- [soft.] improvement to avoid false detection of pickup pulses
- [soft.] improvement to deal with slow rising/falling pickup signal at low RPM
- Version v7r7c9:
- [soft.] Bug fix
- [soft.] Add a reset diagnostic
- Version v7r7c10:
- [soft.] Error fix at low RPM
- Version v7r7c11:
- [soft.] Error fix in Autospark function
- Version v7r7c12:
- [soft.] Add a debug function
- Works on v7r7c8 hardware with SMD parts.
- Version 7R8c0:
- [soft.] Major correction of advance timing at low RPM to ease kick start
- [soft.] Now 160 RPM values are adjustable (+66%)
- [soft.] Lowest RPM is now 100 RPM
- [soft.] Use different step value for low and high RPM to avoid too many XLS warnings
- [soft.] LED blinking at startup can be disable to speed up the start
- [soft.] First measurement of RPM can be disable to speed up the start
- [soft.] Add an optional hysteresis to filter noisy VR pickup
- [soft.] Add Debug diagnosis with LED
- [soft.] Better detection of slow pickup signal
- [soft.] Better protection against EMI
- [soft.] Correction: RPM now changes when 4stk is selected
- Version v7r9c1:
- [soft.] Better accuracy at 400rpm
- [hard.] Add a 1.5A Polyswitch fuse.
- [hard.] New v7r7c9 hardware with SMD parts.
- Version v7r9c2:
- [soft.] Correction of a faulty Tacho output
- Works on v7r7c9 hardware with SMD parts.