Naimonowaのブログ

百姓仕事と電子工作と路上観察

なかなか完成しないものは

改良型PIC温度記録計

 以前に「PICでインテリア電子工作」さんのページを参考にして温度記録計を作成した。

 現在の気温に加えて、1時間毎の過去の気温を記録できる優れた機能があって重宝している。上記のページは今は存在せず、連絡のとりようがないので、この場をかりてお礼を述べたいと思う。

f:id:Naimonowa:20171002153616j:plain

 今回はマイナス温度も測定できるようにすることを目標にした。

 写真はフラッシュを使用しないで撮ったため、ピントが甘くなってしまった。次回は三脚を使用しようと思う。

 左は今回作成した第1作で、持っていたアノードコモン(プラス側共通)の7セグメントLEDを使った。LEDの極性が逆になったのに応じてダイナミック点灯(時分割で点灯させて省エネを図る)に関する部分のハードウエア(駆動トランジスタをPNPタイプに変更)とソフトウエアの変更が必要だった。

 右側が第2作で、温度センサーをLM60というマイナス温度も測定できる(単電源でできる)ものに変更したものである。

 マイコンはPIC16F88というADコンバータを含むものだが、そのAD変換を実行させるのに苦労した。

f:id:Naimonowa:20171002161543j:plain

 元々の温度センサLM35は出力電圧が0ボルト(温度が摂氏0度)から「百分の1ボルト/度」の傾斜で増加するので使いやすい。10ビットのデジタル値(0から1023まで)に変換された温度に対応した変数「atod」を考えると、係数243を掛けて、1000で割ると温度がそのまま求まるので、表示するデータ(温度の10の位と一の位)を得るのは比較的簡単だ。

 ところが

f:id:Naimonowa:20171002162218j:plain

 センサを上記のLM60にするとセンサの出力電圧を温度に変換させるのに工夫が必要だ。

 先ずはPIC16F88に入力する基準電圧の選択が難しい。

 当初1.875V(6.25mVの300倍)としてみたが、予想外の温度表示になった。そこで、基準電圧(外部入力を選択)を2.5V程度にしてみた。(後述のとおり、基準電圧は原因ではなかった)。

 次に、LM35の場合で説明した係数については、基準電圧が2.5VのときLM60に適当な値として391を選んでみた。

 その結果は、またまた予想外の温度表示となった。

 検討した結果、プログラム(Mikro CコンパイラVer8.2)内で変数atodのデータ型であるunsigned int(符号なし整数)の範囲65536までを超えた状態が生じたのが原因と考えた。

 係数を10分の1の39に変更し、割り算の除数を百に変更してプログラムを更新してみた。

 すると、当面の目標である仮想温度としての90度付近の表示に成功した。

 この先は次回へ