沼津高専 電子制御工学科

MIRS0901 ソフトウェア開発 モータ制御PICプログラム仕様書

MIRS0901-ELEC-0006

改訂記録

版数

作成日

作成者

承認

改訂内容

A01

2009.10.18

戸塚

武藤

初版

 


 

目次

1.はじめに

2.開発環境

2.1 開発環境変更による不具合

3.関数

3.1 rotary()

3.2 p_control()

3.3 communicate()

3.4 serial()

4.おわりに(脚としての使命)


1.はじめに

このドキュメントはMIRS0901班モータ制御ボードに搭載するPIC16F628A用プログラムについて解説するものである。
ハードウェアの変更により2つのモータをPIC16F628Aワンチップで制御することになったので、プログラムの変更を行った。

標準機のプログラムでは正転中にいきなり逆転するように命令を送っても逆転に切り替えられない、PIC始動時とパソコンからストップ命令を送った後にモータの逆転ができないなどの不具合があったため、これらの改善にも努めた。

 



2.開発環境

本プログラムは以下の環境を用いて作成された。

Table 1 PIC用プログラム開発環境

 

品名

Company

開発言語

C言語

 

コンパイラ

PCM v.3.155

CCS

エディタ

PCM v.3.155

CCS

書き込み機

AKI−PICプログラマー Ver.4

秋月電子

 

3.関数

本プログラムは次の4つの関数によって構成されている。

3.1 rotary()

左右ロータリエンコーダの値の取得を行う

・ハードウェアの削減

標準機ではプリップ・フロップを用いてロータリエンコーダの出力をデコードしていたが、ソフトウェアでデコードをする。

3.2 p_control()

左右モータのP制御を行う

 

・プログラムメモリへの配慮

本来は標準機同様PIC16F88を使うべきであったがドキュメント作成の環境では扱うことができなかったため、まずは手近にあったPIC16F84Aを採用した。

PIC16F88のプログラムメモリが約7Kbyteに対し、PIC16F84Aのプログラムメモリは約1Kbyteである。

左右のPI制御プログラムを書いたがPIC16F84Aプログラムメモリには収まらなかったため、P制御を行うことにした。

しかしPIC16F84Aでは安定したシリアル通信ができないことがわかったので最終的にはPIC16F628Aにそのままプログラムを移植した。

 

・制御方式の検討

エクセルに標準機PI制御のプログラムをそのまま移植してシミュレーションを行った。

この結果とP制御の結果のグラフをFig3.1,Fig.3.2に示す。

青:標準機PI制御

橙:MIRS0901のP制御

 

Fig.3.1目標速度=100 at 時間=0

 

Fig.3.2目標速度=100 at 時間=0,目標速度=50 at 時間=2

 

Fig.1よりP制御よりもPI制御の方が緩やかに目標速度へ近づいているのが解る。

Fig.2よりどちらの制御も目標値に対して追従できていることが解る。

 

双方には違いが見られるが、走行試験の結果、P制御でも停止、発進をスムーズに行うことができた。

これよりP制御の採用を決定した。

3.3 communicate()

左右モータの速度比が一定に保たれるようにする

 

・効率化をめざして

電子コンパスモジュールの搭載によりMIRS0901の進行方向の補正は強力になった。誤差±0.1の精度を誇る。

しかし、補正を重ねながら走行していれば時間ロスにもなるし、非効率である。

そこで、ホスト(パソコン)から送られてきた左右タイヤの速度データを基に左右タイヤの回転速度を計算し、左右タイヤの回転速度を常に一定に保つようにした。しかし、この機能は上手く動作しなかったので実際には採用しなかった。

3.4 serial()

シリアル通信を行う

・複雑な処理が苦手なPICへの配慮

確実なシリアル通信を行うために、通信中はPICに他の処理をさせるのは望ましくない。

一度に数回にわたる通信を行うと、通信に時間がかかりロータリエンコーダの値を取りこぼしてしまう。

よって、送信に関しては一度の全関数の実行に対して一度(8bit)しか通信できないようにした。

受信に関しては受信したら割り込みが入り通信するようにしているので、パソコン側のプログラムで一度にあまり多くの通信をしないようにしている。

4.おわりに(脚としての使命)

移動ロボットにとって“脚”は非常に重要である。“脚”が無ければ移動はできないし、誤動作を起こせばそこで競技終了である。

そのため今回の開発は非常に慎重に行った。これからはMIRS本番に向けて多くのデバッグを繰り返し、より信頼できるシステムに仕上げなければならない。

このドキュメント製作者は駆動部回路とPICのプログラム、PICと通信するパソコンのプログラムの作成を受け持った。

一人だけでは気付けないようなミスがあるかもしれない。製作者及び他の班員に余力があれば皆で積極的にこのシステムについて話し合うべきである。



関連文書

MIRSMG3D モータコントロールボード仕様書(MIRS0901-ELEC-0005)