RIGHT STUFF, Inc.

Right Stuff Wrong Stuff


XS650(XS1B) イグナイタ用PICコントローラ(Ver6)

カム軸検出でコイル2個の独立点火。始動から極低速域は15度の固定進角バージョンです。主な機能としては以下の通りです。

  • カウントや計算は16ビット処理。
  • キックスタートを考慮して最初の1発から火花が出る。また、極低速で角速度が急変してもBTDC15度の固定位置で点火できる。
  • 進角の度合いを4段階、最大進角量を4段階、合計で16種類の設定が可能。
  • 進角はY=aX+bの形で変化し、設定された最大値で頭打ちに成るだけ。マップを読んだりバキュームセンサを使ったりして複雑な制御をするのは今後の検討課題。
  • ドエルタイム制御により低速での省電力を実現。
  • 高速域では純正並みにドエルタイムが減少している。高速域でもドエルタイムを確保するバージョンは次の宿題。Ver1.1で完成しました。
  • スイッチオンでエンジンが停止した状態が8秒間続いた場合、コイルへの通電を切ってコイルの加熱を防止する。再びクランクが回れば起動する。
  • 加減速時や回転ムラに起因する先読み点火タイミングの揺らぎ対策として、角速度の変動分を補正するフローを追加した。


ここには回路図があります。

配線やポート処理などのハード的な問題から、今までとポート番号を変更しました。と書いていましたが、オンボード書き込みなどの事も考慮すると、やっぱりRB6、RB7を空けた方が良いような気がして元に戻しました(^^)。

入力の4ビットはとりあえずPICの内部プルアップで行ってみるつもりです。せっかくマイクロチップ社の技術者が内部プルアップ機能を追加してくれたのですから、なんとかこれを使ってシンプルな回路にしたいです。

この件に関しては今までの試験中に問題は発生していません。今はPICから3mmくらいしか離れていない場所にスイッチを設置していますが、将来的に筐体まで線を延ばしたりした場合は再検討が必要になるかもしれません。誤動作を避ける意味で、電源投入時だけしかポートを読まないプログラムにしています。

今回はイグナイタ側も組み込んでみました。オンセミのイグナイタ専用IGBTが入手できたので、それを使ってシンプルなイグナイタを実現して見ようと言う魂胆です。

イグナイタ専用と言うだけ有って何も要りません。400V程度で過電圧はクランプされていますし、ゲートの保護回路も入っています。ゲートの駆動電圧は5VでOKです。飽和電圧が1.3Vくらいは残るので、エネルギーだけは今のパナソニックのFETに負けてしまいます。

飽和電圧は電流が5A程度なら1.0Vくらいでした。プリント基板の銅板で放熱させただけでも、十分なくらいしか発熱していません。尤もこれは、1気筒1コイルという非常に楽な構成で使っているからでしょう。これからの方向では有りませんが、4気筒、6気筒を1コイルで点火する様な構成であれば、当然発熱も増えてきます。

本当にPICで直接駆動してOKなのか?とか、色々とやってみないと解らない問題が有るかと思います。しかしこの程度の回路でマイコン制御の点火システムが実現できれば、自作する人にとってはなかなか面白いのでは無いかと思っています。

今のところ問題なく駆動できています。


ここにはイグナイタ本体の画像があります。

試験用のイグナイタです。点火用のIGBTを2個搭載して、基板は名刺サイズに収まりました。設定変更用のスイッチが小さすぎるので実用バージョンでは何らかの改善が望まれます。

蓋をかぶせていませんが、ケースはタカチのYM-90です。IGBTの放熱器は付けていませんが、パターンを設計する段階で広めに設計しておき、基板裏面をケースに密着させています。電流が5Aで通電期間が1/4程度であれば、ほとんど発熱を感じることは有りません。


現状でのプログラムです。

ig11.asm

自分のXS用としては、必要な機能は全て満たすことが出来ました。あとはプログラム的にシンプルで綺麗な形に洗練させることと、後々のためにフローチャートやドキュメント類をまとめておくことです。

メモリの空き空間を「GOTO 0」命令で埋めてみました。何となく玄人っぽい気がして(笑)。


以下は動作波形です。上の段の1チャンネルが入力信号で、下の段の2チャンネルが出力信号です。

上の段のパルスはクランク軸2回転(720度)に1回出ます。カム軸で言うと1回転(360度)で1回に成ります。カム軸に付いたポイントが閉じたら立ち上がり、ポイントが開いたら下がるのとほとんど同じ内容です。

下の段はPICの出力で、これはそのままコイル通電をコントロールするIGBTのオンオフに対応します。パルスが立ち上がっている間はIGBTが通電しており、立ち下がった瞬間に電源を断にして火花が飛びます。

XS用として2気筒対応で作っていますので、全く同じ波形でずれた物がもうひと組有ります。ただ、波形を記録できるオシロが2チャンネルしか無いので、片側だけのデータです。


ここにはイグナイタ波形が有ります。
プログラム的には極低速モードの時です。カム軸が6Hz位で回っていると言うことは、クランク軸回転数は6x2x60=720rpmの時に成ります。

ここにはイグナイタ波形が有ります。
横軸を1パルス分に拡大した状態です。単純に入力信号に応じて出力がオンオフしているだけです。PICが入ってはいますが、結果的にはドエルコントロール無しのフルトラと同じ状態です。

今回の機器の構成的に、プログラム進角が0度の時でもメカ的な基本進角が15度有ります。そのためにこの状態が15度進角した状態と成ります。当初は極低速時は0度とか10度とか試していましたが、固定値の15度進角するのが一番始動性が良かったためにこのような設定にしています。

ただしこれは始動がキックのみのXSの場合です。キックで始動するには最初の数発の火花で始動する必要が有ります。100rpm程度でキュルキュル回り続けるセルモータ始動とは条件が違っているかもしれません。

2チャンネルのパルス幅40.9955msがコイルの通電時間です。使っているコイルは8.2ms98%までの電流が流れます。従って少々過大なドエルタイムとも言えるのですが、ここまでコントロールするのは面倒なのと、バッテリー電圧低下時に起動を試みる様な状態を考慮すると、この部分までは41msのドエルタイムでも良かろうという判断です。


ここにはイグナイタ波形が有ります。
アイドリングに近い状態です。カム軸からのパルスが丁度10Hzに成っていますから、クランク軸回転数は10x2x60=1200rpmの時に成ります。

ここにはイグナイタ波形が有ります。
1パルス分に拡大した画像です。ドエルタイムは8.99257msまで短くなっています。もし入力信号そのままに通電を行うとすれば、入力信号の幅は25.2024msなので約2.8倍も長い通電時間に成ってしまいます。逆の言い方をすればアイドリング中の点火系消費電力が、ドエル制御をすることによって1/2.8まで減少したと言う事です。

定常状態で13.5V5A消費するコイルが2個有り、それぞれが1/4の周期で通電されているとすれば、総合の消費電力はP=(13.5x5)x2/4=33.75Wも有ります。ドエル制御を行うことによって1/2.8に成ると言うことは、33.75W12.05Wまで減少することを意味します。灯火類をLED化したりする前に、私が一番気になっていてやりたかった事がこの部分なのです。

ここにはイグナイタ波形が有ります。
さらに拡大した画像です。良く見ると少しだけ進角しています。時間的には200usほど早く点火しているようです。このときのカム軸1周期は100msなのでクランク軸に換算すると720度100msで有ると言えます。200usを角度に直すと、θ=720x(0.2/100)=1.44度となります。進角量の設定でこの辺りから進角がスタートしているか、またはカウントや計算の誤差かもしれません。


ここにはイグナイタ波形が有ります。
少し回転を上げてカム軸パルスが20Hzの時です。クランク軸回転数は20x2x60=2400rpmに成ります。

ここにはイグナイタ波形が有ります。
1パルス分に拡大した画像です。ドエルタイムは8.49760msにコントロールされています。

ここにはイグナイタ波形が有ります。
点火部分をさらに拡大した画像です。BTDC15度の信号よりも1.4msほど早く点火しています。このときのカム軸1周期は50msなので、上記と同様に計算するとθ=720x(1.4/50)=20.16度がプログラム進角量になります。基本進角量の15度と合計して、35.16度がトータルの進角量です。


ここにはイグナイタ波形が有ります。
回転を上げていき、カム軸パルスが40Hzの時です。クランク軸回転数は40x2x60=4800rpmに成ります。
ここにはイグナイタ波形が有ります。
この状態でもドエルタイムは8.49525ms確保されています。もしドエル制御無しの点火系であれば、入力信号のままに通電するしか有りませんから6.29693msが通電時間になっていたはずです。

別途点火コイルの部分に書いていますが、6.2msではコイルの電流は飽和時の5Aに対して4.5A位までしか流れません。コイルのエネルギーは電流の2乗に比例するので、19%の減少に成ります。

ここにはイグナイタ波形が有ります。
さらに拡大した状態です。ここでは入力信号に対して1.2msほど早く点火しています。このときのカム軸1周期は25msなので、上記と同様に計算するとθ=720x(1.2/25)=34.56度がプログラム進角量になります。基本進角量の15度と合計して、49.56度がトータルの進角量です。


ここにはイグナイタ波形が有ります。
カム軸パルスが51Hz程度の時です。クランク軸回転数は51x2x60=6120rpmに成ります。なぜこんな中途半端な回転数を計測しているかというと、ドエルタイムを8.2ms確保できる最大回転数だからです。

これ以上の回転数になると、ドエルタイムは徐々に減少していきます。ドエルタイムの重要性に関して色々と書いておきながら、結局高回転では短くなるのはおかしいだろう・・・と思われるかもしれませんが、以下のような理由があります。

第一に高回転・高負荷になるとプラグの温度が上昇します。すると点火に必要な電圧が急速に低下していきます。「俺のはターボ車で高回転時は圧縮圧力が上がって要求電圧も上がる」と言うような人を除けば、高回転域の要求電圧は2000rpm-3000rpm辺りから急加速したときよりも低くなります。

別の問題はコイルの放熱です。ドエルタイム一定で回転数を上げていくと、何時かは全部の領域がポイント閉の領域に成ってしまいます。これはイグニッションコイルに通電しっぱなしと同じ事です。この手のコイルが使われている環境では、通電時間が1/4位のデューティー比の場合が多いです。これ以上の通電を行うことは、メーカーの想定した放熱条件を越える恐れが有ります。

このような問題から、この辺りより上の回転数では、ドエルタイムは徐々に減少させて行こうと考えました。


ここにはイグナイタ波形が有ります。
カム軸パルスが約100Hzすなわちクランク軸回転数が100x2x60=12000rpmの時です。

ドエルタイムがだいぶ減少してきています。約4msくらいしか有りません。しかしXSのエンジンの性格を考えたり、ドエル制御無しの通電時間や4気筒を1個のコイルで点火する車の事などを考えると、12000rpm4msの通電時間は十分では無いかと思います。

ここにはイグナイタ波形が有ります。
拡大画像です。ここでは入力信号に対して0.45msほど早く点火しています。このときのカム軸1周期は10msなので、上記と同様に計算するとθ=720x(0.45/10)=32.4度がプログラム進角量になります。基本進角量の15度と合計して、47.4度がトータルの進角量です。

オシロの読み取り誤差や実際の制御誤差が有りますが、今回の例では最大進角量が48度程度に制限されていることが解ります。


ここにはイグナイタ波形が有ります。
カム軸パルスで113Hz。クランク軸回転数が113x2x60=13560rpmの時です。

ドエルタイムは3.8msまで減少しています。
ここにはイグナイタ波形が有ります。
点火部分の拡大画像です。信号と同じタイミングで点火しています。プログラム進角量が0なので、固定進角量と合わせても15度しか進角していません。これでは回転は頭打ちとなり、これ以上回転を上げることは出来ません。レブリミット設定です。

と言うのは嘘で(笑)、桁上がりが原因で進角計算がオーバーフローしてしまっています。しかし過回転を防止するような"悪くないバグ"に思えたので、このまま放っておく事にしました。まあ、ケニーロバーツのマシンであっても、XSのエンジンがここまで回ることはあり得ないのですが。


このボタンは、目次に戻るリンクです。