某社の回転モーターの通信を昨年末に行った時の備忘録。
専用ソフトを使ってシリアルで通信すると、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のプログラミングに時間を費やしていた。
莫大なデータの解析を簡単にするべく、本腰を入れて取り組んで、まあまあのところまで来ている。
データはとった傍から自動で解析して、後で解析の時間を取らなくすることが目標。
後は装置関数を入れたコンボリューションフィットとグローバルフィットのプログラムを作成してお終いにする予定。