« 秋月、LCDオシロ用のPCケーブルを作成 | トップページ | プリント基板で作る、赤外線解析リモコンの製作 »

2010年2月 8日 (月)

プリント基板で作る、温湿度計の製作

Pcb_tmphum 書籍「プリント基板で作るPIC応用装置」に出ている温湿度計を組み立てました。

温度センサとしてLM61CIZを使用し、湿度計としてHS15Pを使用します。LM61CIZは、温度に比例した電圧が出力されるので、AD変換器で入力し、1次関数で変換すれば温度が得られます。

湿度は、HS15Pの測定条件が結構面倒です。電圧として、1Vrmsの交流を印加し、そのインピーダンスを測定する必要があります。また、インピーダンスが、湿度に対数的で、それらを合わせて測定する必要があります。

湿度計の測定は、以前にも製作したことのある、理想ダイオード+対数アンプをオペアンプで構成して読み込みます。湿度計HS15Pの湿度とインピーダンスの関係はデータシートを信頼するものとして、インピーダンス代わりの抵抗値を数本測定することで、校正を行なっています。

温度の測定は、tmp=(vt-186)*10/31によって求め、

湿度の測定は、hum=bresenham(vh+133,62,770)によって計算しますが、bresenhamという関数は、よく読んでみたところ、浮動小数点を使用せず、整数のみで、下記の計算をする関数でした。
hum=(vh+133)*62/770

これにより、一次変換しますが、対数変換は対数アンプに依存しています。Cコンパイラを使用しているので、メモリサイズに余裕があれば、浮動小数点を使用したほうがよいのではないでしょうか。整数として計算されるので、humは、小数点以下を切り捨てた整数として表示されます。

結果の表示は、RS232Cで接続されたパソコンに表示されますが、改行(LF)のみ行なわれて、復帰(CR)が行なわれないようなので、プログラムの出力に「¥r」を追加しました。通常は、LF「¥n」は、Windowsに対しては、CR+LF「¥r+¥n」に変換されるのですが、変換されませんでした。

このシリアル通信ですが、割り込みによってプログラムと並行して入出力が行なわれるものです。説明を見ると、私が製作して発表しているものと同一でした。私がこのやり方を開発するまで使われていたのは、ビットタイムのディレイを置きながら、スターとビット、データ8ビット、ストップビットを送り出し、反対に受信では、スタートビットが来るのを監視し、スタートビットが来ると半ビット置いてビットの中央にして、そこから1ビットタイムごとにデータビットを読み取るというやり方でした。これは、入出力に専念しなければならず、シリアルデータを読み込みながら、プログラムは別の処理をすることはできませんでした。私は、これを割り込み下で処理するようにして、並行して処理が行なえるようにしたものを発表しています。

プログラムはきれいに清書されて見やすくコーディングされていますが、プログラムの著作権は、どのように実現するかを考え出したことを尊重するものと思います。少なくとも参考文献などに表示して欲しかったと思います。

このやり方では、私の場合、9600BPSとして使用していますが、その条件として、20MHzクロック動作、割り込み間隔をあわせこむ、ことが必要です。ここで使用しているのは、内蔵8MHzクロックであり、C言語であるため割り込み間隔が正確ではありません。1200bpsで、208μSごとの割り込み間隔としたとき、20μS誤差があると、RS232Cで1%以上誤差となってしまいます。20μSは、8MHzクロックでは40命令です。

もう少し丁寧に扱えば、4800bpsくらいは可能と思うのですが、ここでは、1200bpsが限度となっています。

雑誌、書籍、インターネットには、色々と価値あるソフトが転がっていますが、良く吟味して使わないとその本領を発揮できないと思います。(本当は、源著者をもっと尊重してもらいたいと思います)

« 秋月、LCDオシロ用のPCケーブルを作成 | トップページ | プリント基板で作る、赤外線解析リモコンの製作 »

製作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 秋月、LCDオシロ用のPCケーブルを作成 | トップページ | プリント基板で作る、赤外線解析リモコンの製作 »

フォト
無料ブログはココログ
2016年6月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

USBとマイコンの参考書購入