ということでいよいよ今回は校正。まず下準備で、センサーに番号を振っておく(Photo01)。万一センサーを外した場合に、もとの場所に正しく接続しないと、校正の意味がなくなってしまうからだ。もっともこのセンサーの番号と、実際に取るデータの順番は必ずしも一致していない。

Photo01: 今回はシール+メンディングテープで誤魔化したが、そのうち剥がれて来そうな。もうすこしちゃんとした方法を考えないと。

画面に表示されるのはAnalog In 0~5の順で、ここで振った番号で言えば、

Analog0 : Sensor #4
Analog1 : Sensor #5
Analog2 : Sensor #6
Analog3 : Sensor #1
Analog4 : Sensor #2
Analog5 : Sensor #3

ということになっている。これは判りにくいので、あとでまた番号は振りなおすつもりだ。とにかくこんな感じでセンサーに番号だけ振ったら、ノートPCあたりにArduinoを取り付けて台所(風呂場でも可)に移動する。Photo02がまさに校正の最中の写真である。突っ込んであるのは、DIYショップで購入した温度計(Photo03)で、これとセンサーを深めの容器(今回は金属製の花瓶が手元にあったので利用)に突っ込み、ここに冷水~熱湯までさまざまな温度の水を投入し、この際の温度センサーの値をリアルタイムでとりながら、ついでに温度測定を行うという具合だ。

Photo02: まだ湯気が立っていないので、これは比較的低めの温度のお湯を投入した状況だと思う。こういう際には瞬間湯沸かし器があると便利。

Photo03: シンワ測定の棒状温度計 30cm 200℃。近所のDIYショップでは\298だったが、Amazonで購入すると\600になっている。これしかなかったので200℃のものを購入したが、100℃のものがあればそれで十分な気も。

何をやっているかといえば、なるべく多くの温度で、それぞれの温度センサーがどんなばらつきを見せるかを測定し、それを元に温度センサー自体のばらつきを補正するのが第一、ついで温度計と温度センサーの値を比較することで、センサーの値から温度の値を正しく取得できるようにするのが第二の目的である。こうした目的のために、温度を変えながら花瓶に水を投入し、ちょっと攪拌して水温が安定したところでセンサーの値と温度を目視で測定して記録、を何度か繰り返す形だ。センサーそのものの値は、一連の作業中ずーっと取得しておき、あとでばらつき補正のために利用する(Photo04)。

Photo04: Arduinoをノートに接続したらCOM13:とかに振られてしまったので、あきらめてHyperTerminalを起動する。ちなみにWindows XPだと標準でHyperTerminalが入っているが、Windows 7とかには無いので、この場合はTera Termでも何でもいいから通信ターミナルを用意して起動し、9600bpsで接続する。で、接続したらログをとる設定にしておき、Arduinoからの通信を全部テキストファイルにSaveする。

もし自宅に瞬間湯沸かし器が無いとか、電気給湯器などをつかっているとかいう場合は、まず水道水の状態で測定を行い、これとは別にヤカンなどでお湯を沸かしておき、これを継ぎ足す形で次第に温度を上げてゆくという方法がある。これを行う場合、攪拌をしっかりやらないと測定する温度が不均一になるので注意してほしい。

更に余談になるが、今回は200℃の温度計を入手したが、こちらだと温度の精度は1℃単位、目視でも0.5℃程度が限界だった。もう一段細かい精度が必要な場合、電子体温計などを使うと0.1℃単位で測定が可能になる。ただし電子体温計は当然体温の範囲のみの測定しかできないので、温度校正は30℃前後を中心に行うことになり、測定点数を多く取るのが難しいので注意されたい。

さて、実際に測定結果を見てみよう。まずセンサーの取得結果だが、今回はHyperTerminal経由で523点のデータを取得した。これをExcelに展開して、横軸をAnalog 0の数値、縦軸をAnalog 1~5のそれぞれの値としてマッピングしたのがグラフ1である。大雑把な傾向としては一応直線近似を取っているが、多少ばらつきがあるというか、補正しないと同一の数値には見えないというか。250過ぎでばらつきがあるのは、熱湯を投入した時に(熱さのあまり)攪拌が追いつかず、測定値が不均一になったものと考えられる。

図1

このグラフをいつまでも眺めていても埒が明かないので、ちゃんと個別に分析することにする。グラフ2~6は、Analog 0の値とAnalog 1~5の値をマッピングした値である。ただしグラフ1と異なり、縦軸がAnalog 0の値、横軸がAnalog 1~5の値にしている。グラフ中の赤の破線は、このグラフ中のマッピング結果を直線近似させたもので、右上に近似式が示されている。この近似式は、Analog 1~5の値からAnalog 0の値を算出するための式となるわけで、つまりAnalog 1~5の値を、それぞれの近似式に当てはめてやると、もっとずっとAnalog 0の値に近づく筈である。実際にこの補正を行った結果がグラフ7となるが、先のグラフ1と比較するとずっとグラフが直線に近づいているのが判るはずだ。実際、元のデータのままの分散値(グラフ8)と、補正後の分散値(グラフ9)を比較すると、ずっと分散が減っていることが判る。トータルでの分散の平均値は補正前が8.04、補正後は3.18となっており、この補正でセンサー毎のばらつきも±1℃以内に抑えられた事になる。

図2

図3

図4

図5

図6

図7

図8

図9

ということで分量が多くなりすぎたので、温度との補正は次回廻しとする。

(続く)