PicBasic Proで、A/D変換値から温度の位ごとの数値を求める

無断転載および再配布を禁じる。
Copyright (c) 2012 All rights reserved.


1.温度とA/Dコンバータの変換値との関係

 温度センサ回路では、温度センサ「LM35」で温度を測定し、その出力(10mV/℃)をOPアンプ「LM358」で5倍に増幅して、PICのA/Dコンバータに50mV/℃の電圧を与えた。

 そのため、温度TとOPアンプの出力電圧VTとは、次のような関係がある。

  T(℃)=VT(mV)/50

 一方、PICのA/Dコンバータは、電源電圧5000mVを基準とし、それを1023とする分解能で入力電圧を取り込んでいる。

 したがって、OPアンプの出力VTとA/Dコンバータの変換値DTとは、次のような関係がある。

  VT(mV)=DTx 5000(mV)/1023

 以上のことから、温度TはA/Dコンバータの変換値DTと次のような関係になる。

  T(℃)=DTx 5000(mV)/(1023x 50)
     =DTx 100/1023


2.A/Dコンバータの変換値から温度の各位の値を求める方法

 上記により、A/Dコンバータの変換値DTから温度Tを求めることができるが、液晶表示器などに表示するには、一般的に温度の位ごとの値を求める必要がある。

 PicBasic Proには位を指定してその位の値を求める「DIG」関数があるので、上記の関係より、温度値を10倍して100の位、10の位、1の位を求めれば、それぞれ温度の10の位、1の位、少数第1位として使うことができるように思える。
 それには、変換値DTを1000倍してから1023で割ればよいのだが、PicBasic Proの変数は65,535を越えられないという制限があるので、変換値DTが65(6.3℃)以下でしか、1000倍の演算ができない。
 また、変換値DTを先に1023で割ると、今度は値がいったん1以下になって失われてしまう。

 そのため、たとえば温度の10の位、1の位の値をそれぞれ求めるには、次の演算を行う。

 10の位T10 :次の式の整数部分
         DTx 10/1023

 1の位T1 :上式の「余り」を10倍して1023で割った整数部分
         (DTx 10/1023 − T10)x 10/1023


3.A/D変換した温度の各位の値を求めるPicBasic Proプログラム

 上記の演算をPicBasic Proのプログラムにより行うには、次のようにする。

ADCIN 2, B0'50mV/℃の電圧をA/D変換する。
PAUSEUS 60
B0 = B0*10'A/D変換値を10倍する
B00 = B0/1023'1023で割った整数部分が10の位の値
B010 = B0//1023'1023で割った「余り」の値
B01 = B010*10/1023'上の行の値を10倍して1023で割った整数が1の位の値

 さらに、同様のやり方で、小数の位も求めることができる。
 ただし、この例の場合は、A/D変換値1あたり5mV弱なので、温度値の有効桁は、少数第1位までである。