1. はじめに
ビー・エル・オートテック社の6軸力覚センサの使い方をまとめました.
とりあえず,Simulinkでモデルを組んでdSPACEで実行する方法を記事にします.
Arduinoで実行する方法はまた今度.
2. 準備するもの
- 本体
- アンプ
- 12V電源(アンプに給電)
- 校正行列データシート
- メーカの説明書
入手先(要メールアドレス)
https://www.bl-autotec.co.jp/products/index.php?act=list_view&pid=78 - 端子台 7極以上
3. 配線
アンプに接続するケーブルは50極構成になっています.
アンプの外部電源用コネクタに12Vを供給する場合
信号6個+GNDの7本繋げれば使えます.
50極ケーブルから給電する場合
別途2極ずつある12VとGNDに接続します.
説明書(RMS増幅ユニット取説-(Rev3.0).pdf)にカラーコードが載っているものの,実際のケーブルにその色がなくて悪戦苦闘...
仕方なく検電ドライバを使ってコネクタとバラ線の接続をチェックしたところ,
説明書の色は緑→白,青→黄として捉えれば問題なさそうです.
そのため,システム全体の接続はこんな感じになります.↓
4. Simulinkモデル
(1) アナログ値に変換 説明書4(1)
±5Vのアナログ電圧値を0~4096(12bitの場合)の数値に変換します.
メーカの用意した校正行列は,アナログ電圧値ではなくADCを通した後のデジタル値に対応しているからです.
DT: デジタル値
Sg: アナログ電圧
Dt_i = \dfrac{2048 \cdot Sg_i}{5.0}
(2) オフセット
取り付けた状態でセンサ値を0にするためのオフセット用ブロックです.
(3) 行列変換 説明書4(2)
校正行列のデータシートの数値をconstantブロックに行列として打ち込みましょう.
一度メモ帳に書き起こしてからSimulinkにコピペすると間違いがないと思います.
Matrix Multiply
ブロックの上側が校正行列,下側がセンサ値(count)になるように接続します.
(4) カウント値換算 説明書4(3)
行列演算後の数値の単位はcountになっているのでcountを数値に換算します.
以下のゲインをかけるだけです.
力の場合
49\times10^{-3}
トルクの場合
0.98\times10^{-3}
(5) 補正 説明書4(6)
(1)でアナログ電圧→アナログ値変換をしている場合は補正が不要です.
計測プラットフォームのADCの分解能が12bit以外は後ほど補償値をかけます.
実際に試していないので確証はありませんが,恐らくArduinoの10bitのアナログchような
直接アナログ値が出力される&分解能が12bit以外のときの話かと.
(6) フィルタ
ところどころTransfer function
ブロックを用いた1次遅れフィルタを挟んでいます.
これは計測ソフトウェアからセンサ値を見やすくするためのものです.
時定数T=0.2くらいが見やすいかな.
ベクトル一括でこのフィルタをかけらればブロック数を減らせるのですが,できないみたいなのでフィルタ周辺が肥大化しています...
注意事項
-
センサ値の原点
Micro-A, Micro-A-SAともにセンサの端に原点がないことに注意.
説明書の寸法図に原点が記載されているのでそれを参照しましょう. -
出力のずれ
重量固定の2.5 kgの錘をぶら下げてみると1 Nくらい小さく値が出たのが気になるところ.
別の軸に分散しているわけでもなく...
より厳密な測定をしたい人は重量-アナログ電圧特性を計測して補正ゲインをかけるのがいいと思います.