PT100(白金RTD)の抵抗値から温度へ変換するライブラリ

PT100の抵抗値から温度への変換は一般的に浮動小数点と平方根が使われているようだ。非力なMPUでは約1ms程度の計算時間がかかるらしいので、より高速な変換テーブル方式のライブラリを考えてみた。

まず、事前にPC上で公式演算を実行した結果を元に抵抗値から温度へ変換するテーブルを作成する。変換テーブルは4Ω毎(温度は約10℃単位)に作成し、抵抗の中間値は前後の温度の増分から比率計算して求める。

16ビット整数演算のみとし、かつ、精度を確保するため抵抗値(入力値)と温度(戻り値)はそれぞれ16倍した値とする仕様としたが、公式演算との比較では0.07℃以内の誤差に収めることができた。まぁ、必要十分すぎる精度だろう...

【概要】

対応する温度範囲は約-30℃~300℃。rはRTDの抵抗値(小数部含む)を16倍した値を指定する。
戻り値は16倍された摂氏温度(小数部含む)を返す。整数部だけなら4ビット右シフトすれば良いし、小数部も必要なら16で割る浮動小数点演算を行えば良い。

cは16倍された温度(小数部含む)を指定する。戻り値は16倍された抵抗値(小数部含む)を返す。

【サンプル・スケッチ】

【ライブラリ】