脈絡なくブログに書いていたカブ系エンジン用自動進角CDIについて、作り方をまとめます。
ブログでは2機種のCDIを作成しましたが、これらはどちらもプリント基板を切削していたのでそれなりに設備が必要でした。
今回は最小の設備で作れる様にユニバーサル基板(穴あき基板)に手ハンダで作成する方法をご紹介します。
また進角を設定する為のコントローラーは次のステップとし、まずはPC上で進角を設定する前提としています。
なお今回ご紹介するCDIはキャブレター時代のカブ用CDIで、AC式とか言われるものです。他の機種では動作しない可能性があります(特にバッテリー式CDIの機種だと無理)。
また古い6V車での動作は未確認ですが動作する可能性はあります(ArduinoNANO基板内の電源レギュレータIC次第)。
まず最初に、ブログに載せたCDIの2機種を紹介
1号機・・・ArduinoNANO+パラレルでコントローラーに接続


コントローラー(今回はまだ作らない)

参考・・・純正CDIは下の写真の物です。これを今回のCDIで置き換えます。

そして今回紹介するCDI
ArduinoNANOを穴あき基板に搭載(後でシリアルコントローラー接続可能)

仕様詳細
・マイコン:Arduino NANO(純正又は互換品)
・基板:ユニバーサル基板(2.54mmピッチの穴あき基板)
・プログラム:2024年7月12日にブログに投稿したのと同じ。
・対応車種:キャブレター時代のカブ、モンキー等のAC式CDI車
部品
必要部品を表にまとめました。
参考の購入先リンクも記載しています。
部品集めの前に知っておいた方が良い情報
- 部品表ではマイコンボードArduinoNANOは純正品へのリンクを記載しています。AmazonやAliexpressで売られている互換品でも問題ないですが、USBインターフェースIC:CH340用ドライバをPCへのインストールが必要な場合があります。
- ArduinoNANOとPC間を繋ぐUSBケーブルは「ミニB」と言われる古い規格が定番なので、お使いのArduinoNANO基板のコネクタを確認の上で準備願います(AliexpressにはマイクロBやタイプCのコネクタを備えたArduinoNANOも売られているようです)。
- ArduinoNANOにはピンヘッダをはんだ付けしてソケットに挿しますが、通常付属しているピンは太いのであまりお勧めしません。部品表に記載の細型ピンヘッダが便利です。
何れにしてもソケットとの嵌合を確認してからはんだ付けしてください。 - 6極カプラはエーモンの#1200でオス側だけ使用します。
- ギボシ端子や平端子はウィンカーリレーの配線から分岐させて12Vを取り出す為なので手持ちがあれば適当な物を使ってください。
- XHコネクタ(4pin)は将来的にコントローラーと接続する目的につき、コントローラーを使わない(PCとUSB経由で接続するだけ)なら不要です。
- 実際にバイクに実装する時は何らかの防水を考えてください(濡れると壊れるので)。
その他工具
ハンダゴテ、ハンダ、カシメ工具、PC、USBケーブル、テスター(マルチメーター)
回路図
回路図は下の通りです。

配線
下図の様に配線します。
この図は上側(部品面)から見ていますが配線は下側(裏面)に対して行います。
青色線はめっき線、赤色線は被覆線で配線します。
太い青線は大電流が流れるのでなるべく太い配線を使用します(メッキ線2本で配線するとか)。
基板外部に取り出している線の内、12V以外は6極のCDI用カプラに接続します。
12Vの配線はギボシ端子等を経由してバイクのどこかから12Vを引っ張ってきます。

下の様な裏返した図を見ると配線時に間違う確率が減ると思います。。

製作例
表面

裏面(あまり綺麗にできてないですが)

6極カプラ・12V入力線は以下の様に接続します。

ArduinoNANOに書き込むプログラム(ファームウェア)
本体用→https://www.hoihoido.com/data/CDI-AC6.zip
作り方
その前に、部品が新品なら恐らく問題ないと思いますが、一度動作させた部品を流用する場合、1μFのフィルムコンデンサに電荷が溜まっている可能性があるので適当な抵抗(数十~数百Ω)で放電しておきましょう。適当な抵抗が無い場合はコンデンサの2本のリードを直結しても良いですが、もし電荷が溜まっていたら火花が出るので気を付けてください(ガソリンとか無いところで・・)。
これをやっておかないと他の部品を壊したり、手で触った瞬間にバチッと電撃を喰らう可能性があります(私は何度か喰らいました)。
では作り方・・・
- ユニバーサル基板上に部品を載せてみます。
マイコンボードはピンソケットだけ搭載し、全て配線及びチェックが完了した後でソケットに挿します。 - 基板の裏面にメッキ線で配線していきます。
図中、太線で示した配線は瞬間的な大電流が流れる部分なのでなるべく太い線を使う方が良いです(メッキ線を2本束ねて配線するとか被覆電線の被覆を剥がして使うとか・・)。
赤で示した線はメッキ線を跨ぐので被覆線で接続します(ここは細い被覆線があればそれでも良いです)。 - 一通り配線が終わったらテスターの抵抗レンジで一通り導通/ショートのチェックをします。
- 6ピンカプラ、12V入力ギボシ端子をカシメて接続します。
- PC上でArduinoIDEを立ち上げます。
ArduinoIDEをインストールしていない場合は「ArduinoIDE インストール」でググると解説サイトが沢山出てくるので参考にしてください。Arduinoを全く初めて使用される方は手始めにLEDの点滅(通称Lチカ)サンプルを実行してみられるのが良いと思います。 - CDI用ファームウェアをダウンロードしてzip圧縮を解凍します。
- この中のCDI-AC6.inoというファイルをダブルクリックするとArduinoIDEが開く筈です。
- PCとArduinoIDEをUSBケーブルで接続します。
WindowsPCの場合はデバイスマネージャーにてCOM番号を調べておきます。 - ArduinoIDEのメニュー:ツール→シリアルポートから、該当するCOM番号を選択します。
- ArduinoIDEのメニュー:ツール→ボード→Arduino AVR Boardsから、Arduino NANOを選択します。
- 「マイコンボードに書き込む」ボタン(=左矢印みたいなボタン)を押すと暫くコンパイルを実行した後、マイコンに書き込みます。これでエラーが無ければ書込みは完了です。
- USBケーブルを外し、Arduino NANO基板を先ほど作成したCDI基板に挿します(向きを間違わない様に)。
確認
一旦Arduino NANOをソケットから抜きます。テスターを抵抗レンジにして12V入力端子とGND間を測定し数MΩ~無限大であることを確認します。OKならArduino NANOをソケットに挿します。
Arduino NANOにUSBケーブルを挿してPCと接続します。この時Arduino NANO上のLEDが点灯することを確認します。もし点灯しなかったらどこかがショートしている可能性もあるので直ぐにケーブルを抜きましょう。
問題なくLEDが点灯し、PCが認識(COMポートが現れる)していればひとまず安心です。
このCDIの機能
ここでこのCDIの機能を説明しておきます。
このCDIは進角設定をA,Bの2グループ保持し、コントローラーから随時切り替えて使う事ができます。
そして各グループは4つの数値を持っています。この数値が左から1000rpm,3000rpm,5000rpm,7000rpmの進角値を示します。
デフォルトは次の値ですが、一旦変更した値を書き込むと次からはその値を覚えています。
| Group | 1000rpm | 3000rpm | 5000rpm | 7000rpm |
|---|---|---|---|---|
| A | 17 | 22 | 30 | 32 |
| B | 27 | 27 | 27 | 27 |
各進角値の間は直線で補完し、1000rpm以下は全て1000rpmの設定値、7000rpm以上は全て7000rpmの設定値を使用します。
図にするとこんな感じ・・・

なお車体からCDIに送られるタイミング信号はカブ標準の27度の瞬間を前提としています。
なのでフライホイールのウッドラスキーを取払って取付角度をずらす改造をされている場合はその分ずれてしまうので要注意です。
進角設定および状態確認
※2024.8.4追記
下記に記載の方法が結構面倒で分りにくかったのでWindowsのGUIを使ったツールを作りました。
こちらを使う方がやりやすいです→カブ系エンジン用CDI 設定ツール
PCから進角設定/確認を行う方法です。
本来は専用のコントローラーから設定を行う様に作ったのでPCからの変更はちょっと面倒になっていますが可能です。概念としてはコントローラーの4つのボタンを押す代わりにPCから文字を送るという方法です。
まずArduinoIDEのツールメニュー→シリアルモニタを選択するとシリアルモニターのウィンドウが現れます。ウィンドウ右下にある設定部分で改行コードが「LFのみ」、伝送レートが「115200bps」である事を確認し、異なっている場合は設定した後、ArduinoNANOボード上のリセットスイッチを押してください。
すると下図の様な表示が出た後、「R: 0」が延々と繰り返し出てきます。スクロールが邪魔な場合は左下の□自動スクロールのチェックを外します。

この表示は本来コントローラーとやり取りする情報を文字にして観察していることになります。例えば「R: 0」は回転数が0rpmである事を定期的に送っているのです。
で、先頭行に「O:a 17 22 30 32B 27 27 27 27」というのが見える筈です(電源投入直後だけ何やら文字化けした様なのが数文字出る事がありますが無視してください)。
ここでO:は現状の進角設定を示し、その設定値が「a 17 22 30 32B 27 27 27 27」ですよという意味です。この中の「a 17 22 30 32」はAグループの1000rpmは17度、3000rpmが22度、5000rpmが30度で7000rpmが32度という事を示します。Bグループは全て27度を示します。
ここでAグループが左、Bグループが右に表示していますが、左側が現在使用中のグループである事を示しています。A,Bの大文字/小文字の違いは下で説明します。

操作
コントローラーを接続した場合であれば4つのボタンで操作しますが、現時点ではボタンに相当する下記の文字をPC上のシリアルモニターから入力します(この辺りがちょっと面倒)。
Enterボタン→E
UPボタン→U
DOWNボタン→D
Cancelボタン→C
例えばCancelボタンに相当するのはシリアルモニター上部の入力窓にCの文字(大文字です)を入れた後PCキーボードのENTERキーを押します。
これらのボタンの基本的な意味は、Eが選択、Cがキャンセル、Uは数値アップ又はカーソルが右に移動、Dは数値ダウン又はカーソルが左に移動です。
以下の説明では「Eボタンを押す」という様な表記をしていますが、実際にはPC上のキーボードで「E+ENTER」と入力します。
以下操作の例です。まずはAグループの進角値設定から・・・
なおここでは便宜的に電源投入状態(又はリセット直後)を標準状態と呼びます。
電源投入直後(標準状態)
O:a 17 22 30 32B 27 27 27 27
Eボタンを押すと現在選択されているグループの変更モードに入り下記の表示が出ます。
E入力
E: WR *17 22 30 32
ここで先頭のE:は変更モードを示し、*マークはカーソルが現在選択中の項目を示します。この例では*17というのが1000rpmの設定を選択中で、この値が17度である事を示しています。
1000rpm以外を変更したい場合はUまたはDボタンを押すと*マークの位置と共に項目が切り替わります。例えば5000rpm(現在30度)を変更したい場合はUを2回押すと5000rpm(30度)の手前に*マークが移動します。
U入力
E: WR 17*22 30 32
U入力
E: WR 17 22*30 32
ここでもう一度Eを押すと*マークが文字化けの様なマークに変り変更状態になったことを示します。
E入力
E: WR 17 22⸮30 32
この状態でU又はDを押すと現在30度である5000rpmの設定値が上下します。例えばUを1回押すと進角値が31度に変ります。
U入力
E: WR 17 22⸮31 32
値設定を終えたらE又はCを押すと*マークに戻り、カーソルを動かせる状態に戻ります。
U入力
E: WR 17 22*31 32
一通りの進角値を入力し終えたらU又はDを何度か押して*マークをWRの手前に移動させます。
U又はDを幾つか入力
E:*WR 17 22 31 32
ここでEを押す事でマイコン内の不揮発性メモリ(EEPROM)に書き込んだ後に標準状態に戻ります。
Aグループの5000rpmの設定値が31度に変化していて電源を入れ直してもこの値が採用されます。
Eを入力
O:a 17 22 31 32B 27 27 27 27
なお書き込まずにCを押す事でも電源投入直後の表示に戻りますが、書き込んでいないので値は元のまま30度です。
Cを入力
O:a 17 22 30 32B 27 27 27 27
A/Bグループ切替
標準状態からUまたはDを押すとAグループのA文字が大文字に、Bが小文字に変ります。
U又はDを入力
O:A 17 22 30 32b 27 27 27 27
ここでEを押すとBグループが有効になるのでBが左側に表示されます。
Eを入力
O:b 27 27 27 27A 17 22 30 32:A 17 22 30 32
要は小文字になっている状態でEを押すとそのグループが有効になるのです。
この状態で動作はBグループに切り替わっていますが、まだEEPROMに書き込んでいないので電源を入れ直すと元に戻ってしまいます。EEPROMに書き込むには以下の様に一旦変更モードに入ってWRを選択します。
Eを入力
E: WR *27 27 27 27
Dを入力
E:*WR 27 27 27 27
Eを入力
O:b 27 27 27 27A 17 22 30 32:A 17 22 30 32
※なお最初はノーマルに近い進角設定から動作確認をしていく方が良いと思います。
バイクに取り付ける
ここまでくればバイクに取り付けてみましょう。
元々のCDIを外し、作ったCDIの6ピンカプラを挿します。

次にどこかから12Vを引っ張ってきてCDIの12V入力に接続します。但しバッテリーから直接取ってくるのは止めた方が良いです。最低限ヒューズを経由した後で、また極力キースイッチも通した後から引っ張ってくるのが良いです。
私はウィンカーリレーの配線から分岐しました(CDIの近くですし)。
壊れたウィンカーリレーの接点を流用して下の様な分岐線を製作しましたが、普通の平端子を使っても良いと思います(このため上の部品表には平端子を記載しています)。

最後に自動進角を確認した時の動画を載せておきます。(フライホイールがサビだらけですけど・・)
回路図とファームウェアを使用される場合の注意
本ページの回路図やファームウェアを参考にされる場合は事前に「免責・著作権・肖像権・リンク」のページを御一読願います(要は何か問題があっても責任持てませんよとか、自作するのは自由ですが販売とかを考えられるなら相談してねとか、そのあたりです)。
追記
- 2024.8.4
PCからの設定方法、最初に記載した方法が面倒で分かり難かったのでWindowsのGUIを使ったツールを作りました。
こちらを使う方がやりやすいです→カブ系エンジン用CDI 設定ツール - 2024.9.1
「免責・著作権・肖像権・リンク」ページへのリンクが切れていたので修正しました。 - 2024.9.1
別件でArduino-NANOをバイクに載せていたら、猛暑日にモジュール内のコンデンサが壊れました → https://www.hoihoido.com/blog/mc-cbf125t-tacho-3/
密閉環境だったし、中華製互換品なので個体の問題もあるかもしれませんが、本CDIでも12V電源の入り口に対策をすると多少安心できると思います。またできるだけ風通しを良くするのも効果があると思います。
