PICマイコンの開発環境を移行した件

    ちょっと更新をサボってしまっていました。

    久しぶりの更新なんですが、今回はいつにもましてたらたら長いです。
    最初にお断りですが、直接バイクの話でもないので飽きたら途中離脱していただければと思います。




    更新が滞っていた理由は仕事が年度末でバタバタしているということと、もう一つ、PICマイコンと自作のソフトウエアがらみでハマっていて時間を取れなかったこと。

    KSRのCDIを自作しているのはこのブログでも何度か記事にしていますが、V11用のデータロガーも自作をしていまして、インジェクションのセッティングに使っています。

    どちらもCPUはMicrochip社のPICマイコンでミッドレンジ 16ビットファミリと呼ばれている中のPIC24Fシリーズというものを使っています。

    PIC24FはPIC24シリーズ(ほかにPIC24HとかEとかがある)の中では処理速度は一番遅いのですが、それでもスペックとしては16MIPSもあって2サイクル/単気筒のバイクの点火制御くらい楽勝です。というか、かなりオーバースペック。
    データロガーの方は100msec周期でエンジン回転数とTPSとAFRのアナログ電圧をA/D変換して取り込むのと、GPSモジュールからの緯度経度、標高、速度他を取り込んでSDカードに記録させています。
    あとからログデータをグラフ化してインジェクションのセッティングに使うわけです。

    要は、今のバイク生活にはなくてはならないものってことです。


    もう一つ、今日の話題の前説をします。
    電子工作を始めたはたぶん2010年ころだったと思います。
    当時、Windows XPのノートPCを買って、開発環境を整えてプログラムを始めたのですが、時は流れ、XPはサポート終了して久しく、Microchip社の開発環境もどんどん新しくなっています。
    XP機での開発環境はMPLAB IDEというソフトを使っていました。これはずいぶん前に開発終了となっていて新しくMicrochip X-IDEというプログラムに代わっているんですね。
    移行したほうが良いかな~とは思っていたのですが、大仕事になりそうで今まで手が付いていませんでした。
    ただ、さすがにそろそろ変え時かなーってことで1年半ほど前から重い腰を上げていろいろと準備をしていました。


    さらに前説その3です。
    開発環境の乗り換えを始めると予想通り一筋縄ではいきませんでした。
    新しいソフトをインストールして、古い環境で作成したプロジェクトをインポートをしてビルド、PICKit3というMicrochip純正の書き込み器でソフトを書き込んでイッチョあがりっていうのを期待していたのですが、当然のようにムリムリモードに突入。

    まず、コンパイルが通りません。
    これはCコンパイラもC30というのからXC16というのに変わっていたりいろいろあるようで、ネットで調べまくってようやく解決。
    コンパイルエラーがなくなってビルドできたと思ったら、今度はPICKit3を認識しません。
    PICKit3のハードが古いとダメという情報をもとに調べてみても問題なさそうだし、ファームウエアが古いと認識しないという情報があって、更新してみたりしても変化なしだったり。
    ところが何か月ぶりかで再トライしてみたらあっさり認識して書き込みまでできたり。
    とにかく何が何だかさっぱり…

    ただ、どうにかこうにかCDIのプログラムは新しい環境で開発できるようになっていました。
    ここまでに1年くらいかかっています。


    前置終わり。長くてすみません。
    残ったデータロガーのプログラムなんですが、ここからが今日の話題となります。

    CDIのプログラムと比較するとデータロガーの方が数段複雑なんですね。
    CDIがレベル3とすると、レベル100くらいなイメージでさらに気が進みませんでした。
    まあ、いつまでも古いPCを使い続けるのもね、ってことで今年の正月休みに意を決して始めたわけです。
    結果、この前の日曜日にようやく新環境でまともに動くソースコードになりました。
    いや~長かったですわ。まじで。

    仕事終わってから毎晩必死でデバックしていました(笑)。
    プログラムの達人にとっては何て事ないことないんでしょうが、もうとにかく面倒。大変。
    10週間かかってようやく新環境に移植することができました。

    SDカードを制御するファイルシステムとかUSB関連の処理関数群がMAL(Microchip Applicaton Library)っていう名前で提供されているのですが、これまた大幅バージョンアップされていて全く別物のようになってたりするわけです。
    新バージョンに対応するのが一苦労でした。

    小さいPCがこれまで開発用として使っていたXP機で今回ようやく引退させられそうです。
    s-DSC_1548.jpg


    データロガーの基板はこんな感じです。これは動作チェック用のもので、同じものがV11に搭載してあります。
    オレンジの線がエンジン回転数のパルス。別のPICマイコンで500回転~15000回転くらいまでのパルスを出せるようにプログラムしてあり、デバックの際はそれを入力しています。

    実機での回転数の検出はプラグコードに取り付けたCTを使っています。
    CTの出力をフォトカプラで電圧に変換、PICに入力しています。
    s-DSC_1543.jpg

    データロガーのモニタ用LCDの表示です。
    室内でのテスト用なので、エンジン回転数のパルスは前述のとおり別のPICマイコンから入力しています。
    それからGPSアンテナがつながっていないので、時速999㎞/hの表示になっています。
    TはTPSの電圧値を開度に変換した値で、スロットル全閉~全開を0~100%で表示します。
    Aは空燃比で空燃比計のアナログ出力をA/D変換した結果です。
    この状態でログスイッチを押すと100msecごとにカンマ区切りのCVS形式でデータを記録していきます。
    s-DSC_1546.jpg

    ログファイルをPCにコピーするのはUSB経由です。
    USBケーブルを接続するとPC側がPICをMSDデバイスとして認識、ファイルの読み書きができるようになります。
    s-DSC_1544.jpg


    PC側でログファイルをグラフ化しています。
    QlikViewというソフトでグラフを書かせるとこんな感じになるのです。
    qv.png

    TPSと回転数のグラフです。
    てろ~っと走った時のアクセルと回転数の関係で、これにAFR値を重ねて濃いとか薄いとかいろいろやっております。
    s-qv1.jpg

    以上、本日のお話でした…


    ……

    すみません。なんのオチもないですがお許しください。
    まー、とにかく苦労しましたとうお話です。
    よくやったぞ、オレ!ということで現在の自分から未来の自分に向けたPR記事でした。

    とりあえず、こんな感じということで。




    関連記事

    コメント

    非公開コメント