ArduinoでSTEM教育​ 基礎編:温湿度センサとサーミスタ

ArduinoでSTEM教育​ 基礎編:温湿度センサとサーミスタ

今回は、Arduinoで温度と湿度をLCDに表示する方法を紹介します。測定方法は、温湿度センサとサーミスタによる2通りの方法について説明します。LCDの使用方法については、以前の記事(ArduinoでSTEM教育​-基礎編:LCD)を参照してください。

目次

使用する部品一覧

使用する部品は図のとおりです。これらの部品は、すべて「ELEGOO Arduino用のMega2560スタータキット」に含まれています。

  • Arduino MEGA2560 R3 …1個​
  • 830穴 ブレッドボード …1個​
  • LCD1602モジュール …1個​
  • ポテンショメータ(10kΩ) …1個
  • 温湿度センサDHT11 …1個​
  • サーミスタ …1個​
  • 10kΩ抵抗 …1個
  • ジャンパワイヤ(オス-オス) …18個​
  • ジャンパワイヤ(オス-メス) …3個​

DHT11温度湿度センサの特徴や取り扱い方法

今回は、DHT11という温度湿度センサを使用します。​このモジュールは、温度と湿度をデジタル信号で出力します。​​モジュールの端子は3本あります。左から順に、通信・電源・GNDという構成です。​このセンサー用のライブラリを使用することで、プログラムコードを短く簡単に作成できるという利点があります。​

サーミスタの特徴や取り扱い方法

サーミスタは、温度で抵抗が大きく変化する抵抗です。​NTC(負の温度係数)とPTC(正の温度係数)の2種類あります。一般的に、温度測定にはNTCセンサが使用されます。​サーミスタを使用して得られる情報は電圧値なので、サーミスタの温度特性をデータシートから読み取って、演算するプログラムを書く必要があります。​モジュールと比較すると、演算コードを自作する必要があるため、手間がかかりますが、安価で小さな回路を作成できるという利点があります。​

回路図

まず、DHT11センサの接続について説明します。​V端子は5V、G端子はGND、S端子はD2端子に接続します。​

​次に、サーミスタの接続について説明します。​サーミスタは、片方を5Vに接続し、もう片方は10kΩ抵抗に接続します。​10kΩ抵抗のもう片方は、GNDに接続します。​そして、サーミスタと抵抗の中間部(抵抗分圧値)をA0端子に接続します。​

このような構成にすることで、温度が高くなるとサーミスタ抵抗が小さくなるため、​抵抗分圧値が大きくなります。温度が低い場合はその逆となります。​

配線図

ブレッドボードを使用した配線は図のとおりになります。

組立完成写真

実際に組み立てた写真です。同じようにできましたか?​

プログラム

最初に、DHT11用のライブラリ(dht_nonblocking.h)を#includeで読み込みます。​また、センサーのタイプを#defineで定義します。​​次に、センサーで使用する通信ピンとサーミスタで使用するピンの番号を定義します。​​読み込んだセンサのライブラリのDHT_nonblockingクラスを使用するための準備をします。​​mesure_enviroment関数は、DHTセンサの測定結果を取得できる場合はTrueを返し、そうでない場合はFalseを返します。​

メインループの冒頭で、サーミスタの電圧値を温度変換する計算方法を記述します。analogRead()でサーミスタの電圧値をアナログ入力端子から読み取ります。​そして、その結果をもとに、絶対温度に変換したあと、セルシウス温度に変換します。​​

次に、LCDに表示する文字を記述します。​if文でDHTセンサの測定結果が利用できるかどうかを判別し、利用できる場合は温度と湿度をLCDに表示します。​そうでない場合は、サーミスタで測定した温度を表示します。​

動かしてみよう

プログラムを書き込んで、実際に動かしてみてください。

今回学んだポイント

  • HTCモジュールは、ライブラリを使用することで、温度と湿度をプログラム上で簡単に扱うことができる。​
  • HTCモジュールとArduinoの通信は、デジタル線1本のみのため、I/Fを簡素化できる。​
  • サーミスタを温度計として使用するには、サーミスタの温度特性を理解して、取得電圧値から温度に変換する必要がある。​
  • サーミスタの電圧値は、analogRead()関数を使用することで読み取ることができる。

改造してみよう

もう少し理解を深めるために、自分で改造してみてください。​

  • HTCセンサとサーミスタの測定温度差をLCDに表示してみよう。​
  • 測定温度や湿度が前回測定値と変わらないときは、LCD表示は更新せず、変わったときだけ更新するようにしてみよう。

Arduino基礎編カテゴリの最新記事