通信

某社の回転モーターの通信を昨年末に行った時の備忘録。

 

専用ソフトを使ってシリアルで通信すると、1度回転するのに398パルス必要なことが分かる。

1.0度をセットすると、コマンドとしては16進数(hexadecimal number)で018Eが出てくる。

この数字は、10進数に直すと398であり、実際の規定のパルス数と一致する。

10進数に直すには018Eを2進数に一度変換する。

0 -> 0000

1 -> 0001 (=1)

8 -> 1000 (=2^3)

E(=15) -> 1110 (=2^3 + 2^2 + 2^1)

なので、018Eは 000 0001 1000 1110 となる。

この2進数から10進数を求める。つまり、

18E = 2^1 + 2^2 + 2^3 + 2^7 + 2^8 = 2 + 4 + 8 + 128 + 256 = 398

となり、上記の10進数と16進数の値が変換できる。

 

これらの変化はオンラインでできるサイトがすぐに検索できるが、Labviewで変換する場合は以下の関数を使えばよい。

 

ちなみに、モーターの角度分解能は1/398で0.00251...となるが、jogを0.001にするとコマンドは0で0.002から1が出てきて、2になるのは0.004からである。下三桁だけ見ると10進数と16進数の関係が合っていないが、下四桁は繰り上げる仕様なのか?

実際にモーターの角度変化が起こるのは、調べるjogが0.01からであるが、位置は0.002~0.007程度でばらつく。

これがモーターの精度と言える。

0.02にセットしても±0.002以上、つまり10%以上は誤差が出る。

0.10にセットしても5%程度は誤差がでる。

ただし、この誤差は角度を動かすたびに起こるため、何度も動かす場合は予測値から一回の誤差分でおおよそ落ち着く。

 

日をさかのぼるが、前回の更新からはほとんどLabviewのプログラミングに時間を費やしていた。

莫大なデータの解析を簡単にするべく、本腰を入れて取り組んで、まあまあのところまで来ている。

データはとった傍から自動で解析して、後で解析の時間を取らなくすることが目標。

後は装置関数を入れたコンボリューションフィットとグローバルフィットのプログラムを作成してお終いにする予定。