2017年2月17日金曜日

サーミスタの温度を計算する


 ご存知の通りMS Officeスイートは文字なり表なりを選択してCtrl-CでクリップボードにコピーしててきとーなドローソフトでCtrl-Vをすれば画像として保存できるんだが、すさまじい解像度が有る。

 とりあえず分圧回路の電圧から温度を計算する方法を考えてみた。間違ってたらごめんね。サーミスタ1つと抵抗1つの受動的な回路でも、様々な組み合わせがある。今回はその内で、サーミスタが電源側、固定抵抗がGND側の分圧抵抗を選んでみた。理由は特になくてきとーに選んだだけだが、とりあえずセンサの配線が断線すればADCは下限に張り付くし、短絡すれば上限に張り付くという判断が行える。もっとも、抵抗を逆にすれば解放で上限側、短絡で下限側となるので、どっちが好きかとかそういう話になる。厳密にはいろいろ有るんだろうけど、とりあえず動けばいいのでキニシナイ。

 以下のテキストボックスに必用な数値を入れればサーミスタの抵抗値(Rth)と温度(temp)を計算できる。とりあえずデフォルト値は手持ちのサーミスタの値を入れてある。
 入力値のチェックとかはしてないので、変な値を入れると変な動きをするのでやらないように。
 VinとR2は回路に合わせて設定し、B, R0, T0はサーミスタに合わせて設定する。Voutを変えればRthとtempが得られる。


Vin Volt
Vout Volt
R2
B degK
R0
T0 degC
Rth
temp degC
計算式は前述のとおりだが、基本的に加減と除算のみで計算できる。ただし1箇所だけlog eが出てきて、コイツが難関な気がする。
 一番、実行時のパフォーマンスが高い方法は、ADCの入力値から温度の値のテーブルを予め与えておくことだが、温度を8bit精度にしたってテーブルは4KiBになるし、±60℃の範囲でも0.5℃程度の分解能しか無い。5℃くらいの精度で十分、とか言ってたんだから0.5℃でも十分といえば充分なのだけど。そもそも抵抗やらADCやらサーミスタ自体やら、全て未校正で組んでそんな精度出るわけ無いだろ、と考えれば0.5℃でも充分なのかも。

 とりあえず次はマイコンで温度を計算する処理を組み込んでみて。なんかそのあたりで超音波風速計も飽きてくる気がするなぁ。

0 件のコメント:

コメントを投稿