【速報】12/25(水)に親子で楽しく作る電子工作の本を出版します!

Arduinoでサーミスタを使って温度を計測!ビジュアルプログラミングLESSON22

Arduinoでサーミスタを使って温度計測!ビジュアルプログラミングLESSON22
  • URLをコピーしました!

この記事内には、プロモーションが含まれます。

\ 限定の返礼品あり! /

こんにちは、せでぃあ(@cediablog)です。

今回のArduinoプログラミングLESSON22では、「サーミスタを使った温度計測プログラム」を紹介します。

アナログ温度計

温度計と聞くと、この写真のようなアナログ温度計を思い浮かべるかたが多いのではないでしょうか?

アナログ温度計は、電池不要でぱっと見で温度が分かるためとても便利な温度測定器です。

ただし、温度データを使って何かの機器を制御しようとすると不便さが出てきます。

例えば、「室内温度が30℃以上になったら扇風機を自動で動かす」という動作をさせようと思ったら、現在の室内温度が何度なのかがわかる数値データが必要となります。

そこで紹介するのが、サーミスタ(thermistor)です。

サーミスタ(thermistor)
サーミスタ「MF52D-103f-3950」

見た目はとってもシンプルですが、この機器を使うことで温度を計測することが可能になります。

サーミスタを使って測定温度をLCDディスプレイに表示させる動作説明写真
サーミスタを使って測定温度をLCDディスプレイに表示させます。

今回は、液晶ディスプレイLCD1602に「サーミスタを使った計測温度を表示させる」プログラムの作り方を紹介します。

ELEGOOスーパースターターキットに含まれるサーミスタを使って、サーミスタ仕組みがわかる電子工作を作っていきます。

今回液晶ディスプレイLCD1602の制御はI2Cを使ったシリアル通信を使います。

I2C通信を使ったLECディスプレイ表示方法については、こちらの記事にて詳しく解説しています。

上記記事の動作確認した配線状態のうち、LCDディスプレイ配線はそのまま使うことができます。

本記事は、プログラミングと電子パーツの知識が習得できるプログラミング初心者も安心して取り組めるテーマとなっています。

小学生、中学生も安心してプログラミングができるように、文字列を使わなビジュアルプログラミング方法を動画付きで紹介しています。

せでぃあ

ビジュアルプログラミングを使えば小学生から抵抗なくプログラミングができますよ!

本記事では、スクラッチベースのビジュアルプログラミングツールmBlockとArduinoIDEプログラムどちらのプログラミング方法も紹介しています。

本記事ではmBlockのアップロードモード「オン」でのプログラム例を紹介しています。

無料のブロックプログラミングツールmBlockのインストール方法については、こちらの記事を参照してください。

この記事を読んでわかること
  • サーミスタの仕組みと各種機器の配線方法
  • Arduino IDEでのプログラミング方法
  • mBlockを使ったビジュアルプログラミング方法
この記事を書いた人
せでぃあ

せでぃあはこんな人物です

✅プライム企業に勤める電気・機械設計エンジニア

✅親子の絆を深めるため、夏休みに子供と一緒に電子工作を製作

✅Arduinoプログラミングを用いて作ったプログラミング電子工作「信GO機」が市の発明くふう展で「優秀賞」を受賞

✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中

✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中

温度を測定する方法として、温度と湿度の両方を測定できるセンサ「DHT11」という機器もあります。

目次

サーミスタの仕組みと温度の算出方法

まずはじめに、サーミスタの仕組みについて解説します。

サーミスタの動作原理

NTCサーミスタは、温度が上がると抵抗値が下がる性質があります。
NTCサーミスタの特性

サーミスタは大きく分けて性質が異なる2種類に分けられます。

サーミスタの種類

  • NTC:温度が上がると抵抗値が下がる
  • PTC:温度が上がると抵抗値が上がる

今回使用するサーミスタ「MF52D-103f-3950」はNTCタイプのため、測定温度が高くなると抵抗値が下がる性質があります。

サーミスタが検出した温度変化=抵抗変化を利用して、Arduinoに入力する電圧を変化させてデータへと変換していきます。

Arduinoに入力する電圧を変化させる方法について、説明していきます。

サーミスタ抵抗値を取得するためには分圧回路の構築が必要

サーミスタの抵抗値を取得すための分圧回路説明図
サーミスタの抵抗値を取得すための分圧回路説明図

サーミスタ抵抗値を取得するために、分圧回路を構築します。

抵抗が直列つなぎされると、それぞれにかかる電圧は抵抗値の割合に応じて分配されます。

抵抗側にかかる電圧が、Arduinoアナログソケットに入力される電圧値となります。

せでぃあ

サーミスタにかかる電圧+抵抗にかかる電圧=入力電圧5Vになります。

その電圧値の計算式は上図に記載の通りとなります。

サーミスタの抵抗値が検出温度に応じて変動するため、上記式により抵抗に流れる電圧値が変動します。

この電圧変動幅をアナログ入力値としてArduinoに入力します。

変数の説明
  • Vin:入力電圧=5V
  • Vout:分圧抵抗にかかる電圧(V)
  • R1:分圧抵抗値(Ω)
  • Rth:サーミスタ抵抗値(Ω)
サーミスタ抵抗の算出式1

分圧抵抗にかかる電圧を算出する式になります。

サーミスタ抵抗の算出式2

サーミスタ抵抗値を導く形に変換します。

サーミスタ抵抗の算出式3

サーミスタを使った温度算出方法

サーミスタ抵抗値を温度に変換するための式
サーミスタ抵抗値を温度に変換するための計算式

ネットで調べてみると、NTCサーミスタを使う場合は上記計算式を用いて温度を算出できることが分かりました。

定数・変数の説明
  • 変数T:計測時のケルビン温度(K)
  • 変数R:計測時のサーミスタ抵抗値(Ω)
  • 定数B:サーミスタのB定数(温度変化に対する抵抗値の変化定数)
  • 定数R0:摂氏25度のときのサーミスタ抵抗値(Ω)
  • 定数T0:摂氏25度のときのケルビン温度(K)

これらの変数の中でポイントになるのが「B定数」です。

B定数とは、温度変化に対するサーミスタ抵抗値の変化定数といい、データシートに記載されています。

サーミスタ「MF52D-103f-3950」のB定数を示すデータシート
今回使用するサーミスタ型式は「MF52D-103f-3950」です。

サーミスタ「MF52D-103f-3950」のB定数は「3950」であることがわかります。

また摂氏25度のときのサーミスタ抵抗値は、型式「MF52D-103f-3950」により、10×10の3乗=10kΩです。

この値は、定数R0に代入して計算します。

サーミスタの抵抗値Rの算出式は、先ほど解説した以下の式を使って求めます。

サーミスタ抵抗の算出式3
サーミスタ抵抗(Rth)の算出式
定数の説明
  • Vin(入力電圧):5(V)
  • Vout:分圧抵抗にかかる電圧(V)
  • R1(分圧抵抗値):10000(Ω)

定数についてまとめると、以下になります。

定数について
  • B(B定数):3950
  • R0(摂氏25度のときのサーミスタ抵抗値):10000(Ω)
  • T0(摂氏25度のときのケルビン温度):298.15(K)
せでぃあ

摂氏0度のときのケルビン温度は273.15Kになるため、+25度した値がT0になります。

分圧抵抗値に10KΩを選定した理由は、摂氏25度のときのサーミスタ抵抗値と同じ抵抗値にすることでサーミスタの検出温度が25℃のとき入力電圧の1/2の出力電圧に設定できるためです。

分圧回路の考え方については、こちらの記事にて詳しく説明しています。

サーミスタ検出温度をLCDディスプレイに表示させる動作の解説

今回紹介する「サーミスタを使って検出した温度をLCDディスプレイに表示させる動作」について説明します。

動作の説明

  • ディスプレイ上段に「アナログ入力値(0~1023)」、下段に「検出温度」が表示される。
  • サーミスタを指でつまんで、体温レベルまで温度が上昇することを確認する。
  • サーミスタから指を離すと室温レベルまで温度が低下することを確認する。
動作説明とブロックプログラミング手順の解説動画
動画での解説内容
  • サーミスタの仕組みについて
  • LCDディスプレイへのサーミスタ検出温度の表示動作
  • mBlockを使ったプログラミング方法

まずは動画を見て、今回のLESSONで実行させたい動作内容を確認してください。

また、mBlockを使ったブロックプログラミングや動作確認方法についても解説しています。

せでぃあ

ビジュアルプログラミングの作り方も動画で解説しています。

サーミスタ検出温度をLCDに表示させるまでの流れ

サーミスタが検出した温度をLCDディスプレイに表示させるために必要な作業を解説します。

今回は文字列を使ったプログラム形式と、文字列を使わないブロックプログラミング形式の両方について説明します。

あなたの作りたいプロブラム形式に対応した手順に応じて、対応してください。

プログラム形式に応じた開発環境

  • 文字列による命令語形式 ⇒ ArduinoIDE
  • スクラッチベースのビジュアル形式 ⇒ mBlock
せでぃあ

プログラミング初心者の方は、ビジュアルプログラミングがおすすめです!

STEP
必要なものを準備

プログラミングするために、パソコンが必要です。

電子部品等の必要な機器については、このあと説明します。

STEP
Arduinoを使うためのセットアップ(Arduino IDEプログラミング時のみ)

パソコンに統合開発ソフトウェア「ArduinoIDE」のインストールを行います。

Arduinoのセットアップ方法については、以下の記事にて詳しく説明しています。

Arduino IDEでの言語プログラミングも勉強したい方は、プログラミングの流れを理解しておいてください。

以下の記事にて、プログラミングから動作確認までの流れを詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEのインストールは不要です。

STEP
mBlockでプログラミングするためのセットアップ(mBlockプログラミング時のみ)

パソコンにスクラッチベースのビジュアルプログラミングツール「mBlock」のインストールを行います。

以下の記事にて詳しく説明しています。

ArduinoIDEでプログラミングする場合は、mBlockのインストールは不要です。

STEP
電気配線

電子部品とジャンパーワイヤの差し込みだけで配線が可能です。

STEP
Arduino IDEプログラミング

専用開発ソフトウェア「Arduino IDE」を使います。

私が作成したプログラムをコピペして使ってください。

Arduino IDEプログラミングの基本操作については、こちらの記事にて詳しく説明しています。

mBlockでプログラミングする場合は、ArduinoIDEプログラミングは不要です。

STEP
mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockを使ってプログラムを作成します

プログラム内容については、後述するプログラミング例を参考にしてください。

ArduinoIDEでプログラミングする場合は、mBlockプログラミングは不要です。

STEP
動作確認

プログラムが完成したら動作確認を行います。

動作確認チェックリスト
  • ディスプレイ上段に「アナログ入力値(0~1023)」、下段に「検出温度」が表示されるか?
  • サーミスタを指で掴んで、体温レベルまで温度が上昇するか?
  • サーミスタから指を離すと室温レベルまで温度が低下するか?

サーミスタを使った温度検出回路で使うもの

今回は、LCDディスプレイをI2C通信で制御する方法を紹介した記事の一部配線変更にて対応可能な内容です。

I2C通信を使ったLCDディスプレイ表示が初めての方は、こちらの記事から読んでいただくことをおすすめします。

サーミスタを使った温度検出回路で使うもの
配線が完了しプログラム転送できる状態写真
準備するもの
  1. パソコン
  2. Arduino本体
  3. USBケーブル
  4. ブレッドボード
  5. サーミスタ
  6. 抵抗器(10kΩ)
  7. LCD1602モジュール
  8. I2Cモジュール
  9. ジャンパー線(オスーメス)×4本
  10. ジャンパー線(オスーオス)×3本

今回はELEGOO社のスーパースターターキットに含まれる部品で作ることができますが、Arduino裏面のショート対策としてクリアケースも併せて準備することをおすすめします。

【おすすめ】コスパ最強のArduinoキットの中間グレードです!

パソコン

プログラムを作成するために必要です。

プログラム制御の演算はArduino側で行うため、パソコンのSPECは一般的なモデルで十分対応可能です。

パソコンのOSはWindows、Macどちらでも対応可能です。

Arduino本体【キット】

Arduino本体
Arduino本体

基本的なエディション「Arduino Uno」の互換機である、ELEGOO社のUNO R3を使用しています。

Arduino本体裏面のショート対策に、別売りのクリアケースの購入をおすすめしています。

各ソケットの役割など、Arduino本体の機能について以下の記事にて詳しく説明しています。

USBケーブル【キット】

必要なUSBケーブルの説明写真
USBケーブル

パソコンとArduinoを接続してプログラムデータのやり取りをするために必要です。

ブレッドボード【キット】

ブレッドボードの機能説明図
ブレッドボードの機能説明図

たくさんの穴が開いていて、部品の端子を穴に差し込むだけで電気的に接続が可能な板です。

説明図は30列のショート版ですが、スーパースターターキットに含まれる63列タイプでも機能は同じです。

ブレッドボードだけの購入も可能です。

サーミスタ(温度センサー)【キット】

サーミスタ(温度センサー)
サーミスタ(温度センサー)

サーミスタは、温度が変わると内部の抵抗値が変化する電子部品です。

Arduinoのアナログ入力ソケットに接続することで、温度変化をアナログ入力値変化に変換することができます。

抵抗器(10kΩ)【キット】

10kΩ抵抗と色による見分け方
10kΩ抵抗と色による見分け方

10kΩの抵抗を1本使用し、サーミスタに直列接続します。

抵抗を接続するのは、Arduino本体にサーミスタが検出した温度変化=電圧変化をアナログ値として入力させるためです。

今回使用するサーミスタの抵抗値変化を利用するには、分圧回路が必要となります。

この分圧回路を作るために、この10kΩ抵抗器を用います。

LCD1602モジュール【キット】

LCD1602モジュール
LCD1602モジュール

液晶ディスプレイ「LCD(Liquid Crystal Display)」モジュールになります。

数字や文字などを表示させることが可能です。

I2Cモジュール

I2Cシリアルインタフェースボードモジュール
I2Cシリアルインターフェースボード

I2Cを使ってLCDを制御するために必要なモジュールです。

電源線2本と通信線2本の合計4本の配線だけで、LCDを制御することが可能になります。

せでぃあ

I2Cモジュールはキットに含まれないため、別途購入が必要です。

ジャンパー線(オスーメス)【キット】

ジャンパー線(オス-メス)
ジャンパー線(オス-メス)

オス-メスジャンパー線を4本使用します。

I2CシリアルインターフェースボードとArduino本体を接続させるために使用します。

ジャンパー線(オスーオス)【キット】

キットに同梱されているジャンパー線(オスーオス)の説明
ジャンパー線

ジャンパー線を3本使用します。

Arduino本体とブレッドボードの接続や、ブレッドボードの共通電源ライン(GNDまたは5V)からブレッドボード内の配線系統穴に差し込んで接続するのに使います。

スターターキットに含まれる機器に関しては、以下の記事にて詳しく紹介しています。

サーミスタを使った検出温度表示回路の配線方法

ここからは、各機器間の配線方法について解説します。

サーミスタを使った検出温度表示回路の配線が完了した状態。
配線完了時の状態写真
I2CLCDモジュールの解説
I2CLCDモジュールの解説
サーミスタを使った検出温度表示回路の配線説明図
配線説明図(fritzingを用いて作成)

上図が配線説明図となりますので、これと同じ配線をすれば完成します。

機器が故障するおそれがあるので、接続するプラスマイナス極性には十分注意して配線してください。

サーミスタや抵抗器は、極性がありませんのでプラスマイナスの考慮は不要です。

機器故障させないためにも、USBケーブルを抜いた「通電OFF」状態にて配線を行ってください

プログラミングのやり方

本記事では、以下に示す「Arduino IDEプログラミング」と「mBlockプログラミング」の2通りのプログラミング方法について解説しています。

いずれか1つのプログラミング方法を用いることで、本LESSONの動作を行うことが可能です。

ArduinoIDE:文字列による命令語形式
mBlock:スクラッチベースのビジュアル形式

文字列を使わないmBlockの方が、直感的で分かりやすく小学生におすすめのプログラミング方法になります。

mBlockを使ってプログラミングをする方は、mBlockの説明まで読み飛ばしてください。

せでぃあ

プログラミング初心者の方は、ビジュアルプログラミングがおすすめです!

LiquidCrystal_I2Cライブラリのインストール

ArduinoIDEを使用した文字列プログラミングを行うためには、LiquidCrystal_I2Cライブラリのダウンロードとインストール作業が必要となります。

LiquidCrystal_I2Cライブラリのダウンロードとインストール方法を解説します。

mBlockでプログラミングをする場合は、本ライブラリインストール作業は不要です。

STEP
GitHubのサイトを開く
LiquidCrystal_I2Cライブラリのダウンロードサイトを開く。

LiquidCrystal_I2Cライブラリのダウンロードサイトを開きます。

STEP
codeをクリックする
codeをクリックする。
STEP
ZIPファイルをダウンロードする
「Download ZIP」をクリックして、ZIPファイルをダウンロードする。

「Download ZIP」をクリックして、ZIPファイルをダウンロードします。

STEP
ArduinoIDEを開き、ライブラリをインストールする
ArduinoIDEを開き、ライブラリをインストールする。

ArduinoIDEを開き、「スケッチ」⇒「ライブラリをインクルード」⇒「.ZIP形式のライブラリをインストール…」の順に選択して、STEP3でダウンロードしたZIPファイルを選択。

インストールが行われ、ライブラリインストール作業が完了となります。

Arduino IDEプログラミング

Arduino IDEとは統合開発ソフトウェアで、C言語のような文字列を用いたプログラミング方法です。

プログラミングするにあたり、ある程度の命令語を知っておく必要があります。

Arduino IDEのインストール方法については、以下の記事で詳しく説明しています。

日本語版のArduino公式リファレンスが記載されているので、関数を調べるときに重宝します!(私も所有しています)

プログラミング方法

Arduino IDEでのサーミスタを使った検出温度表示プログラミング画面
Arduino IDEでのプログラミング画面

Arduino IDEを使って、文字列プログラミングを行います。

Arduino IDEを使ったプログラミング~動作確認方法については、以下の記事で詳細説明しています。

Arduino IDEプログラム

/* 作品名:LESSON22 */
/* 作成者:せでぃあ https://cediablog.com */
/* サーミスタを使った温度計測 */

// ライブラリのインクルード
#include <LiquidCrystal_I2C.h>

// LiquidCrystal_I2C型変数の宣言
LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27のアドレス,16列2行のLCDを使用

// 変数の宣言
const float B = 3950;     //サーミスタのB定数(温度変化に対する抵抗値の変化定数)
const float T0 = 298.15;  //摂氏25度のときのケルビン温度
const float R0 = 10000;   //摂氏25度のときのサーミスタ抵抗値
const float R1 = 10000;   //分圧用抵抗の抵抗値

float analogval = 0;  //アナログ入力ピンA0の入力値(0~1023)
float thvolt = 0;     //分圧した電圧値の格納変数
float RT = 0;         //サーミスタ抵抗値の格納変数
float tempK = 0;      //ケルビン温度の格納変数
float tempC = 0;      //摂氏温度の格納変数

void setup() {
  //プログラム起動時1回だけ処理される回路
  lcd.init();       // LCDの初期化
  lcd.backlight();  // LCDバックライトの点灯
}

void loop() {
  //プログラム起動後ループ処理される回路

  lcd.clear();                                    //LCD表示クリア
  lcd.setCursor(0, 0);                            //上段1列目にカーソルを移動
  lcd.print("ANALOG:");                           //LCDディスプレイに「analog:」と表示させる
  lcd.setCursor(0, 1);                            //下段1列目にカーソルを移動
  lcd.print("TEMP:");                             //LCDディスプレイに「temp:」と表示させる
  lcd.setCursor(12, 1);                           //下段13列目にカーソルを移動
  lcd.print("C");                                 //LCDディスプレイに「C」と表示させる
  analogval = analogRead(A0);                     //アナログ入力ピンA0入力値(0~1023)を変数に格納
  thvolt = (analogval * 5) / 1023;                //分圧した電圧値を算出
  RT = R1 * (5 / thvolt - 1);                     //サーミスタの抵抗値を算出
  tempK = 1 / (1 / B * log(RT / R0) + (1 / T0));  //ケルビン温度を算出
  tempC = (tempK - 273.15);                       //ケルビン温度を摂氏温度に変換
  lcd.setCursor(8, 0);                            //上段9列目にカーソルを移動
  lcd.print(String(analogval).toInt());           //LCDディスプレイにアナログ入力値を表示させる
  lcd.setCursor(6, 1);                            //下段7列目にカーソルを移動
  lcd.print(tempC);                               //LCDディスプレイに摂氏温度を表示させる

  delay(300);  //0.3秒ウェイト
}

上記がLCDディスプレイへのサーミスタを使った計測温度表示プログラムになります。

Arduino IDEのプログラム画面にコピーアンドペーストすることで、動作確認まで進めることができます。

各プログラム列の右側にプログラム内容をコメント記入してありますので参考にしてください。

せでぃあ

LiquidCristal_I2Cライブラリのインストールを忘れずに行ってください。

命令語の解説

今回のプログラムで使用した命令文について、解説します。

変数のデータ型指定

変数のデータ型を指定するものです。

今回はピンソケット番号を代入するので整数を扱う「int型」を指定します。

スクロールできます
データ型説明扱える範囲
int2バイトの整数を代入可能。-32768~32767
long4バイトの整数を代入可能-2,147,483,648~2,147,483,647
float4バイトの小数を代入可能。3.4028235×1038~-3.4028235×1038
char1バイトの値を代入可能。文字列の代入に利用されます。-128~127
boolean0または1のみ代入可能。フラグのON-OFFなどに利用されます。0,1
データ型の説明

log

サーミスタ抵抗値を温度に変換するための式

計算式は「ln」なのに、なぜ「log」なの?って思った方もいらっしゃるのではないでしょうか?

実は、log関数は自然対数「ln」の命令語になります。

ちなみに、常用対数は「log10」という関数を使います。

せでぃあ

今回は自然対数「ln」を使うので、プログラムでは「log」を使います。

delay(時間)

()内で指定した時間(単位はmsec)だけ、プログラム実行を待たせます。

LiquidCrystal_I2Cライブラリの説明

今回はLCD1602の制御をするために、「LiquidCrystal_I2Cライブラリ」を使用します。

このライブラリを使うだけで、簡単にLCD表示を制御できます。

LiquidCrystal_I2Cライブラリの読み出し

プログラム冒頭の宣言部にてLiquidCrystalライブラリを読み出します。

#include <LiquidCrystal_I2C.h>

LiquidCrystal型変数の指定

プログラム冒頭の宣言部にてLiquidCrystal_I2C型の変数を定義します。

LiquidCrystal_I2C lcd(I2Cアドレス, 桁数, 行数)

変数「lcd」は例であり、任意の変数文字列を指定してください。

init()

LCDの表示内容をクリアし、カーソルを左上に移動させます。

lcd型変数.init

clear()

LCDの表示内容をクリアします。

lcd型変数.clear()

setCursor( , )

カーソル位置を指定します。テキスト表示開始位置を指定することができます。

lcd型変数.setCursor(桁、行)

桁は左端が「0」、行は上段が「0=1行目」になります。

print(“表示させたい文字列”)

LCDに文字列を表示させます。

lcd型変数.print(“表示させたい文字列”)

backlight()

LCDバックライトを点灯させます。

lcd型変数.backlignt()

プログラミング初心者の方に、おすすめなArduinoの参考書を紹介しています!

mBlockプログラミング

スクラッチベースのビジュアルプログラミングツールmBlockでのサーミスタを使った検出温度表示プログラミング画面
mBlockを使ったプログラミング画面

ここからは、mBlockを使ったプログラムの作り方を解説します。

mBlockを使ったプログラムの作り方
  1. デバイスにArduino Uno R3を追加する。
  2. 接続モードを「アップロードモードON」にする。
  3. mBlockプログラムを作成する。
  4. プログラムをArduino本体に転送する。

これらの基本操作方法については、こちらの記事を参照してください。

プログラミング、動作確認方法については、本記事の説明動画でも紹介しています

せでぃあ

動画を参考にプログラミングしてみてください。

I2Cを使ったLCD制御ブロックの追加方法

LCDを制御(LCD画面クリア、カーソル位置を指定、LCDへの文字列表示など)するために必要な、専用ブロックを追加する必要があります。

追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
追加が必要なI2Cを使ったLCD制御用ブロックと機能説明
STEP
拡張ボタンをクリック
mBlockを開いて、拡張ボタンをクリックします。

mBlockを開いて、拡張ボタンをクリックします。

STEP
検索窓に「i2c」と入力して検索
検索窓に「i2c」と入力します。

検索窓に「i2c」と入力します。

STEP
LCDと書かれた拡張ブロックを追加
I2Cを使ったLCD制御用の拡張ブロックを追加します。

I2Cを使ったLCD制御用の拡張ブロックを追加します。

STEP
LCDブロックが追加される
I2Cを使ったLCD制御ブロックが追加されます。

I2Cを使ったLCD制御ブロックが追加されます。

mBlockを使ったプログラム内容

今回は「アップロードモード オン」でのプログラム作成例を紹介しています。

プログラム開始条件が「Arduino Unoが起動したとき」になっている点に注意してください。

以下のプログラムが動作プログラムになります。

mBlockによるサーミスタを使った検出温度表示プログラミング画面
mBlockによるサーミスタを使った検出温度表示プログラム

tempKの計算式は、複数のカッコが入れ子になっているため注意が必要です。

サーミスタ抵抗値を温度に変換するための式

上記計算式をT=の形に変換して計算しています。

つまり、右辺の逆数を算出する式を作ります。

せでぃあ

動画を見ていただくと理解がしやすくなります!

mBlockのArduino専用ブロックについては、こちらの記事にて詳しく説明しています。

動作確認方法

サーミスタを使って測定温度をLCDディスプレイに表示させる動作説明写真
配線状態説明図
動作確認チェックリスト
  • ディスプレイ上段に「アナログ入力値(0~1023)」、下段に「検出温度」が表示されるか?
  • サーミスタを指でつまんで、体温レベルまで温度が上昇するか?
  • サーミスタから指を離すと室温レベルまで温度が低下するか?

上記項目について確認していきましょう。

ディスプレイ上段に「アナログ入力値(0~1023)」、下段に「検出温度」が表示されるか?

プログラムの演算が開始されたら、LCDディスプレイ上段に「ANALOG:(0~1023の値)」、下段に「TEMP:(算出温度)C」が表示されていることを確認してください。

LCDディスプレイのバックライトが点灯状態であることを併せて確認してください。

サーミスタを指でつまんで、体温レベルまで温度が上昇するか?

サーミスタ(先端の黒い部分)を指でつまんで、表示される温度が体温レベルまで変化することを確認してください。

35~36℃付近になると思いますが、大きく外れた数値の場合は計算式プログラムが間違っていないか確認してください。

上段のアナログ入力値は、検出温度に比例して増減する傾向になります。

サーミスタから指を離すと室温レベルまで温度が低下するか?

サーミスタから指を離して、温度が室温レベルまで変化するか確認してください。

サーミスタの抵抗値は緩やかに変化するため、室温レベルに落ち着くまでしばらく待ってみてください。

せでぃあ

アナログ値は、分圧抵抗で消費する電圧を表示するためサーミスタの抵抗が低下すると値が上昇します。

計算式が分かればサーミスタを使った温度計測はかんたん!(まとめ)

この記事の内容をまとめると
  • NTCサーミスタは、測定温度が高くなると抵抗値が下がる。
  • サーミスタの抵抗値は、分圧回路を使って算出する。
  • 計算式により、サーミスタの抵抗値を計測温度に変換できる。

計算式さえ分かってしまえば、サーミスタを使った温度計算は難しくないことが分かります。

分圧回路の考え方も、2つの抵抗分の割合に応じた電圧配分をしているだけと考えると難しくないと思います。

配線もシンプルなので、あなたもサーミスタを使った温度計測にチャレンジしてみてくださいね!

小学生のお子様には断然、ビジュアルプログラミングがおすすめです!

せでぃあ

mBlockはブロックのドラッグアンドドロップで簡単にプログラミングができます!

小学生のプログラミング学習におすすめな、mBlockが使えるプログラミングロボットを紹介しています。

最後まで読んでいただき、ありがとうございました。

分圧回路の考え方は明るさセンサ(CdSセル)を使った例が参考になります。

温湿度センサDHT11を使った温湿度表示プログラミングを紹介しています。

子供の成長を育む!小学生のお子様にぴったりなプログラミング教室が見つかるように厳選しました!

Arduinoスクラッチプログラミングのおすすめ参考書について詳しく説明しています。

Arduinoプログラミング(スクラッチも)を使った電子工作を紹介しています。

12/25(水)に電子工作の本を出版させていただくことになりました!

応援ありがとうございます(^^)/

Arduinoでサーミスタを使って温度計測!ビジュアルプログラミングLESSON22

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次