H8-3069ネット対応マイコンにMESを入れる > 基本編13.温度センサLM35DZをつなげる(A/D変換)

13.温度センサLM35DZをつなげる(A/D変換)

温度を表示しよう

ついに温度です。LM35DZを使います。単純だからです。1℃あたり0.01Vと、リニアに出力します。
写真はLM35DZと印字してある面です。赤いクリップは+5V(CN2の2番ピン)、黒いクリップはGND(CN2の1番ピン)白いクリップはAN0のピン(アナログ変換0チャンネル)に接続します。詳しくはLM35DZの説明書をご覧ください。

LM35DZの接続


CN2の1番ピン5Vと2番ピンGND

それから、JP2とJP3はそれぞれジャンパーしておきます(赤色○の部分)。

ジャンパーJP2とJP3

プログラム

プログラムはやまねこさんのを参考にして作りました。

/*温度センサLM35DZをつなげる(A/D変換)*/ #include <h8/reg3067.h> #include <mes2.h> #define VREF 5 int main(void){ unsigned int data,ondo; volatile int r; float v; while(1){ data = 0; r = ADCSR; //読み込んでエンドフラグを0にする sleep(10); ADCSR = 0x20; //0chで変換スタート sleep(10); while(!(ADCSR | 0x80)){;} //最上位ビットに1が立ったら変換終了 sleep(10); data = ADDRAH << 2; //上位8ビット data |= ADDRAL >> 6; //下位2ビット v = (float)data * 5 / 1024; //電圧になおす printf("%d\r", data); printf("%d.%01d%01d[V]\r", (int)v, (int)(v * 10) % 10, (int)(v * 100) % 10); printf("%d.%01d[deg]\r", (int)(v * 100), (int)(v * 1000) % 100 % 10); sleep(1000); } }//main

ここにプログラムをおきます。拡張子をtxtからcに変換してお使いください。

プログラムは前回の電圧取り込みとほとんど一緒です。最後の電圧表示の部分で、小数点第二位まで表示しているところが異なります。

ハイパーターミナル上0.25V

マルチメータも0.25V

25度だそうです。・・・1月なのに・・・。

温度の正確性は別として、1秒ごとの表示更新でかなりずれがあるので、移動平均でもかけたほうがよさそうです。
また、本来はオペアンプとか使ったりするようです。しかしここでは、A/D変換できた、ということにとどめておこうと思います。