プロが教えるわが家の防犯対策術!

実際に回路に流れる電圧をarduino UNOで計測したところ、求められる温度が実際の気温より明らかに低くなってしまいました。ATサーミスタもarduino UNOも初心者なので、どういった原因でそれが起こり得るのかを教えて欲しいです。

回答の方をよろしくお願いいたします。

http://www.geocities.jp/neofine9/work/thermis2/t …
こちらのサイトの「近似直線の求め方を変えてみる」を参考にしてExcelシートにデータを入力、基準電圧と直列抵抗をそれぞれ「2230」「19580」としました。

基準電圧はarduino UNO本体の3.3v電源とA0をテスターで繋いで計った数値を使用しています。

測定結果は大体1.64V(1640mV)ほど。グラフでは-10℃を下回っていますが、暖房が効いた室内なので考え難い数値です。

下のソースコードは実際にarduino UNOに書き込んでいるものです。

float B=3435,T0=298.15,R0=10.0,R1=19.58,v=2.23,n1,rr1,t;
//B定数、T0=25度(絶対温度)、R0=0負荷抵抗値,v=基準電圧,<n1とrr1とtの定義>
int n;
unsigned long nextTime;
void setup(){
Serial.begin(9600);
nextTime = millis() + 1000;
}
void loop() {
float val;
if (nextTime >= millis()) {
nextTime = nextTime + 1000; // Set Next analyze time

n=analogRead(0);
n1=n*v/1024.0;//計測電圧との比較(今回の質問での基準電圧と比較する)



rr1=R1*n1/(1024.0-n1);//サーミスタの抵抗値
t=1/(log(rr1/R0)/B+(1/T0));//温度を求める計算式
//Serial.print(n);

Serial.print(n1);//計測電圧をシリアルモニタに出力

//Serial.print(rr1);
//Serial.print(t-273.15);//tから273.15引いた温度℃
Serial.println("");
delay(500);
}
}


質問に必要と思われる情報を上に載せておきます。

A 回答 (1件)

>実際に回路に流れる電圧をarduino UNOで計測したところ~


まさかとは思うが、回路に直列に接続し計測していませんか。
本来なら並列に接続し、
「実際に回路に【掛かる】電圧をarduino UNOで計測したところ~」
になるはずだ。

・・・
普通に並列接続で計測しているよね。
(プログラムは読んでいない)

サーミスタのインピーダンスは結構高い。アルドゥイーノの入力インピーダンスと比較してみよう。
アルドゥイーノのインピーダンスがサーミスタの100倍以上あれば、まあ問題はないだろうが50倍未満であれば大きな誤差が生じることになる。
インピーダンスが十分高い場合は、計測方法に誤りがないか見直してみよう。
もしもインピーダンスが低い場合は、測定側(アルドゥイーノと直列)に大きな抵抗器を入れて測定電流が分流しないよう処置し、
挿入した抵抗器により分圧した電圧を後で補正すればよい。(下図)
抵抗器はアルドゥイーノの入力インピーダンスが見かけ上10倍・100倍になる値を持つものにすると計算が楽。
「【急募】ATサーミスタを用いた温度測定の」の回答画像1
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
直列接続にしていました。お恥ずかしい限りです。
インピーダンスという単語は初めてお聞きしましたが、要するに「サーミスタの方に流れる電流が大きくなるように(アルドゥイーノ側>サーミスタ側)Ωの値を調節」すれば良いのですね。
是非その方法で試してみたいと思います。重ねてありがとうございました。

お礼日時:2016/01/14 09:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!