■先日、統合リモコンデバイスを作ったけれど、これにはデジタルの温度センサが載っていた。気圧センサとの補正用だけど。それはそれとして、統合リモコンデバイスを作ったので、それまで使っていたリモコンは引退。リビングからベッドルーム用の統合リモコン装置に転用した。ただ、LEDの保持機構が別体なのは使いにくいので、リビング用に作った装置をまねて、アームを自作。配置する部屋が別になるので、明度センサと温度センサを乗せることにした。湿度と気圧は省いた。同じ家の中で気圧差がそうそう生まれるものじゃないし、たぶん湿度もそれほどの勾配にはならないと思う。
ただ、問題があって、今度ベッドルームに再配置するデバイスに乗っているのはATmega48でプログラムメモリが4Kバイトと小さい。赤外線リモコンと通信プロトコルのルーチンを載せたらそれでほぼ一杯。デジタルセンサだとI2CかSPIのプロトコルを処理するルーチンを追加しないとダメで、そうなるとパンクしてしまう。明度センサはAD変換を使うのだけど、それは処理が軽いので乗せられる。AD変換から数値文字列の変換ルーチンもなんとか大丈夫。なので、アナログの温度センサを載せることにした。ルーチンを共用できるので。乗せたのはMicrochipのMCP9700。バイアスで500mV乗っていて、10mV/℃変化する。つまり、センサの出力を読んで、500mV引いて10で割ると温度が解る。
使い方は簡単なんだけど、問題は精度で、ATmegaのAD変換の解像度だと0.01mVが限界。つまり、アナログセンサの精度は1.0℃で、これに誤差が乗ってくる。対してデジタルセンサの解像度は0.5℃くらいにはなる。精度と誤差の問題はあるので、あまり神経質になっても仕方ないけれど、アナログ温度センサの出力はデジタルセンサに比べるとかなり平坦になっている。AD変換した段階で1度単位に量子化されてしまっていることもあるけれど、温度変化への追随性はあまりよくないように見える。たぶん、一度アンプを通して10倍程度ゲインを上げてやれば改善できるのだろうと思う。ただ、その場合、500mVのバイアスが問題で、バイアスだけで10倍のゲインで5Vになってしまうから測定できなくなってしまう。大雑把な雰囲気を把握する補助的なセンサとして扱えばいいのだろう。
とりあえず受動的なデバイスはこれくらいにしておいて、次からは能動的なデバイスを組もうと思っています。