PR

Arduino学習⑭ Lesson15 温度計
Arduinoの勉強会。LCDディスプレイに温度を表示してみた。

Arduino学習

サーミスタ(Thermistor)

サーミスタは、サーマル抵抗で、温度によって抵抗値が変化する抵抗です。技術的には、すべての抵抗器は、温度によってわずかに抵抗値が変化しますが、その変化量は非常に小さく、測定するのが困難です。サーミスタは温度によって抵抗値が大きく変化するように作られており、1℃あたり100Ω異常変化させることが出来ます。
サーミスタにはNTC(負の温度係数)とPTC(正の温度係数)の2種類がありますが、一般的に温度測定にはNTCセンサーが使用されています。NTCセンサーは、温度が上昇すると抵抗値が増加します。

サーミスタ

使用部品

必要な部品は以下になります。

  • Elegoo UNO R3 x 1
  • LCD1602 Module x 1
  • 10KΩ 抵抗器 x 1
  • Thermistor x 1
  • Potentiometer(10k) x 1
  • 830 tie-points Breadboard x 1
  • M-M Jumper wires x 18

以下のスターターキットに使用部品はすべて同梱されています。

LCD1602 (ディスプレイ)とPotentiomaterについては、以下の記事を参照してください。

回路をつくってみる

それでは実際に回路をつないでみます。

チュートリアル付属の回路図
fritzingで作った回路図
回路を接続した写真

前回のLesson14で使った回路に、サーミスタのピンと10KΩの抵抗器の間にArduino UNO R3 のA0ピンを接続し、抵抗器のもう片側は、GNDに繋ぎます。サーミスタのもう一方のピンは、5Vに繋ぎます。

プログラムを動かしてみる

チュートリアル付属のコードを動かしてみます。

//www.elegoo.com
//2016.12.9

#include <LiquidCrystal.h>
int tempPin = 0;
//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup()
{
  lcd.begin(16, 2);
}
void loop()
{
  int tempReading = analogRead(tempPin);
  // This is OK
  double tempK = log(10000.0 * ((1024.0 / tempReading - 1)));
  tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK )) * tempK );       //  Temp Kelvin
  float tempC = tempK - 273.15;            // Convert Kelvin to Celcius
  float tempF = (tempC * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
  /*  replaced
    float tempVolts = tempReading * 5.0 / 1024.0;
    float tempC = (tempVolts - 0.5) * 10.0;
    float tempF = tempC * 9.0 / 5.0 + 32.0;
  */
  // Display Temperature in C
  lcd.setCursor(0, 0);
  lcd.print("Temp         C  ");
  // Display Temperature in F
  //lcd.print("Temp         F  ");
  lcd.setCursor(6, 0);
  // Display Temperature in C
  lcd.print(tempC);
  // Display Temperature in F
  //lcd.print(tempF);
  delay(500);
}
C++

少し表示される温度が高いようですが、サーミスタで計測した温度がLCDディスプレイに表示されました。

以上

コメント

タイトルとURLをコピーしました