MIRSMG5 管理台帳へ戻る

名称 Arduino 単体での動作試験
番号 MIRSMG5D-SYST-0008
版数 最終更新日 作成 承認 改訂記事
A01 2017.04.18 牛丸真司 牛丸真司 初版
A02 2021.05.25 牛丸真司 牛丸真司 管理台帳フォーマットへの変更
A03 2022.05.31 牛丸真司 牛丸真司 内容の一部変更
A04 2024.11.21 牛丸真司 牛丸真司 Arduinoソースプログラムの直ダウンロードを該当ページへのリンクにい変更

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

1. デバイス接続

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



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

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

  1. >Arduino ソフトウェアソースコードpにしたがって、ソースコードをダウンロードし展開する。

    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() は、機体組み上げ後に行うこと。