SSブログ

ディスプレイは何とかなったので [ソフト]

DSC_0010.JPG
今度は、温度を測ってみる。
温度センサーは、いろいろな種類があって、

ボクの電子工作ノート

ボクの電子工作ノート

  • 作者: 鈴木哲哉
  • 出版社/メーカー: ラトルズ
  • 発売日: 2012/06/18
  • メディア: 単行本(ソフトカバー)


参考にさせてもらっている↑では、温度で抵抗が変化するものを使い、
発信回路の周波数をカウントして、温度に変換しているが、
私は、精度は落ちるかもしれないが簡単な、温度で電圧が変化する
National Semiconductor のLM61CIZにした。
測定範囲:-30℃~100℃、温度係数:+10mV/℃ 、動作電圧範囲:+2.7~+10V。
つまり、ある程度の電圧をかけてあげると、温度に応じた電圧を出力してくれるというもの。
この電圧をPICでA/D変換して、温度に換算する。
A/D変換では、PICは電圧を基準電圧の1024分率で出力するので、
電圧=A/D変換の結果/1024×基準電圧。0℃が0.6V、1℃あたり0.01Vずつ増えるので、
温度=(電圧-0.6)/0.01になる。

というわけで
TRISC = 0x01; // 入出力設定
OpenADC( // ADC初期化
ADC_FOSC_4 & // AD変換クロック指定
ADC_RIGHT_JUST & // 右詰め出力
ADC_12_TAD, // チャージ時間
ADC_CH4 & // アナログ入力チャネル
ADC_INT_OFF, // 割込みは行わない
ADC_REF_VDD_VDD & // 正基準電圧
ADC_REF_VDD_VSS, // 負基準電圧
ADC_0ANA ); // すべてデジタル入力に設定
ANSELbits.ANS4 = 1; // AN4はアナログ入力に設定
ConvertADC(); // AD変換開始
while(BusyADC()); // AD変換終了待ち

tempw = ADRESH * 256 + ADRESL;
temp = tempw*3.22-600; // AD変換結果=>温度
itoa(temp,tempc);           //2進=>文字
で、温度×10をLCDに表示してみたけど、”.”を出した方が感じが出るかなと
for(i=0;i<5;i++){
if(tempc[i]==0x00){
tempc[i+1]=tempc[i];
tempc[i]=tempc[i-1];
tempc[i-1]=dot;
break;
}
}
を追加。”.”ごときで結構大変。

正確な温度計が、家にないので校正ができない。
暑いか寒いか程度の話なので、正確な温度も必要ないので、
後は、体で決めるしかないね。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

いろいろ覚えることも多く、知りえた知識を貯めておこうと思います。先はまるで見えないですけどね。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。