完成した「ねずー」の諸元を確認しておきます。
全長110mm、全幅110mm、全高75mm 全備重量310g
PSDセンサ(10-80cm)3点(右、正面、左、猫検出用に約5度上向きにオフセット)
加速度センサXY軸±2G、振動ジャイロ1軸・最小感度1.2deg/sec
DCモーター2点(FA130-18100相当)減速比114.7:1(最終的に38.2:1に変更) 駆動輪直径約36mm
ラジコンサーボ1点(ネコじゃらし駆動用)
単四型Ni-NHバッテリーX4(4.8V1100mAH)
身体検査の第一段階はcoronのサンプルプログラムを使ってのセンサーのチェックです。
coronにはわかり易いサンプルプログラムがついてきます。初めて使うマイコンだと、ソフトにも不慣れなので「確実に動く」そのうえ「ハードのテストもできる」サンプルプログラムは大変ありがたいです。
Coron付属のCDにサンプルプログラムがありますが、私が使ったのはVersion2.0.4で、別のCDでもらいました。テクノロードのHPから最新バージョンへのアップデートが申し込めるようです。
AD変換のサンプルプログラムは3チャンネル分のAD変換データをUSBポートからPCへ送信、Teratermなどのターミナルソフトで表示するものです。これを改造してすべてのAD入力をTeratermで読めるようにします。こんな感じです。
coronのUSBが仮想COMポートになるので、Teratermでオープンするだけで表示できます。Coronのソフト主要部分はたったこれだけです。
//センサー表示プログラム
while(1){
USB_putn(coron_IOA_ADValue[0],4); //IOA0のAD値(12bit)を4桁で表示
USB_puts(" "); //文字列送信
USB_putn(coron_IOA_ADValue[1],4); //IOA1のAD値(12bit)を4桁で表示
USB_puts(" "); //文字列送信
USB_putn(coron_IOA_ADValue[2],4); //IOA2のAD値(12bit)を4桁で表示
USB_puts(" "); //文字列送信
USB_putn(coron_IOA_ADValue[3],4); //IOA3のAD値(12bit)を4桁で表示
USB_puts(" "); //文字列送信
USB_putn(coron_IOA_ADValue[4],4); //IOA4のAD値(12bit)を4桁で表示
USB_puts(" "); //文字列送信
USB_putn(coron_IOA_ADValue[5],4); //IOA5のAD値(12bit)を4桁で表示
USB_puts(" \r"); //カーソルを先頭に戻す(CR)
wait_timer_msec(50);
}
ブログにアップするとインデントが無くなってしまって見難いですが、この無限ループで50msごとに6ポートのアナログ値をUSBの仮想COMポートからPCに送信しています。
USB_putnが引数の値を十進変換して指定桁で送信する関数、USB_putsが文字列をそのまま送信する関数です。
センサーの順番は、右PSD、正面PSD、左PSD、加速度左右(Y)、加速度前後(X)、ジャイロです。単位は0.8mV、表示されている数値に0.0008を掛けると実際の電圧になります。
簡単なもんです。ターミナルの数字を見ながら各センサをチェックします。ねずーは問題なしでした。
とはいえ、ちょっと気になることもあります。
ねずーのPSDはバッテリー電圧、4.8Vで動作しています。バッテリー電圧は、モーターやサーボが動くと電圧降下してPSDの動作下限電圧4.5Vを割り込む可能性もあります。あまりよろしくない使い方ですが、今回は我慢します。この辺の事情を頭に入れてプログラムを作成することにしましょう。
身体検査の第二段階は運動能力のテストです。
DCモーターとサーボモーターもそれぞれサンプルプログラムがあるので、それでテストしました。
DCモーターはCW(時計回り)の指示を出したときに前進するようコネクターを挿しました。
サーボモーターのニュートラルもこのときに出しておきます
ねずーはこちらも合格点でした。
こんなふうにいろいろとテストをしていると、いくつか改良したい点もでてきました。
次回はこの辺の改良をしたいと思います。