赤外線リモコンの受信し解析するスケッチを作っていますが、もう少し時間がかかりそうなので、今回は、温度センサーを使った実験の記事を書くことにしました。
今回使用する温度センサーは、LM35DZです。トランジスタのような形をしていますが、摂氏(℃)に比例した電圧を出力することができるICです。(参考:実物の写真)
まずは、回路図から。
接続としては、ものすごくシンプルです。Arduinoの+5Vラインを温度センサーLM35DZの左側へ配線、温度センサーの右側には、GNDラインを接続します。
検出した温度に応じた電圧を取得するために温度センサーの真ん中のピンをArduinoのAnalog0番ピンへ接続します。
赤ラインが+5V、黒いラインがGNDです。
この温度センサーLM35DZの仕様 は、0~100℃が計測可能で、温度係数:10.0mV/℃です。
つまり、0 ℃の時には0V、30℃の時には30×10mV = 300mVが出力されます。
0℃から100℃が計測できる温度の範囲なので、温度センサーが出力する電圧の範囲は、0V~1V(0mV~1000mV)となります。
ArduinoのAnalog入力は、5Vを最大値、0Vを最小値として、1024段階(0~1023)で取得できます。
温度センサーは、0V~1Vの範囲の電圧を出力するので、Arduinoは0~203(1024段階÷5V)の 値として入力を受けることになります。
Arduinoの基準電圧を+5Vとして、温度とArduinoの入力値の関係を式にすると、
公式 温度(℃)=(5×Arduino入力値)÷1024×1000÷10 となります。
たとえば、Arduino入力値が60の時、(5×60)÷1024×1000÷10=29.2(℃)となります。
スケッチは、つぎのようになります。
入力値に応じて、シリアルモニターへ表示することにします。
int Analog_in = 0; // アナログ入力ピン番号
int A_val; // アナログ入力値(0~203)
float tempC = 0; // 摂氏値( ℃ )
void setup() {
// シリアル通信速度
Serial.begin(9600);
}
void loop() {
A_val = analogRead( Analog_in );
tempC = ((5 * A_val) / 1024) * 100;
Serial.println( tempC );
delay(1000);
}
スケッチの説明です。
Serial.begin(9600); シリアルモニターを使用するときに決まり文句です。
A_val = analogRead( Analog_in ); アナログ入力ピンから値を取得し、A_valへ代入しています。
tempC = ((5 * A_val) / 1024) * 100; 取得したA_valから温度(Temperature)を求める式です。
公式 温度(℃)=(5×Arduino入力値)÷1024×1000÷10
1000倍したあと、10で割っているので、スケッチでは、1度で済ますために、100倍しています。
こういった実験が1時間足らずで可能になるのはArduinoの使いやすさのおかげです。
やっぱり、Arduino最高!!
0 件のコメント:
コメントを投稿