カブ系エンジン用自動進角CDI ~その3~ シリアル接続で小型化する。

カブ系エンジン用自動進角CDI自作の続きです。
先日の自動進角CDIですがサイズが大きくてカブに積み辛かったので小型化しました。
またコントローラーとの接続がパラレル接続だと線を伸ばし難かったので、シリアル接続に変更する事で扱いやすくします。

シリアル接続するにはコントローラ側にもマイコン(本体同様ATmega328p使用)を載せる必要がありますが、配線を伸ばせるとコントローラーをハンドル近くに設置してタコメーター代わりにも使えるのです。

回路図

まず本体側・・・
シリアル化によりコントローラーとの接続本数が減ってスッキリしています。

そしてコントローラー側。
こちらはマイコンを追加しています。また本体からケーブル経由で12Vを供給するので、コントローラー内に5Vを作り出すレギュレーターも載せています。
ケーブルを通す電源は5Vにしても良かったかな?LCDのバックライトに比較的大電流を流すのでレギュレーターを通す前の12Vを使ったんですが。。。

そして本体基板のパターンを設計。
なお図では両面基板ですが実際には片面基板に切削して表側(赤色)パターンはジャンパーで配線します。
シリアル接続にした事でコンパクトになり、ほぼ純正CDIと同じサイズにできました。
追記:前回はArduinoNANOの基板を載せていましたが今回はATmega328Pを直接実装したのでこれも小型化に効いていますね。

あ、レギュレーターの極性を間違っている!

基板はいつもの様にCNCで切削します。
ところで切削で使う刃物は以前からオリジナルマインドさんで売られている「土佐昌典VC」を使っていますが、だいぶ前から使っているので刃先が劣化して切り跡ががケバ立ってきました。
これ、最近オリジナルマインドのページで見つけられなかったので販売が終了したのかと思っていましたが実は探し切れていなかっただけで、またちゃんとあった事が判り、今回新たに購入しました(1本¥2980円。これ凄くイイんですがちょっとお高いんですよね)。

まあとにかく切削実行!・・・結果、下の写真の様に上下に2回切っていますが、下側は深さ0.15mmで切削したら深すぎたので上側の0.1mmでやり直しました。
使い古した刃物で0.1mmだと切れていない事があったので0.15mmにしたのですが、断線したところがあります。
やはり新しい刃物は切れ味が良く0.1mmでバッチリです。

今回は表面実装のマイコンを載せるのでピッチが細かく、また高圧部分もあるので短絡の心配を減らす為に不要パターンを手作業で剥がしました。

そして部品を搭載。レギュレーターの極性を間違っていた部分はパターンをカットしてジャンパーで修正しました。
その後ArduinoNANO用ブートローダーを書込み、そしてファームも書込みます。

部品搭載後の表側。
高圧用コンデンサは前回のと見た目が違いますが1μF,630Vの同等品です。
コントローラーとの接続用に4pinのXHコネクタを設けています。

そしてコントローラー側のパターンも作って・・・

切削!
こちらは実験的に不要銅箔もCNCで取り除いてみたところ、切削時間は大幅に伸びますが手作業で剥がすよりも楽です。刃物は半月刃を使っていました(土佐昌典VCは切れ幅が狭いし第一勿体ないので)。
切削直後はまだ細い銅箔が残っていますが、これは手作業で除去します。

そして実装(裏面)

本体に接続するケーブルは4芯接続なので古い電話線を使ってグルーガンで補強しています。
またコントローラーは前回と同じケース(MDF材で作成した)に収めています。
現状MDF材ですが、ずっと使うなら防水が必要ですね。

本体側は3Dプリントしたケースに収めます。
これも現状オープン状態ですが、十分にテストした後は樹脂で埋めて防水するつもり。

では前回と同じカブ(息子が50ccをボア/ストロークアップした107ccエンジン搭載車)に積んでみます。
CDI本体の小型化によりサイドカバーを閉めやすくなりました。

コントローラーは長めの4芯ケーブル(古い電話線)で接続。

ケーブルを1.5m程度に伸ばしたので見やすい場所にコントローラーを設置できる様になりました。

走った感触

点火部分はソフト、ハード共に前回から変わっていないので走った感触は前回のままです。

ファームウェア(Arduinoスケッチ)を掲載

試行錯誤の後が残ったままで汚いですが現状のファームウェアを掲載します。
マイコン(本体、コントローラー共)にはArduino NANOのブートローダーを書き込んだ上でこのスケッチを書いています。なのでもし追試される方はArduinoNANOをそのまま使う方が手っ取り早いかもしれません。

本体用→https://www.hoihoido.com/data/CDI-AC6.zip

コントローラー用→https://www.hoihoido.com/data/CDI-AC_Control.zip

なお前回の投稿ではコントローラーをパラレルで接続していました。今回の本体用ファームはシリアルコントローラー、パラレルコントローラー、どちらにも使用可能です(前回投稿の回路図で作ったCDIに書いても使える)。

回路図とファームウェアを使用される場合の注意

この回路図やファームウェアを参考にされる場合は事前に「免責・著作権・肖像権・リンク」のページを御一読願います(要は何か問題があっても責任持てませんよとか、自作するのは自由ですが販売とかを考えられるなら相談してねとか、そのあたりです)。

カブ系エンジン用自動進角CDI ~その2~ 107ccカブに積んでみる。

前回、自作の自動進角CDIを50ccカブに積んでみて効果が今ひとつ体感できなかった事を書きました。
その後、息子がもう一台ジャンクの50ccカブをボア、ストロークアップにより107cc化したので、そちらに積んでみたところ、効果が見られました。

107ccカブ(なお原付2種としてちゃんとナンバー取り直してます)
自動進角CDI

はっきり効果が見られたのは低速側です。
純正CDIの点火タミングは全回転域で上死点前27度(BTDC27°)に固定されているのに対し、自作CDIはアイドリング回転数付近は17°に設定しています。これにより、まずキックスタート時のケッチンが発生し難くなりました。また走り出しの加速もスムーズです。
一方高速側は最大37°程度にしてみましたが効果があるのか無いのか判りません。50cc程度なら急な上り坂で全開走行を試せるかもしれませんが107ccともなると公道で試す訳にいかず、多分サーキットとかシャーシダイナモで試さにゃハッキリしない気がします。

そして・・・

いずれにしても50cc用純正CDIよりは良くなるので107ccカブではこのCDIを使います。
という事でもうちょっと安心できる形にしたいと思います。現在の状態(上の写真)だと雨の日は心配ですもんね。

という事で純正CDIと同程度のサイズになる様、以下の点を踏まえて作り直そうと思います。
・ArduinoNANOを載せるのをやめてATmega328pを直接載せる。
・コントローラーとの接続をUARTに変更する事で、本体⇔コントローラー間の配線本数を減らす。
・最終的には樹脂で埋めて防水する。

では下記の基板パターンで試作してみます。まずは切削で基板を作る予定。
・・・なのですが切削用刃物がだいぶ劣化していて上手く削れなかったので刃物入荷待ちです。

まとめ

50ccエンジンだと効果が感じられなかったけど、107cc化したエンジンでは特に低回転側で効果がありました。
なお90ccカブの純正CDIが15°~28°の間で変化する様なので高回転側をあまり増やしても効果ないのかもしれません。実際はどうなんでしょうね?
どなたかこのCDIを試してみられますか?

カブ系エンジン用自動進角CDI

先日ミニマム構成なCDIを作った事を書きました。今回は自動進角機能を盛り込んでみます。

※5/7追記:この記事で純正カブの進角を28度と記載していますが、正しくは
 27度でした。 1度の違いで大きな影響はないと思いますが訂正いたします。

進角について

ここで言う進角とはエンジンの点火タイミングの事です。よくあるエンジンの行程説明ではピストンが上まで上がり切ったタイミング(上死点)に点火していますが、実際には混合ガスが燃え広がるのに時間を要するので上死点よりも少し早めにプラグに火を飛ばします。
この時どれくらい早めに点火するかをクランクの回転角で表し「進角xx度」と表現します。

我が家にある(1995年頃の)スーパーカブ50では回転数に係わらず進角は28度辺りに固定されています。28度というのはピストンが上死点に達するよりもクランクが28度早いタイミングでプラグに点火する事を意味します。
情報によると90ccのカブでは15度~28度の自動進角CDIになっているとか。またDAYTONA製CDIをレーシングモードにすると22度~37度位を自動進角する様です。

構想

スーパーカブ50ではフライホイールの回転角をピックアップコイルが検出してCDIにパルスを送ります。CDIではこのパルスが入ったら即時プラグに点火するので、進角が28度固定となっています。
よって自動進角する為に28度よりも遅らせるにはアナログ的な遅延も可能ですが、進める事は簡単にはできそうにありません。だってピックアップパルスよりも早く点火信号を出すのですもの。。。


これを可能にする方法ですが、多分それ以前の回転数を元に次の回転数を予測し、ここぞというタイミングに点火するしかなさそうです。(車体側を改造してピックアップタイミングを大幅に進めてしまえば遅らせる処理だけで済みますが、改造のリスクが大きそうですし。。。)
この複雑な動作を実現するにはマイコンで処理するのが良いでしょう。

という事でピックアップパルスをマイコン(Arduino-Nano)に入力し、良い頃合いに点火信号を出す仕組みにしようと思います。

回路

以下の回路でやってみます。
ACジェネレーターの電圧をコンデンサやサイリスタを使ってイグニッション信号を出す部分は前回のミニマムCDIと同じです。
違うのはピックアップコイルのタイミング信号をマイコン(Arduino-Nano)に入力するあたりで、このマイコンがタイミングを見計らってサイリスタのゲートを駆動します。
また設定変更用にコントローラーを接続する為の13pinのコネクタを設けています。
なおマイコンを動作させる電源は車体からDC12Vを貰う事にし、Arduino内部のレギュレータで5Vに落としています。

コントローラーは次の回路で、ボタン4つとLCD(よくある1602タイプのヤツ)を接続しています。

作ったハードウェア

最終的には防水する必要があると思いますが現時点はこんな状態でテストしています。

フラットケーブルの先には設定用コントローラーが繋がっていて回転数毎の進角を変更できます。
またカブにはタコメーターが無いのでLCDに回転数を表示します。
コネクタで接続しているのでセッティングが決まったら取り外して本体のみで使用します。

Arduinoに入力するDC電源は写真の様な分岐線を作ってウィンカーリレーの配線から分岐しました。

ソフトウェアの動作

まずArduino-NanoのEEPROMにマップデータを保存します。
マップデータは4点の回転数(1000,3000,5000,7000rpm)に対応する進角値とします。各数値の間は直線で補完し、1000rpm以下は1000rpmの設定値、7000rpm以上は7000rpmの設定値を用いる事にします。
グラフにすると下の様な感じ(具体的な値は実験中)。

横軸が回転数(rpm)、縦軸が進角(度)

動作としてはピックアップパルスが入る度にタイマーで一つ前からの時間を測定し、それを回転数に変換して上記マップに基づいた進角値を求め、次に点火するまでの時間を算出します。
この時、ピックアップタイミングの28度よりも点火タイミングが遅い場合と早い場合に応じて色々と処理が分かれます。

まず28度よりも遅い場合・・・
下図の様に進角28度のタイミングで車体からパルスが来るので、ここからAの時間分遅らせた赤線のタイミングで点火します。その後のTと書いたタイミングが上死点です。

28度よりも早い場合・・・
1周期よりも少し短いBの時間分遅らせて点火する事で、次の周期では28度よりも早い赤線のタイミングに点火します。

面倒なのは28度よりも遅い状態と早い状態を切り替えるときです。

遅い→早いに切り替わる場合・・・
切替りの周期ではA,Bの2発の点火信号が必要となります。

早い→遅いに切り替わる場合・・・
こちらは逆に全く点火させない周期が発生します。

遅角を予定していたのに次のパルスが来てしまった場合。。。
回転数が下がってくる上がっていく時には予定していた点火タイミングよりも先に次のパルスが来てしまう事も考えられます。その場合はとりあえず直ちに一発点火を発生させます。

ちょっと面倒でしょ。でもまあこれらの考えられるパターンへの対応をプログラムしていきました。

動作させてみるが・・・

実車に繋いでタイミングライトを当ててみます。
本来ならアクセルを開けると回転数が上がるに応じて進角も進んでいく筈ですが、少し遅れて進角が進みます。特にアクセルを閉じた時は逆に進角が大きくなり、十分回転数が落ちてから進角が戻ります。
どうやら回転の加減速が早いので直前の周期が次の周期と同じ前提だと無理がある様です。

加減速予測

対策として回転数の加速/減速を加味して次の周期を予測する事にします。具体的には前2回分のパルス間隔の変化(=加速度)が次も続くと仮定する事にします。
更に4ストロークエンジンでは一回転毎に燃焼する為パルス間隔も変動している可能性があるので一回置きに計算します・・・言葉で説明し辛いですが図にすると下の様になります。

これで動作させると下の動画の様にそれっぽい動作をする様になりました。

それっぽく動くようになった動画

マップのセッティング

以上で思惑通りに動作していると思います。
そこで実際にカブで走ってセッティング中ですが、今ひとつ進角の効果が体感できません。
車体が古くて本来の性能を発揮できていない事も十分考えられます。。。
点火タイミングだけじゃ大きく変わらないのかな。。。もう少し試行錯誤してみます。


LEDタイミングライト(回転数表示付き)~その2~

先日タイミングライトを作りましたが、エンジンの回転数を上げると揺れて見えるのが気になってきました。常にフライホイールが1度回る時間だけLEDを点灯する様にプログラムしたのですが、数千rpmで回ると1度といっても十数μSとかの時間になってくるのでうまくプログラムを作らないとずれてきてしまいます。

スケッチを書き直す。

という事でタイミングパルス入力→LED点灯までの遅延を最小にするため、割込み処理をインラインアセンブラで書き直してみました。
また前回はLEDの点灯時間をメインルーチン内のmicros()関数の値で判断していましたが、これもタイマー割込みにすることで正確に1度回転する期間だけLEDを点灯する事を目指します。
AVRのアセンブラは初だし、割込み/インラインアセンブラのオーバーヘッドを極力減らすため、レジスタの退避(pushやpop)も含めて手書きしたので色々調べながら作りましたが、もっと効率の良い書き方があるかもしれません。

しかしこれで動作させるとまだ揺れて見えます。むしろ酷くなったような。。。
うーん。では改めて下記回路図(前回と同じ)でのSigとMPULSEの波形を見ていきます。
(Sigはエンジンから来るタイミング信号、MPULSEはマイコンに入れる割込み信号。)

下がその波形でCH1(黄)がSig、CH2(青)がMPULSE。
思いっきりバウンドしていましたね。300μSもの間大きく揺れ、この間に何度も割込みが掛かっている様です。
前のプログラムでもこれが揺れる原因だったのかもしれません。

揺れが約300μS続く内、必要なのは先頭の瞬間のみです。この揺れを抑える為にフィルターを用いると遅延が大きく発生する可能性が高いので、ソフトウェア的に対処します。具体的にはタイミング信号による割込み発生後、次の割込み許可は800μS後にする事でバウンドをやり過ごしました。

スケッチはこちら。http://www.hoihoido.com/data/TimingLight2.zip

以上によってアイドリング~高回転までピタッと止まって見える様になりました!!

でもやっぱりLEDが暗い

しかしやっぱりLEDが暗いですね。前回電源を12V→9V(角型電池)に変更して少し暗くなっていたのが、9V電池が消耗すると更に効いてきて、曇りの日なら良いですが晴天だと日陰でも見えづらいのです。
まず9V電池にした時点で回路図の12Vライン(今は9V)にあるC6が1μFだと小さすぎるのでLED点灯の瞬間少し電圧が下がっていました。これを1000μFに変更して電圧降下は無視できるレベルになりましたが・・・体感光量は大きく変りませんね。
現在LED6個には以下の様な回路で電流を流しています。これに9Vの角型電池とパワーMOSFET(2SK2232)が直列に入ります。

LEDのスペック上のVf(順方向電圧)は3.1Vと記載されているので2個直列だと6.2V。電池が9Vだと5Ω抵抗(10Ωの2並列)には2.8Vが加わるので各LEDには560mAが流れる目論みでした。しかし考えてみると定格100mAのLEDに大幅な大電流を流すとVfも高くなってきますよね。そこで制限抵抗5Ωの両端電圧を測る(160μSのON期間中最後の瞬間をオシロで測定)と、1.76Vしか掛かっていません。電流にすると350mAなので想定よりかなり少ないです。

という事で定格を超える状態でのVfと電流の関係を大雑把に調べると下記グラフの様になっていました。
横軸はLEDを2個直列した合計のVf電圧です。また前半と後半で別個体のLEDで測ったりしているので凸凹しているのはそのあたりの影響だと思いますが大体の傾向はつかめます。

これによると9V電源なら抵抗など無くしても620mA程度でそれ以上は流せません。
当然ながら絶対最大定格を超えているので壊れない保証はないですがデューティーが1/360なので頑張ってくれる事を期待してもっと(1Aとか)流してみたいところです。
案としては現在の2個直列を止めて1個ずつにすればもっと電圧を掛けれますね。
これらはいずれ試すとして今回は制限抵抗無しにしてみました。これで620mAなので現状の約1.8倍になります。

動作しているところの動画・・・まだ暗いけどマシにはなりました。

回転数も問題なく測れています。

以上でだいぶマシになりましたがピーカンの屋外は厳しいですね。あまりそういうシーンはないですが。
・・・これで暫く使ってみて、まだ暗かったら配線(またはLEDの機種)を見直します。

原付バイクのCDIを作ってみる。

前回(タイミングライトの時)書いた様にCDIを作っています。
ネット上では色々試された先輩方がおられるので参考にしながら制作中。
なおCDIとはバイクの点火プラグに火花を飛ばす為の回路です。詳しくはこちら→Wikipedia CDI

上記Wikipediaにも書かれている通りCDIには交流式と直流式があります。
先日イジくったDioチェスタは直流式なのでCDI内部で直流12Vを2~300Vに昇圧し、これをコンデンサに貯めた後、一気にイグニッションコイルに流してプラグに点火します。ざっくり書くと下図の構造になっている様です。点火用の電源は直流12Vだけなので内部に昇圧回路が必要です。
最初はこれを対象に考えていましたが、Dioチェスタは息子が友達に売り払ったのでもうありません。

という事で今回は交流式のカブ系エンジン(カブ50とかJazz50。)を対象にしようと思います。
交流式のざっくりした回路は下図の様な構造。発電コイルが発生する交流が元々2~300VあるのでCDI内部では整流するだけで済みます。これはシンプルで済むのですが直流電源がCDIには入っていないので制御回路に複雑な処理(マイコンとか)を入れようとすると5V程度の電源が欲しくなって、これをどうするかを考える必要があります。

正規品CDIの波形

正規品CDIの動作に当たりをつけるため、Jazz50の波形を見てみました。
※注意:「正規品」と書いていますが中古バイクなので本当に正規なのかというと保証はありません。

まずステーターコイルからCDIに入ってくるAC入力

AC入力は本来正弦波のはずですがCDI内の整流回路の影響でギザギザの波形になっています。
ここから想像混じりですが以下の動作をしていると思います。

まずフライホイール1回転で4サイクル分の交流波形が出て、整流した電荷を段階的にコンデンサに貯めていく。その後点火する事で電荷が抜ける・・を繰り返す。

LT-Spiceで試した結果、整流部分は以下の回路になっていると辻褄が合います(TP1の波形)。
ACジェネレータの内部抵抗は分からないのでとりあえず波形が近くなる値を入れました。
また回路中V2、IGNは電荷を抜く為にあります(実物ではサイリスタに相当)。
ダイオードD2がなぜ要るのかはわかりません。これが無いと負電圧期間が全然違う波形になりますが、それでも動作上は問題なさそうに思えます・・・負電圧期間にD1に加わる逆電圧を減らす為かな?という予想をしています。そうであれば今回使用しているダイオード(IN4007)は逆耐圧1000VなのでD2を無くしても良いかもしれません。

次にタイミング入力とイグニッションコイルに出力する信号を見ます。
CH1(黄色)がタイミング入力、CH2(青色)がイグニッション出力
※2回分の波形が重なってしまいました。
タイミング信号は+の山の後に-の谷が来るみたいですね。この内の+3Vのあたりで点火している事が判ります。

とにかく動作するものを作ってみる。

最終的には進角・遅角機能を盛り込みたいですが、まずはとにかく動作するものを作ってみようと思います。
ネット情報を参考に最初に試したのは下の回路。

C1およびD1,D2でAC入力の振幅を2倍の直流に昇圧してC2に貯めておき、サイリスタ(TY625)にトリガを入れるとC2に貯めた電荷がイグニッションコイルから引き抜かれて点火する仕組みです。タイミング信号はQ1で受け、このままだと逆相になるのでQ3でもう一度反転してからサイリスタのゲートに伝えます。

AC入力を倍電圧整流にしたので上で見た波形にはならない筈で正規版CDIとは回路が違っていると思いますが、まずは確実に火花が飛びそうな方法にしています。またQ1,Q2を動作させるために外からDC5Vの電源を入れる必要があります。正規版CDIはDC電源は不要ですが、これも一旦確実に動作しそうな方式でやってみます。

ではバイク(息子が整備中のJazz50)に繋いで・・・

キックするとあっさりエンジンが掛かりました!!
では波形を見てみましょう。オシロを持ってきて・・・

まずはCH1:タイミング入力CH2:AC入力
予想通りAC入力はグニャグニャで正規版CDIとは違う波形になっています。
真ん中あたりのガクンと下がっているところが点火タイミングでしょう。


次にCH1はタイミング信号のままCH2をC2の左側端子(ほぼC2の充電電圧を表示)に繋ぎ変えてみます。
※タイムスケールは変更しています。
C2は倍電圧整流の効果で600V以上にまで上がっていて、点火の威力はあると思いますがコンデンサやサイリスタの耐圧ギリギリなので、倍電圧整流は止めた方が良さそうです。

では倍電圧整流を止めるためにC1を短絡してみます。
これでAC入力としてはLT-Spiceで試した回路と同じになりますが、今度はエンジンが掛かりません。
掛からないながらもキックの瞬間に撮った波形は下の通りです(プローブは上と同じ接続)。予定通りC2は300Vに下がっています。エンジンが掛からないのは電圧が下がったためでしょうか?


ならば点火エネルギーを増やすため、C2に1μFを追加して計1.47μFにするとエンジンが掛かりました。
(後で考えるとキャブレターの調子が不安定なのが影響していたのかもしれませんが。)
この状態でのCH1:タイミング信号CH2:AC入力波形を見ます。AC入力は倍電圧を止めた事で正規品CDIと似た波形になっています。

次にCH1:タイミング信号CH2:C2波形
C2電圧が少し低くなっています。容量が増えた事で上昇が間に合っていないんでしょうか?
でもこの方がエンジンが掛かりやすいのは容量アップでトータルの電荷が増えているからかな。

結局、1.47μF(コンデンサ2個)は寸法的に大きすぎるので1μFに減らしたところ、これでもエンジンは回ったので1μFを採用します。本当は0.47μFと1μFの間も試して余裕がある事を確認したいところですが、そんなに高耐圧コンデンサを持っていないのです。

以上を踏まえミニマムな構成で2号機を考えます。

まず倍電圧整流は止めます
あと5V電源もなくしたいですね。そうするとタイミング信号をバイポーラトランジスタで受ける事はできません。正規CDIがどうやっているのか判りませんが、たぶんそのままサイリスタのゲートに入れているのではないでしょうか?という事でタイミング信号をそのまま抵抗経由でゲートに入れてみます。この場合ゲート信号が-レベルの時、サイリスタのゲート逆耐圧である-5Vを超える危険があるのでダイオードD3で保護しておきます。
それとエンジンを停止させる機能が付いていなかったのでENの配線を追加しています(1号機では省いていたので停止させるのに手間がかかったのです)。バイクのキーをOFFにした時、ここがGNDに落ちるのでサイリスタがトリガーされなくなって停止します。

という事で2号機は下のかなりシンプルな回路にします。
(たぶん正規品もこうなっているんじゃないかと思っています)

これでもエンジンは掛かったので波形を見ます。

CH1:タイミング入力CH2:AC入力
正規CDIと同様の波形になっています。

CH1:タイミング入力CH2:IGN出力
特に何という事もないですがIGN出力を時間軸を拡大で見ました。


そして回っているところの動画。※音量注意。
なおピザのチラシは絶縁目的で敷いています。

走ってみる。

実際のバイクで走行テストする為、同じ回路で小型版を作りました。
正規品とほぼ同サイズ(コネクタは電線経由ですが)。

適当にビニールテープで絶縁して息子のカブに積んで走ってみましょう。
(上で試しているJazz50はまだ整備中で公道を走れないのです)

カブの正規CDIを外して・・・

いい加減な方のCDIを付けます。

そして家の周りを5分程走ってみました。
特に違和感なく普通に走れるし、走行後も熱を持つ様子は見当たりません。

という事で・・・

ミニマムなCDIを作成する事で理解が深まりました。たぶん正規品も同じ構造じゃないでしょうかね。
この後は進角/遅角機能を盛り込みたいのですが、マイコンを使うとすると上記の通りDC電源をどうするか問題が発生します。あんなガタガタで250Vもある電源から安定したDC5Vを作り出すのは難易度高そうです。空き端子から12Vを入れても良いのですが、そうするとバイク側の改造が必要です。でもできればCDIだけポン付けで交換できる様にしたいですし。。。
なおカブでも90CCのモデルだと進角機能付きのCDIを採用している様で、これがどうなっているのかは気になります。

LEDタイミングライト(回転数表示付き)

先日の投稿以来、原付バイクの電装系が気になっておりCDIを作ってみたくなりました。
CDIというのはエンジンの点火プラグに火花を飛ばすための回路で、エンジンから来るタイミング信号を受けてイグニッションコイルに電流を流すという仕事をしています。

CDIの例

最終的には回転数に応じて微妙にタイミングをずらす(進角とか遅角)事を考えているので、そうすると実際の点火タイミングを確認したくなります。それにはタイミングライトなるものが必要です・・・が、持っていません。

タイミングライトというのは点火プラグに繋がるコードの被覆の上から電極を挟み込んで信号を取り出し、その瞬間にライトがピカッと光るという動作をします。その光でエンジンのフライホイールを照らすと、フライホイールが毎回同じ角度になった瞬間に照らされるので人間の目にはフライホイールが止まって見えるというものです。
フライホイールには点火すべきタイミングの位置に刻印がされているのでこの刻印がどの位置に見えるかによって思い通りのタイミングで点火しているかどうかを確認できるのです。

フライホイールの例

で、タイミングライトの構造をネットで調べてみました。昔からある市販品はカメラのストロボ同様のキセノン管を使っているそうで、ネット上では使い捨てカメラのストロボで自作されている記事が見当たります。
またLEDを使って自作されている方もおられます。
今回、使い捨てカメラを入手するのも面倒なので手持ちのLEDで試してみました。
なお特にLEDの場合は光量が低くて見づらかったという情報が多いので、この辺りを気にしながら作ってみます。

構想

LEDでタイミングライトを作ると光量が足りないという問題ですが、ネットでよく見る例ではプラグコードから検出した信号をそのままトランジスタに入れてONした瞬間にLEDが光るという構造でした。

そこでプラグコードから検出する信号の幅を実測したところ2μS程度しかありません(これはバイクの機種や信号取り出し方法によって差があるとは思います)。
仮にエンジンが1000回転/分(以下rpm)で回っているとすると1回転に要する時間は60mSです。
この場合60mS毎に2μSだけLEDが発光するのでONしている割合は0.0033%。よくLEDを調光する時にPWMを使いますが、デューティー0.0033%でLEDを光らせる様なものなので、これはやっぱり暗いでしょうね。

という事でプラグコードから検出する信号幅に係わらず一定の時間LEDを光らせる構造にする必要がありそうです。
ではどれだけの時間光らせるかですが、まずはフライホイールが回る角度にして1度を目標でやってみる事にします。すると1000rpmの時、60mS/360度なので167μSですね。これでもデューティ0.28%ですが直接よりも80倍以上明るくなるだろうという目論みです。これで足りない部分はLEDに流す電流を増やしてみましょう。

で、LEDですが手持ちにこんなのがありました。12Vで7WのLED。これだと光量はたっぷりとれそうですが試してみると内部に諸々の回路が入っていて瞬間的な発光ができませんでした。

そこでいつだかジャンクで購入したチップLEDを使う事にします。定格100mA、瞬間的には150mA流せる事になっています。

これを2個直列で使用してみます。

試作1号

という事で次のような回路で試してみました。

プラグコードから取り出した信号を4本のダイオードで電圧制限してQ1に入力します。Q1がONになるとQ2とQ3のワンショット回路をトリガーして一定時間分Q4をONにすることでLEDが点灯します。

なお電源には12Vを用いて抵抗経由でLEDに流しますが、ワンショット回路付近はレギュレータで5Vに落として使っています。5Vに落としているのは特に意味はなく、これも試行錯誤の痕跡です。
Q4のMOSFETは2N7000という、あまり大電流を流せるFETではありません。これはゲート容量を低く抑える為で、大容量のパワーMOSFETだとゲート容量も大きくなり遅延が発生するのを防ぐ目的です。

ワンショット時間はC2とR2で決まります。またLEDに流す電流はR5で決まります。試行錯誤の結果、これらの値は上記回路図に対し次の様に変更しています。
C2:0.01μF(回路図通り)、R2:68KΩ、R5:8.5Ω
これで発行時間を約170μSに固定しています。
またR5はLEDに瞬間的に流す電流を決めます。ここでは約0.7Aを流しているのでLEDもMOSFETも定格オーバーですが光量を得るためなのです。実際には1/360の期間しか点灯しないので平均電流だと余裕で定格に収まっているんですよね。実際どうなんでしょう。

そして実際に作ったのがこれ。C2,R2,R5のあたりに試行錯誤の痕跡が残っています。
またプラグコードからの検出には事務用クリップ(目玉クリップと呼ばれるやつ)に電線を繋いで、これでコードを挟んで点火信号を取り出します。
車体アースに接続するワニ口クリップも設けましたが、接続しなくても動作しました(目玉クリップも近づけるだけで点灯した)。

では実際のバイクでタイミングを見てみます。カブ系エンジン(Jazz50)のフライホイールです。

一応「F」マークの位置が見えていますね。
但しLEDの点灯時間が170μS固定なので1000rpmで回っている時はフライホイール1度の期間点灯しますが、仮に1万rpmで回ると分解能10度となってしまい広すぎます(それにLED点灯のデューティも1/36となり破壊のリスクも高まる)。
実際上の動画で若干ブレて見えるのは回転数が高めだったので1度を超えているのだと思います。
できれば回転数に係わらず1度の期間だけ点灯させたいですね。これをアナログ回路で実現するのは難しいので次の試作ではマイコン(Arduino)に頼ることにします。

試作2号

Arduinoで制御しますが、そのまま入れるのは勿体ないので裸のATmega328PにArduino UNOのブートローダを書き込んで使いました。
プラグコードから検出した信号はQ5経由でArduinoのD2端子(ATmega328PのPD2)に入力して割込みを掛けます。
するとD5端子(ATmega328PのPD5)から一定期間のパルスを出し、これをパワーMOSFETのゲートに入れてLEDをドライブします。
今回はマイコンのGPIOがゲートを叩くので多少ゲート容量が大きくても影響は少ない事を期待してパワーMOSFET(手持ちの2SK2252)を用いる事にします。

パワーMOSでドライブすると大電流を流せるのでLEDも2直列×3並列の計6個を光らせてみます。
LEDと制限抵抗は回路図に含まれていませんが下図の様に接続しました。
LEDの定格Vfが3.1V×2個で電源が12V、よって合成抵抗5Ωには5.8Vが加わります。なので各LEDの瞬間電流は1.16Aとなり、定格に対して10倍位多いですがデューティ1/360なので耐えてくれる事を期待しています。
実際手で触った感触では全く温度が上がった様には感じられませんが、もし壊れる様なら電流を減らそうと思います。

LED基板はこんな感じ。抵抗は裏側に付けています。


一方Arduinoのスケッチでは点火信号の間隔を測定しておき、それに比例してワンショットの発光時間を決めています。これにより回転数に係わらずフライホイールが1度回転する時間だけLEDが点灯します。

また点火信号による割込みからLEDオン迄の時間を最小にするため、DigitalWrite関数は使わず直接PORTDレジスタに値を(1バイトまとめて)書き込んでいます。なので後述する液晶ディスプレイはPORTDを避けた端子に接続しました。
なお割込み処理の内部ではdelayMicroseconds関数を使って時間待ちをするという無理やりな事をしています。もしかするとこれによりmicros()関数や1秒タイマーの精度に影響があるのかもしれません。このあたりはArduinoのシステムの動作をきちんと調べるべきですが、影響しても1/360なのでとりあえずこのまま進めます。

そして折角マイコンを載せるのならと液晶ディスプレイに回転数を表示してみました(1秒毎に割込みを掛けてその間のパルス数から算出しているだけなので分解能は高くないです)。

一時CBF125Tのタコメーターとして働いていた液晶ディスプレイを流用

実際動作させてみた時の写真。上とは別のバイクなのでタイミングマークが分かりにくいのですが、明るくはなっているし回転数を上げてもタイミングが見えています。

ケースに入れて最終形態にする。

このままだと使いづらいのでケースに入れたいと思います。
ただ電源に12Vを入れるのは面倒なので006Pの角型9V電池にしました。これによりLEDに流れる電流は約半分になり、少し暗くなりましたがまあ使えます。制限抵抗を減らしても良いのですが当面このままで試してみます。


測定中の動画

以上で点火タイミングを確認できるようになったのでCDIを作れる準備ができました。
で、対象とするバイクは当初は先日修理したDioチェスタを予定してしていたのですが、息子が友達に売り払ってしまった(原付バイクが沢山あり過ぎて邪魔だといったのは私です)のでカブ系エンジンのバイクに変更しようと思います。
Dioチェスタはバッテリー式CDIだったので12Vから250V程度に昇圧する必要がありましたがカブ系は最初から250V程度の交流を元に点火するのでCDI内部では整流するだけで済みます。
実はもう実験を始めているのですが、それはまた次のお話・・・。

最後に参考用としてArduinoのプログラムを載せておきます(言うまでもないと思いますが、これを参考にされて何か起こっても責任は持てません)。

スケッチ(Arduino UNO用)

スクーター Dioチェスタ(AF34) のバッテリーがリークする

息子が古くてボロいスクーターを先輩から(ほぼタダで)買ってきました。
その先輩も誰かから貰ってかなり長い間放置していた様で、各所が錆びていたりマフラーに土蜂が巣を作っていたり、まあポンコツですが、単にイジりたいだけで買ってきたみたいです。

で、色々修理したり悪いパーツを交換して走れる様になり完成かと思ったのですが、新品バッテリーなのに数日止めておくと上がってしまうという問題が見つかりました。
充電はできており暫く走るとセルモーターを回せるだけの電力が溜まるのですが、数日乗らずに止めておくと上がってしまうのです。

なんかリークしているっぽいですね。

そこでキーOFF状態でのバッテリー電流を測ると14mAも流れています
バッテリー容量は3Ahなので単純計算だと9日間で空となる(実際にはもっと早くダメになるでしょう)のはちょっと流れ過ぎですね。

という事で調べていく

そもそもキーOFFなのにどこに流れているんだ?

サービスマニュアルや回路図を持っていないので、とりあえずキースイッチの周りを見ると下の写真の様に3本の配線が出ています。
(あとで気付くのですが、この配線に問題がありました。)

なおネットの情報によると、このDioチェスタというスクーターは初期の2ストローク時代と後期の4ストローク時代があり、今回のは2ストロークエンジンを積んだAF34型です。そしてAF34の中でもマイナーチェンジがされており、キーシリンダーから出ている配線が2本の物もある様ですが、今回のは3本のタイプです。

キースイッチを開けてみるとツェナーダイオードらしき部品が入っていました。”4″と書かれているので恐らく4Vのツェナーらしいですが、何のため?

判らなくなってきたのでキースイッチ回りの配線を図にしてみました。
(現物からテスターで辿った結果なので間違いがあるかもしれません。また発電コイル回りは他の機種の回路図を元に推定して書いた部分もあります。あとこのCDIは5ピンですが世の中には同じAF34でも4ピンタイプのCDIもある様です。)

しかし色々と謎があります。

・キーOFF時のピンク線には12Vが加わっている。
 OFFなのにCDIに12Vが入りっぱなしというのに違和感があります。

・キースイッチ内部の4Vツェナーダイオード
 何これ?

その他(なかなかバイクの電気系は興味深いのです)・・・

・CDIは直流12Vで動作する通称「バッテリー式」です。
 CDI内で昇圧し瞬間的にイグニッションコイルに電流を流します。
・灯火類は交流のまま使用する、古いカブ等と同様の方式です。
 この方式では電圧が上がりすぎない様にレギュレートレクチファイヤで過電圧を防いでいるのですが、電球とは並列にレギュレータが入っているんですね。という事はレギュレータにガバッと電流を流して電圧を下げるシャント方式なんでしょうか?

ツェナーの働き考察

キーONの時、12V電源はキースイッチ内のツェナーダイオードを経由してCDIのピンク線に繋がります。ピンク線はこの時約8Vになっていました(ツェナーで4V落としている)。
これはどうやら「直結防止」が目的みたいです。このCDIはピンク線が8V前後の時だけ動作する様になっているらしく、ピンク線に12Vを加えてもエンジンは掛からず、またピンク線を開放しても掛かりません。これによりバイク泥棒が電源とピンク線の間を直結してもエンジンは掛からない仕組みになっている様です。
・・・という事でこの部分はキーOFF時のリークとは直接関係なさそうです。

リーク原因調査

そして問題のキーOFF時のリークですが、12Vが印可されたピンク線からCDIに向かって14.5mAの電流が流れていました。
ではこのCDIに入った電流はどこから流れ出すのでしょう?CDIの各端子を測ると以下の通りで、赤黒線が主な出口となっている様です(GNDからも僅かに流れ出していますが)。

配線色機能電流(CDIに入る向きを+)
赤黒12V電源-13.5mA
ピンクON/OFF+14.5mA
青白タイミング0mA
黄黒スパークコイル0mA
GND-0.7mA
リーク電流はピンク線から入って赤黒線から流れ出している。

と、ここまで判ったけど、なぜ赤黒線から流れ出すのかが判りません。ならばと赤黒線とCDIの間にダイオードを入れて逆流を阻止してみたところ、当然ながら赤黒線への流れは止まりましたが、今度はGND端子から6.9mA流れ出す様になりました。(リークは半分にはなるけど・・・まだ変。)

うーん。謎。
キーOFF時にピンク線に12Vを加えるならCDI内でリークを食い止めて欲しい気がしますね。
やっぱりCDIが壊れてリークしているのか?
悩んだ末、ヤフオクで同じ型のCDIを購入してみることにしました。

そして到着したCDIを取り付けると・・・やっぱり14.5mA流れています!!なんでー?

もう一度落ち着いて考える。

そもそもキーOFFの時にピンク線に12V加わっているのが不自然ですよね。キーOFF時に切り離していればリークの心配なんて無くなる筈。そういう風に改造しようかと考えて・・・ここでふと気づきました。そもそも現状の配線が正しい保証はないし何か配線が間違ってんじゃね?・・・と。

そういう目で見ると付属の鍵も純正っぽくないです。なに?JINKUNって。誰?

更にネットで他の車体の画像を見るとキースイッチのコネクタはこんな1本ずつギボシや平端子で接続するのではなく、3本纏めたコネクタが繋がっています。
やっぱり過去にここをイジられているみたいですね。その時に間違った配線をされた可能性があります。

「多分こうだろう」という現時点の結論

元々の配線が間違っている可能性も踏まえ、どうすれば正常に動作するかを考えた結果、キースイッチへの接続が現状とは逆に、下図の赤・青で描いた様に接続するのが正しいのだとしたら理屈が合います。
これならキーOFF時はスイッチ内で切り離されていてリークする事もないし、ONの時はCDIに12V電源及びツェナー経由の8Vも加わります。
また直結されてもツェナーを経由しないので盗難防止機能も正常です。


上記配線になる様、ギボシと平端子を繋ぎ変えてみると、キーOFF時のリークは無くなり、ON時の動作も正常となりました。

反省

ジャンク同然で買ってきたバイクの配線が正常であるという前提で考えたのが失敗でしたね。
無駄にCDIを買ってしまったけど、むしろサービスマニュアルを買うべきだったかも。

上の配線で本当に正しいのか、正規の回路図で答え合わせをしたいので回路図をお持ちの方、ぜひ教えてください。

しかしCDIとかレギュレートレクチファイヤーとか、なんだかバイクの電装系を調べるのが楽しくなってきました。。。