SOARISTO工房 Logo
BMW Archive

 なにやら、また設計してます。0xF9C7

PIC24F Family

 以前に、今回の「CAN Scanner」のコントローラモジュールにしようとして、「PIC18Fファミリ」をご紹介しました。

 「PIC18Fファミリ」は、10MHzのクロックを4逓倍して、内部40MHzで動作させることができますが、4クロック/1命令のため、実効的な処理能力としては、10MIPSとなります。

 一方、「PIC24Fファミリ」では、8MHzのクロックを4逓倍して、内部32MHzでの動作となりますが、2クロック/1命令のため、処理能力は、16MIPSとなります。

 しかも、「PIC18Fファミリ」は8bitコアですが、「PIC24Fファミリ」は16bitコアであり、さらには16bitのハードウェア乗算器を内蔵しているため、今回の画像回転のような乗除算の多い処理を実行させるには、持ってこいです。

 実際の自動車においても、ローカルな部分の制御には、8bitコアのモジュールが使われていますが、モジュール間の制御や自動車全体に関わる複雑な処理には、16bitコアや32bitコアのモジュールが使われています。

 ということで、今回の「CAN Scanner」のコントローラモジュールには、16bitコアの「PIC24Fファミリ」を使うことにします。

4D Serial Commander

 Tiny VGA Graphics Controllerを、シリアルポートからコントロールするためのツール、「4D Serial Commander」です。

〔関連情報〕
   ・4D Serial Commander

 南半球から、赤道を越えて、

Tiny VGA Graphics Controller

 はるばるオーストラリアから、航空郵便が届きました。0xF8E6

Tiny VGA Graphics Controller

 RGB出力をするための3点セットです。

Tiny VGA Graphics Controller

 画像で見ると大きく見えますが、笑っちゃうぐらい小さいです。ほんとにTinyです。

 こんなんで、ちゃんと動くんでしょうか。0xF9C7

Tiny VGA Graphics Controller

 とりあえず、デモプログラムは動きました。

 なお、表示解像度はVGA(640×480)ですが、VRAMサイズ(512kbyte)の関係で、有効描画サイズは620×420となります。(なので、画面が若干左上に寄ってます)

#表示開始位置をいじれればいいのですが、ファームウェアを変えないとダメそう。

 オーストラリアからの小包が、なかなか届かないので、それまでの間、少し「頭の体操」をしてみることにします。

 以前に、「3軸加速度センサ」を搭載して、車両に掛かる横G/縦Gを検出するアイデアについてお話ししましたが、

3D Accelerometer

 「3軸加速度センサ」からの値に応じて、iDriveのセンターディスプレイに、このような画像を表示してみることにします。
(この場合、「横G」の大きさに合わせて、M3 Coupeの後面図を回転させています)

 さて、このように回転させた画像を、リアルタイムに生成するには、どのように計算すればよいでしょうか。

(以下、編集中)

#回転行列と逆行列、線形二次補間のお話をする予定。

 今回使用するコントローラは、USARTインタフェースを2つ持っている必要があります。「ELM327」との通信用と、「µVGA-PICASO-MD1」との通信用です。

 PIC18Fファミリの中では、PIC18F6xxxxシリーズか、PIC18F8xxxxシリーズとなります。

 PIC18F4xxxxシリーズは、40ピンのPDIPパッケージが中心ですが、PIC18F6xxxxシリーズは64ピン、PIC18F8xxxxシリーズは80ピンのTQFPパッケージが中心となり、手作業でハンダ付けするには、ちと厳しくなります。

 PIC18F6xxxxシリーズか、PIC18F8xxxxシリーズのどちらを選ぼうかと、いろいろ考えていたところ、いいモジュールを発見しました。0xF9CF

PIC18F8722 Module Kit

 秋月電子通商さんの「PIC18F8722モジュールキット」(3,200円)です。

 「PIC18F8722-I/PT」(プログラムメモリ:128kbyte、データSRAM:3,936byte、データEEPROM:1,024byte)に、20MHzクリスタル、32kHzクリスタル、RS232ドライバIC(ADM232AARN)、3端子レギュレータ(TA48M05F)を実装しています。

 このモジュールでは、20MHzのクリスタルを実装しているので、動作周波数は20MHzとなります。一方、PIC18Fファミリは、4逓倍のPLL回路を内蔵しているので、これを使用すれば、外部発信器の4倍の速度で動作させることができます。

 今回は、VGAコントローラとの通信タイミングがシビアそうなので、10MHzのクリスタルに付け替えて、PIC18Fファミリの最高動作周波数である「40MHz」で動作させることにします。

 画像右端のクリスタルは、表面実装用の10MHzのクリスタル(40円)です。

 内部動作周波数を40MHzとすることで、USARTのボーレートは、230,400bpsまで高めることができます。
(受け側の「µVGA-PICASO-MD1」は、最高1Mbpsまで、「ELM327」は、最高38,400bpsまでですが)

 秋月さんに行ったついでに、加速度センサも買っておきました。

KXP84-2050

 秋月電子通商さんの3軸加速度センサモジュール、「KXP84-2050」(1,200円)です。

 Kionix社の3軸加速度センサ、「KXP84-2050」を実装し、X/Y/Z方向に、最大2Gの加速度を感知することができます。ディジタル出力が可能で、PICとは、SPI(またはI2P)通信で、データを読み出すことができます。

 画像では分かりにくいのですが、実物は5mm角程度しかない、非常に小さなチップです。

 本来は、ノートPC用の小型ハードディスクに実装し、ノートPCを落としてしまった時など、フリーフォール状態を検出し、ヘッドを瞬時にリトラクトして、ハードディスクを保護するような用途に使われています。
(最近では、ジャイロセンサと組み合わせて、小型ロボットの姿勢制御にも使われているようです)

 車両の挙動において、横G/縦Gの大きさが「2G」となることが、どの程度のものを表すことになるのか、まったく分かりませんが、とりあえず実験クンしてみます。
(「6G」まで検出できるモジュールもあるようですが、「6G」って・・・)0xF9FC