温度計測
Osamu Tamura @ Recursion Co., Ltd.
1. 概要
温度センサをつないで温度を計測しました。
2. 回路図
温度計測はサーミスタで分圧するのが簡単ですが、得られた値の処理がちょっと煩わしいようです。入手容易で精度が得やすいことから、ここでは温度センサICの LM 35DZ を使いました。10mV/℃ の出力なので換算も簡単です。
このICには4V以上の電源が必要です。電池2本では足りないので、パルス発生して倍電圧を生成し供給しました。ダイオードにはショットキーバリア型の適当なもの、コンデンサ(10〜33μF)にはできればタンタルを使ってください。
コネクタ番号とプログラムは1号基板用です。2号では ADC5 の代わりに ADC0 などを使い、それに伴ってプログラムも変更してください。 なお、2号では AREF のコンデンサは実装済み。また、USBバスパワーなら倍電圧回路も不要です(つまり LM 35 をつけるだけ)。
図1. 温度計測の回路図
3. プログラム
10mS 割り込みでポートB1を反転させます。温度計測は1秒ごとの割り込みで測定します。必要に応じて計測間隔を広げてください。LM 35 では計測出力が安定するまで最大3分ぐらいかかるようです。
AD変換にはAVR 内蔵の基準電圧 1.1Vを用いました。このレンジで10bit 計測すると、分解能がほぼ1mVとなります。つまり計測値がそのまま 0.1℃単位の温度となります。10で割って間に小数点を入れ表示しました。/* LM35DZ による温度計測 ポートB1 にパルスを発生し、倍電圧整流して LM35DZ に供給 LM35DZ の出力を ADC5 でAD変換して表示 */0xff 0x24 =sfr // ポートB1 を出力 0xfd 0x25 =sfr // 残りをプルアップ 0 0x27 =sfr // ポートC5 を入力 0xdf 0x28 =sfr // 残りをプルアップ :ポートの初期化 0x20 0x7e =sfr // ADC5 を使用 0xc5 0x7c =sfr // ADC5 を選択 0x87 0x7a =sfr // ADC を起動 :ADC_初期化 0xc7 0x7a =sfr :ADC_開始 0x78 sfr 0x79 sfr 8 << | :ADC_読み 0 0x7a =sfr 0 0x7e =sfr :ADC_終了 0x25 sfr 2 ^ 0x25 =sfr // ポートB1 を反転 :倍電圧発生 ADC_読み 10 div swap %d '.' %c %d "\r\n" %s ADC_開始 :温度計測 ポートの初期化 ADC_初期化 { 倍電圧発生 温度計測 } interrupt { @c? break // キー入力で停止 } do @c . ADC_終了 :お始めリスト1.温度計測のプログラム
AD変換をプログラムをするときは特に、データシートをよく読んでください。
21 Jun. 2006