【2023年12月迄のご購入者様へ】「AIセミトラ・イグナイター」バージョンアップのお願い
AIセミトラ・イグナイター

W1SA/W3用とCB用のAIセミトラ・イグナイターの違いと難しい所

 えーっと、つまらん文章系のネタですが、「興味ある方いるかなぁ?」っと思って書いてみます。前々から似たような事書いてるんですが、出来るだけ読みやすくしてみます。


 W1SA/W3用とCB用では、ハードウェア上はほぼ同じものなんですが、プログラム上は丸っきり違うと言っても過言で無い位違います。なんでかというと、クランクの回転数に対してコンタクトブレーカーカムの回転速度が違うからなんです。

 W1SA/W3では、クランク2回転に対してコンタクトブレーカーカム1回転に減速されています。減速する事で、2つのシリンダーの点火をそれぞれ独立したコイルで行う事が出来るようになってます。
 これが、CBみたいなクランク1回転に対してコンタクトブレーカーカム1回転だと、同時点火コイルになるか、コンタクトブレーカーセットがもう一つ必要になります。なので、このコンタクトブレーカーの減速というのは、当時の技術陣が必死に考えて導き出した答えの一つなんだと思います。

 それでは、W1SA/W3のコンタクトブレーカーの動きを図にしてみましょう。

W1SA/W3でクランク2回転のコンタクトブレーカーの動き

 だいたいこんな感じになります。
 外側の円が1番コイルで、内側の円が2番コイルです。この図のサイクルを時計回りに進めていくようになります。車両の差、セッティングの差で微妙に違いますが概ねこんな感じになります。
 AIセミトラ・イグナイターから見た時のポイントは、1番点火2番点火の間にそれぞれ1番通電2番通電があるという事です。それぞれの点火の後、どれくらいで次の通電が始まるかで次の点火のタイミングがかなり正確に計算できます。

 対してCB用はどうなのかというと……

CBでクランク2回転のコンタクトブレーカーの動き

 W1SA/W3と同じようにクランク2回転で表すとこうなります。W1SA/W3の2倍の忙しさで動いているんですが、CBは同時点火コイルを使ってクランク1/2回転で1回点火するのでこうなります。
 分かりやすくクランク1回転で表すと次の通りで、コンタクトブレーカーと同じになります。

CBでクランク1回転のコンタクトブレーカーの動き

 点火点火の間に通電がありません。これ、AIセミトラ・イグナイターから見ると大問題なんです。W1SA/W3でクランク2回転のコンタクトブレーカーの動きの図と見比べると分りますが、通電時間が長く点火と反対側の通電のタイミングがほぼ同じです。これでは次の点火までの間に計算の手がかりになるものが無くて、加速や減速に対して正確に次の点火のタイミングが判りません。しかも、点火と通電のタイミングが近すぎてノイズの影響まで出ます。
 「それじゃ、出来ないの?」というと、そうでもないんです。W1SA/W3程正確ではないものの、大体の先読みと、物理的にありえる回転数の振れ幅を考慮すと、少々大雑把ではあるものの次の点火のタイミングがちゃんと計算できます。

 次にAIセミトラ・イグナイターの目標ドエルタイムをグラフにしてみました。

 左のグラフがW1SA/W3で、右のグラフがCBです。横軸が回転数で右に行くほど高回転、縦軸がドエルタイムで上に行くほどドエルタイムが長くなります。
 グラフのオレンジ色の線はノーマルのコンタクトブレーカーで動作した時のドエルタイムで、緑色はAIセミトラ・イグナイターの目標ドエルタイムです。正確には目標値そのものではなく、計算上大体このくらいの所を狙ったドエルタイムになってしまうというものです。そして、緑の線がオレンジの線の下にいればいる程節電されます。

 2つのグラフを見比べると、W1SA/W3の方が緑の線がフラットに見えるのが一目瞭然だと思います。これは、W1SA/W3の方が正確に点火タイミングが予測できる上に、各コイルの駆動時間に十分な余裕がある為です。逆にCBはというと、あんまり正確に点火タイミングを予測できない分、回転の振れ幅を考慮しないといけないのと、そもそもノーマル点火でさえ常にどちらかのコイルに通電している状態という各コイルの駆動時間の余裕の無さの為です。
 W1SA/W3はグラフを見ての通り、低回転ではガッツリ節電するし、高回転でも火花の勢いが垂れてくるような事は絶対に無い位のドエルタイムを確保しています。対してCBはそこまで強力ではありません。ただし、CBはW1SA/W3に比べると2倍もコイルが働いているので、効果はグラフで見た感じ以上にはあります。

 こんな感じで動作しているAIセミトラ・イグナイターですが、とにかく難しい所というのがあります。
 次のグラフは、各回転数でクランク1回転にかかる時間を表したものです。

 1,000rpmの時、クランク1回転にかかる時間は60ミリ秒です。
 1,250rpmの時、クランク1回転にかかる時間は48ミリ秒です。
 1,000rpmと1,250rpmの250rpmの差は12ミリ秒です。

 6,000rpmの時、クランク1回転にかかる時間は10ミリ秒です。
 6,250rpmの時、クランク1回転にかかる時間は9.6ミリ秒です。
 6,000rpmと6,250rpmの250rpmの差は0.4ミリ秒です。

 ザっと24倍違います。同じ250回転の差でも低回転と高回転ではかかる時間がこれだけ違ってきます。そしてこれが結構な難しい問題なんです。
 例えば、クランク1回転の間に250rpm回転数が上がったとすると、6,000rpmでは0.4ミリ秒早く点火タイミングが来るだけで、特に何も起こりません。でも、1,000rpmだと12ミリ秒も早く点火タイミングが来てしまったらコイルに通電する時間(ドエルタイム)が無くなってしまいます。失火してしまいます。
 W1SA/W3の場合は、これをコンタクトブレーカーのコンタクトタイミングを使って再計算し、足りなくなった時間分コイルに通電する時間を速めます。
 CBの場合は、点火と点火の間にコンタクトブレーカーのコンタクトタイミングが無く再計算できないので、クランク1/2回転で最大何処まで回転数が上がるか回転数の振れを先読みしています。

 AIセミトラ・イグナイターでは、この辺の制御がかなり難しい所になってます。色々と試行錯誤をした結果、簡単なものとは言え機械学習AIを使うしかないという所に至った訳です。
 ただね、この機械学習AIも中々苦労してるんです。というのも、使ってるマイコンが極めて小型のものなので、割り算が苦手だったり小数点の計算が遅かったりするんです。コンタクトブレーカーの動きは1マイクロ秒(1/1,000,000秒)単位で監視しているので速度は十分なんですが、計算にモタついちゃ元も子もないんで、どの位までで計算を諦めるか、そもそもマイコンが苦手な計算方法を如何に避けるか、そんな事をやり繰りししながら動作しています。

 こんな感じで、普通のセミトラでは有り得ない不思議な動きをするAIセミトラ・イグナイターですが、何か不思議に思う所、「こういう時はどうしてるだろう?」的な所なんか、気になるところは質問して頂ければ答えます。流石にプログラムの公開は出来ないんですが、理屈の話しや、実際に何をやっているかは特に秘密にしていないので、質問頂ければ答えます。

コメント一覧