サーミスターの温度
CoddyのArduinoジャーニー「ディスプレイとセンサー」セクションの一部。レッスン 20/24。
サーミスタは、温度によって抵抗値が変化する抵抗器です。このモジュール(NTCタイプ)では、温まるにつれてOUTピンの電圧が下がります。analogRead()は25度Cで約512を返します。
読み取り値は直線的には下がらないため、map()では対応できません。ベータ方程式を使うと、温度を度数に変換できます。BETAは部品のデータシートから得られます(ここでは3950)。また、log()はボードに組み込まれている数学関数です。計算の仕組みを理解する必要はありません。次の行をそのままコピーしてください。
const float BETA = 3950;
float celsius = 1 / (log(1 / (1023.0 / reading - 1)) / BETA + 1.0 / 298.15) - 273.15;1023.0の.0は残してください。整数同士で1023 / readingを計算すると小数部分が切り捨てられ、答えが何度もずれてしまいます。
チャレンジ
中級サーミスタモジュールは A0 に接続されています。温度を出力しましょう。
- ベータ方程式を使って読み取り値を摂氏に変換します
Serial.println()で毎秒2回出力します
実行を押し、ボードの温度を変更してから、確認を押します。
自分で試してみよう
const float BETA = 3950; // サーミスタのベータ値
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// reading を摂氏温度に変換して出力する
delay(500);
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ディスプレイとセンサーのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド