見出し画像

NSR250R MC21の疑似クランクトリガー信号を作りたい

前書き

 HONDAのNSR250R MC21は発売から30年以上もたち人気車種とはいえ維持にはそれなりにお金がかかります。その中でも純正ECUであるPGM3は現在ヤフオクで4万円前後で取引されているのですが内部の部品の故障などもあります。そしてPGM3の部品交換は内部のシール材を取り除く必要があり、この作業がすごく面倒です(自分はもうやりたくない)

ということもあり人と争って4万くらいでPGM3買うなら社外のECUで動かせた方が良いのではと思いました(あと単純に社外ECU使ってみたいだけ)。それにあたってピックアップコイルからの信号を疑似的に作れると色々と嬉しいのです。

社外ECUの選択肢

 現在自分が把握しているECUとしてはいわゆる中華PGMZeeltronicspeeduinoくらいです。中華PGMは年々値段が上がっており今後生産終了なども考えられるので今回の選択肢から外しました。残るはZeeltoronicとSpeeduinoになるのですがSpeeduinoはオープンソースECUということもあり今後もしばらくは開発が進むかなと思ったのでSpeeduinoにすることにしました。

疑似信号を作る

 Speeduinoを使うにあたり適切なタイミングで点火するためにクランクの角度を読み取れるようにしなければなりません。NSRはフライホイールの突起部分を二つのピックアップコイルで拾ってクランクの角度を読み取っているのですが疑似信号が作れればそれを使って実車を使わずにテストなどが出来るため便利になると考えています。またその疑似信号を使って既存のPGM3の動作確認もできるのではないかと考えています。SpeeduinoにはArdustimというクランクとカムの信号を生成するものがあるので今回はそれを使って信号を作っていきます。

フライホイールの突起とピックアップコイルの配置

 Ardustimで疑似信号を作るためにフライホイールの突起とピックアップコイルの配置を整理します。フライホイールの突起は初めの突起から時計回りに45度、90度、45度の角度でついています。またピックアップコイルは90度の角度でついています。


 これをもとにArdustimに記述をしていきます。

Ardustimへの記述

 Ardustimではwheel_def.hにクランクトリガーの記述をするのですが0,1,2,3を使ってクランクとカムのトリガー位置を指定します。0がトリガーなし、1がクランクトリガー、2がカムのトリガー、3がクランクとカムの両方となります。そして書き込む数字の数でトリガーの細かさが変わります。例えば下記のコードは144個の数字で書かれているので一つ当たり5度となります。この数が多いほど角度が小さくなりより細かな記述ができます。

 const unsigned char honda_nsr250r_mc21[] PROGMEM =
   {
      //Honda NSR250R MC21
      1,0,0,0,0,0,0,0,0,3,0,0, //0-60
      0,0,0,0,0,0,2,0,0,0,0,0, //60-120
      0,0,0,1,0,0,0,0,0,0,0,0, //120-180
      1,0,0,0,0,0,0,0,0,0,0,0, //180-240
      0,0,0,0,0,0,2,0,0,0,0,0, //240-300
      0,0,0,2,0,0,0,0,0,0,0,0, //300-360
      1,0,0,0,0,0,0,0,0,3,0,0, //360-420
      0,0,0,0,0,0,2,0,0,0,0,0, //420-480
      0,0,0,1,0,0,0,0,0,0,0,0, //480-540
      1,0,0,0,0,0,0,0,0,0,0,0, //540-600
      0,0,0,0,0,0,2,0,0,0,0,0, //600-660
      0,0,0,2,0,0,0,0,0,0,0,0, //660-720
   };

 そして上記が先ほど整理した情報から書いたNSRのトリガーになります。とりあえず動けばいいということで上死点がどこか確認せずに作っていますので実際のクランク角度とトリガー位置とは違う記述になっているかもしれないです。これを正しく動作させるためにはwheel_def.hに下記のコードを追加します。

const char honda_nsr250r_mc21_friendly_name[] PROGMEM = "HONDA NSR";

 さらにArdustim.inoに下記を追加します。(0.6というRPMスケーラーの意味は分かってないので適当につけてます)

{ honda_nsr250r_mc21_friendly_name, honda_nsr250r_mc21, 0.6, 144, 720},

 これでArduino nanoやMEGAに書き込めば完了です。

Ardustimでの動作

 Ardustimのソフトウェア(執筆時点でV1.2.1)をダウンロードし起動します。PCに先ほど書き込んだArduinoを接続します。そしてArduinoを示すCOMポートを選択しconnectを押します。

 その後、上の歯車マークを選択しSimulated Pattern:からHONDA_NSRを選択します。

 これで特定のピン(nanoやUnoは8,9pin, MEGAは52,53pin)から信号が出力されます。


 まだ試していませんがglobals.hの#define TMP_RPM_CAPを変更することによって回転数をまだ上げられるかもしれません。

あとがき

 NSRも古いバイクですので今後も何か役立ちそうなことがありましたら何かしらの形で公開していきたいと思います。


この記事が気に入ったらサポートをしてみませんか?