卒業研究奇 死闘編 変換地獄
前回まででとにかくセンサーから値をとりだせた。
えっとこの値はなんだろう。ということで。(大変がんばって検索して)調べたところ。
spiデバイスからの応答、(だいたい)10bitでかえってくるそうです。つまり0-1023の間です。
でその値は電圧に読み替えるには、ということでgoogle呪文「fsr 電圧」で召還された偉人のページを拝見すると。
サンプルコードにこうある。
void setup(){
Serial.begin(9600); // シリアル通信速度
}
void loop(){
// 変数の宣言
double Vo, Rf, fg;
int ain = analogRead(1);
// アナログ入力値から出力電圧を計算
Vo = ain * 5.0 / 1024;
// 出力電圧からFRSの抵抗値を計算
Rf = R1*Vo / (5.0 - Vo);
// FRSの抵抗値から圧力センサの荷重を計算
fg = 880.79/Rf + 47.96;
// 荷重データをシリアル通信で送る
Serial.println(fg);
delay(1000);
}
つまり、アナログ値0-1023 → ボルト範囲 0-5.0 にマッピングするばよいということになる。
上記は Arduino なので使用電圧は5v 、こっちはRaspberry Pi なので 3.3v
なので FSRからの電圧 = 取り出したデータ /1024 * 3.3 ということ。
で、この電圧から重さを出すには まず 抵抗値を算出 して、そこから計算式で荷重をだせばいいのですね。
fg = 880.79/Rf + 47.96;
これは、どこから? どこからかの引用のようですね。
ArduinoとFSRで重さを調べる(1) - フィジカル・コンピューティング
ArduinoとFSRで重さを調べる(2) - フィジカル・コンピューティング
実際のモノの重さと値の相関から回帰式を捻出している。
なぜだろう。公式の資料にあたろう。
データシートをみるとこうある。
センサーは、物理的にいく層のレイヤーになっていて、もともと電気的に抵抗がかかっている状態。でも、上から力がかかると、レイヤーの接触面が増えて電気の通りがよくなる(=抵抗が減る)。その電気の通りの程度→電圧の変化によって間接的に力を検知するのがこのセンサーらしい。(いまさら理解。。)
で、電圧の変化と力の関係は以下とのこと。
抵抗が減少(=電圧が増える) ということは力が強くかかっているという関係を表したのが左のグラフ。電圧が増えることと力の関係を表したのが右側のグラフ、構成する回路にはさむ抵抗の値によって関係式が変わってくるようです。私の場合は10Kオームの抵抗なので紫の線ですね。でこの線の関数式はどこに。
‥‥
‥‥
どこにもない。インテグレーションガイドにもない。グラフでしか提供されいない。
もしかしてイメージですか、こんなイメージでございます、ということなのか。
「お客様の個人的な意見です、適切な運動と食事管理もおこなった結果です」
と、そういうことなのか orz
そうか。だから、さっきの偉人は回帰式を専用のソフトで捻出していたのですね。
もう、これ以上自分の環境と同一の偉人は召還できなさそうなので、変換式はみずからなんとかしなければならなくなりました。(続)
閑話休題: このときのchromecast はこれ、文句なし。