「Arduino Mega 2560 LESSON:23 LCD1602 LCDモジュールとThermometer」の版間の差分

提供:yonewiki
編集の要約なし
編集の要約なし
134行目: 134行目:


  記号    意味
  記号    意味
  \(R\)    現在の抵抗値
  R       現在の抵抗値
  \(R_0\)  基準温度での抵抗値
  R_0     基準温度での抵抗値
  \(T\)    現在の絶対温度(K)
  T       現在の絶対温度(K)
  \(T_0\)  基準絶対温度(K)
  T_0     基準絶対温度(K)
  \(B\)    サーミスタ固有のB定数
  B       サーミスタ固有のB定数
  \(e\)    自然対数の底(約2.71828)
  e       自然対数の底(約2.71828)





2026年11月2日 (月) 23:31時点における版

Arduino Mega 2560に戻る。

概要

 ThermometerとLCD1602 LCDモジュールを接続するレッスンです。


 完成図は以下のとおりです。


完成図


 PCB図は以下のようなものです。


PCB図


 3Dプレビュー図は以下のようなものです。


3Dプレビュー図


 コードは以下のようなものです。

//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);
}

NTCサーミスタの抵抗値は近似的に次の式で表せます。

\[ R=R_0 e^{B\left(\frac1T-\frac1{T_0}\right)} \]


記号     意味
R        現在の抵抗値
R_0      基準温度での抵抗値
T        現在の絶対温度(K)
T_0      基準絶対温度(K)
B        サーミスタ固有のB定数
e        自然対数の底(約2.71828)


まず、両辺を \(R_0\) で割ります。


\[ \frac{R}{R_0}=e^{B\left(\frac1T-\frac1{T_0}\right)} \]


両辺の自然対数を取ると、


\[ \ln\left(\frac{R}{R_0}\right)=B\left(\frac1T-\frac1{T_0}\right) \]


指数関数が消えました。


さらに温度 \(T\) について整理すると、


\[\boxed{ T=\frac{1}{\frac1{T_0}+\frac1B\ln\left(\frac{R}{R_0}\right) }} \]


これで、抵抗値から温度を計算できるようになりました。

 

Arduino Mega 2560に戻る。