MIRSMG4 管理台帳へ戻る

名称 Arduino 単体での動作試験
番号 MIRSMG4D-SYST-0007
版数 最終更新日 作成 承認 改訂記事
A01 2017.04.18 牛丸真司 牛丸真司 初版
A02 2021.05.25 牛丸真司 牛丸真司 管理台帳フォーマットへの変更
A02 2022.05.31 牛丸真司 牛丸真司 内容の一部変更

Arduino 単体での動作試験(機能試験)

1. デバイス接続

  1. Arduino に接続して動作させるデバイス(モータ、エンコーダ、電源監視)を接続する。
  2. Arduino の USB ポートをArduino IDE をインストールした PC に接続する。



    モータ・エンコーダ(2個)、モータ制御ボード(2個)、バッテリー、電源スイッチをを接続した Arudino テスト環境の構成図

2. Arduino ソースファイルの展開と Arudino IDEの起動

  1. mg4_arduino_ver320.zip をダウンロードし、適当な場所に展開する。

    zipファイルの展開は、unzip ZIPファイル名とする。

  2. Arduino IDE を起動し、展開したフォルダーのソースファイルを開く。 (フォルダー内のどれか一つのソースファイルをを開くと関連する全てのファイルが同時にオープンする。)
  3. 「ツール」タグで、ボートが Arduino/Genuino Uno になっており、ポートがチェックの付いた番号と一致しているか確認する。(異なっていれば変更する。)

3. 単体機能テスト

  1. ギア比の確認(変更)
    define.h でギア比(T_E_RATIO)の値が使用してモータのギア比と一致しているか確認する。 一致していなかれば変更する。
  2. 試験プログラムの選択

    mg4_arduino_ver* の loop 関数で、試験したいプログラムを選択する。 以下に loope 関数内のコメントでのテストに関する説明をを示す。

    void loop(){
    
    /*
      いずれか一つの関数を有効にする。
      どの関数も無限ループになっている。しがたってこの loop 関数は実際にはループしない。
      */
    
      / * RasPi からの指令で動作させるとき、slave を有効にする。*/
      //slave();
    
    
    /* --------------機能のテスト---------------------------------------------
        テスト関数 test_*() のいずれかを有効にする。
        実行時にシリアルモニタを立ち上げて値を確認する。
      ------------------------------------------------------------------------- */
    
      /* モータ動作テスト 引数:左モータのPWM値、右モータのPWM値 (範囲は -255~255)*/
      //test_motor(150, 150);
    
      /* エンコーダテスト(モータを回転させて行う)*/
      motor_set(50, 50) ; test_encoder();
      /* 距離計のテスト(モータを回転させて行う)*/
      //motor_set(50, 50) ; test_distance();
    
      /* 速度制御のテスト 引数:左モータの速度[cm/s]、右モータの速度[cm/s] */
      //test_vel_ctrl(25, 0);
    
      /* 走行制御のテスト 
        引数:モード(直進:STR or 回転:ROT)、速度[cm/s] or 角速度[deg/s]、距離[cm] or 角度 の速度[deg] */
      //test_run_ctrl(STR, 25, 100);
      //test_run_ctrl(ROT, 45, 90);
    
      /* バッテリー値の確認 */
      //test_batt();
    
      /* シリア通信のエンコード、デコーダ値の確認 */
      //test_encode();
      //test_decode();
    
    }
    
  3. テストプログラムの実行

    Arduino IDE の右矢印アイコンをクリックして、プログラムのコンパイル・転送を行う。 プログラムの転送が完了した時点で、そのプログラムが動作する。
    以下にエンコーダテスト時のシリアルモニタのログを示す。 Ver3.0 以降でシリアルモニターを使う場合は、この図のように右下の通信速度を9800bpsから 115200bps に変更すること。


    エンコーダテスト時のシリアルモニタのログ(通信速度を 115200bpsに変更していることに注意)

4. 単体テストが正常に行えなかった場合の対応

  1. モータ動作テストが不調だった場合(モータが動かないなど)
  2. エンコーダ動作テストが不調だった場合(エンコーダ値が正常にカウント出来ないなど)
  3. バッテリ電圧値が正常でない場合

5. 機体組み上げ前のArduino単体での機能試験

機体組み上げ前に行う Arduino単体での機能試験は、loop関数内の以下のテストを実行すればよい。
テスト項目テスト関数チェック項目備考
モータの動作テストtest_motor()モータの回転方向は正しいか?引数の値を変更して速度が変化するか?符号を変えたときに回転方向が変化するか?左右それぞれについてチェックする
エンコーダの動作テストtest_encoder()エンコーダの1周のカウント数は正しいか?モータの回転方向を変えた場合に、カウントの増減が変化するか?左右それぞれについてチェックする。モータをバッテリーで回転させて行う場合は、set_motor()関数を使う。タイヤを回してチェックする場合は、バッテリーをはずして行う、1周のパルス数はギア分がかかる。その際はカタログの精密ギア比を用いること。
速度制御の動作テストtest_vel_ctrl()速度値を変化させた場合に、回転速度・回転方向が正しく変化するか?左右それぞれについて確認する。
バッテリー電圧測定test_batt()バッテリー値が正しく読めているか?テスターで測った値と比較する。

なお、距離計のテスト(test_encoder())とシリアル通信テスト(test_encoder(), test_decoder())は省略してよい。
また、機体の走行制御テスト test_vel_ctrl() は、機体組み上げ後に行うこと。