「Arduino Mega 2560 LESSON:23 LCD1602 LCDモジュールとThermometer」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 128行目: | 128行目: | ||
</code></pre></div><script></freescript> | </code></pre></div><script></freescript> | ||
NTCサーミスタの抵抗値は近似的に次の式で表せます。 | |||
\[ R=R_0 e^{B\left(\frac1T-\frac1{T_0}\right)} \] | \[ R=R_0 e^{B\left(\frac1T-\frac1{T_0}\right)} \] | ||
まず、両辺を \(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]]に戻る。 | [[Arduino Mega 2560]]に戻る。 | ||
2026年11月2日 (月) 23:28時点における版
概要
ThermometerとLCD1602 LCDモジュールを接続するレッスンです。
完成図は以下のとおりです。
PCB図は以下のようなものです。
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_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) }} \]
これで、抵抗値から温度を計算できるようになりました。