元杜重工

*あつめたりつくったり* 過去資料整理中
鉄道・船・マンホールの写真と艦船プラモデル・電子工作も少々

PICで温度計測

2018年03月31日 | 電子工作
温度センサって案外安いものですね。
秋月で1個60円で売っていた
高精度IC温度センサLM61CIZ[LM61CIZ]
を使って温度を測っていみました。

センサのほかに使用するのはPICマイコン12F1822とPCとの接続に使用するFT232R組み込みのケーブルTTL-232R-5V。
PC側はTera Termを使用します。参考記事

LM61は-30℃から+100℃を300から1600mVで表現します。電源は2.7~10Vに対応なので乾電池2本でもUSBでも可能。

PIC12F1822は8ピンのマイコンで10bitのAD変換機能(ADC)やUSERT機能があります。
今回をこれを利用してセンサのデータを変換してPCに表示させます。

ADCは8ケタ+2ケタの10bit(0~1023)に変換できます。2ケタ+8ケタの右揃えにもできます。
またAD変換には参照電圧が必要です。電源電圧や外部のバッテリなどのほかに固定参照電圧(FVR)という機能があるので今回はこれを使います。
センサ出力は最大で1600mVですので2014mVのFVRを使用します。

ADCのクロック速度の設定が必要です。
マイコンのデータシートにマイコンの動作周波数(FOSC)ごとの推奨速度が示されています。
今回は1MHzで動作させるため、FOSC/2(2us)としました。

ソースコードの一部を紹介
◆ピンの設定
ANSELA = 0b000001; //RA0はアナログ入出力
RXDTSEL = 1; //RX/DTの機能をRA5 に割り当てる
TXCKSEL = 1; //TX/CKの機能をRA4 に割り当てる
TRISA = 0b110101; //RA0,2,5,6を入力 (2は別用途)
WPUA = 0b00000; //弱プルアップしない

◆設定
FVRCON = 0b10000010; //FVR有効、2048mV
ADCON0 = 0b00000001; //AN0をAD変換、ADC有効
ADCON1 = 0b00000011; //左詰め、FOSC/2、<1:0>=11: VREF+を内部の固定参照電圧(FVR)モジュールに接続する

◆変換実行
ADGO = 1;
while(ADGO);

変換結果はADRESH、ADRESLへ格納される。

左詰めの場合、上位8bitのみ使用して温度へ換算するとこんな感じ。
temp = (ADRESH*4)/5-60; // 1degC = 10mV


PCにつないで動かしてみます。
部品数が少ないのにちゃんと動きます。

PCでこんな感じで表示させてみました。
今回はマイコン内蔵のEEPROMに記録機能も付けました。

最新の画像もっと見る

コメントを投稿