温度センサって案外安いものですね。
秋月で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
![](https://blogimg.goo.ne.jp/user_image/7b/2c/c8bf6a6eafe43eaac2854686baac4f1c.jpg)
PCにつないで動かしてみます。
部品数が少ないのにちゃんと動きます。
PCでこんな感じで表示させてみました。
今回はマイコン内蔵のEEPROMに記録機能も付けました。
秋月で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
![](https://blogimg.goo.ne.jp/user_image/7b/2c/c8bf6a6eafe43eaac2854686baac4f1c.jpg)
PCにつないで動かしてみます。
部品数が少ないのにちゃんと動きます。
PCでこんな感じで表示させてみました。
今回はマイコン内蔵のEEPROMに記録機能も付けました。
![](https://blogimg.goo.ne.jp/user_image/1b/5e/e31c6bdbbf909278eeea3565c5e496f3.png)
※コメント投稿者のブログIDはブログ作成者のみに通知されます