【初めてのArduino】6.サーミスタ|ハンズオンで学ぶ初心者向け入門コース

YouTube

目次
0:00 サーミスタとアナログ入力について
0:53 今回作るもの
1:01 使う材料の準備
1:19 回路図
2:10 回路を組む
2:22 プログラムの作成
3:41 ボードに書き込む
4:00 まとめ

使用したコード

動画内で使用したコードです。ご自由にご使用ください。

6.サーミスタ

analog Read関数や、四則演算についてがよく分からなくてつまづいているんだ

それじゃあこのコースでanalog Read関数や、四則演算について一緒に学んでいこう
今回のレッスンで学べる事
  • analog Read関数
  • 四則演算
  • データ型:float
  • データモニターの使い方

ここではサーミスタを使って、analogRead関数、四則演算、floatというデータ型について学んでいきます。

サーミスタとアナログ入力について

サーミスタというのは温度センサの一つで、温度が変わると抵抗値が変わるという特性を持っています。

この特性を逆に利用することで、抵抗値の変化から温度を測定することができます。

と言っても抵抗値を直接測定することは難しいので、一般的には、以下のような回路を組んで電圧に変換して読むことが多いです。

検出抵抗Rdは一般的な抵抗で、Rdが温度によらず抵抗値が変わらないとすると、A点の電圧はRtの抵抗値に応じて変わることになります。

この電圧の変化量から、抵抗値の変化量を求めます!

そして以下のような式を用いることで、最終的に温度に変換することができます。

B定数というのはサーミスタの特性を示す定数で、温度の変化に対してどの程度抵抗値が変化するかという傾きを示します。

多くの場合、サーミスタのデータシートに載っているのでその値を使います。

今回作るもの

これは今回作成した回路で、このように触ったりドライヤーで熱を上げてやると、温度が変化しているのが分かると思います。

それではこの回路を作っていきましょう!

使う材料の準備

今回使う材料は、Arduino Uno・ブレッドボード・オスオスのジャンパーワイヤ3本・サーミスタ・10kΩの抵抗です。

なおサーミスタは熱が上がると抵抗値が下がるNTCというタイプと、抵抗値が上がるPTCというタイプがあります。

温度センサに使われるのは主にNTCというタイプの方なので、間違えないように注意してください!

回路図

以下の図は、今回作成する回路図になります。

Arduinoのアナログ入力端子は10bitのADコンバータを備えており、0〜5Vの範囲のアナログ的な電圧を、0〜1023というデジタルデータに変換することができます。

1メモリあたりの電圧を分解能といい、今回の場合は5Vを1024で分割するので、1メモリはだいたい5mVということになります。

アナログ入力端子は全部で6個あり、今回はA0端子を使用しています。

Rdの抵抗値の選び方は、少し注意が必要です!

Rdが小さすぎかもしくは大きすぎた場合、A点の電圧がほとんど振れないことになってしまい、抵抗値を正確に計算することが難しくなってしまいます。

実際は測定したい温度領域によって微調整が必要なのですが、ひとまずは室温でのサーミスタの抵抗値と同等レベルの値を使っておけば良いと思います。

今回のサーミスタの場合は10kΩなので、Rdも10kΩを使用しています。

回路を組む

回路図にならってブレッドボード図を作成したのが以下の図になります。

この図にならって、回路を組んでみるとこんな感じになります。

プログラムの作成

それではコーディングを行っていきます。

Arduino IDEを起動して、「ファイル→新規ファイル」をクリックし、この画面にあるプログラムを入力してください。

5〜8行目は、抵抗値を計算するために使われる定数です。

今回は割り算などを使用して小数点が発生するため、小数点を扱えるfloatというデータ型を使用しています。

なお今回は、値の変化をシリアルモニタという機能を使って見ます。

これは、Arduinoとパソコンがシリアル通信でデータのやり取りを行える機能で、リアルタイムで値を見ながら動作検証をすることができます。

setup関数内で、Serial.beginという関数を使うことでこの機能が使用可能になります。

loop関数では、analogRead関数でまずは電圧値を読み込んでいます。

次に、現状の抵抗値を求めます。

式の考え方としては、このように比率で考えると分かりやすいと思います。

Arduinoでは四則演算と呼ばれる一般的な計算や、logやルート等の少し複雑なものまで、色んな計算を行うことができます。

次に、ここに書いた式を使ってTを求めます。

これはサーミスタの温度を計算するための良く知られた式なので、背景を知りたい人は以下のサイトを見てみて下さい!

なおこの時点での単位は、絶対温度を表すケルビンなので注意しましょう。

最後に摂氏に変換したら、Serial.printlnに値を投げて温度観測完了です。

待機時間、つまり値の更新頻度はいくつでも良いですが、ひとまず0.2秒としました。

ボードに書き込む

最後にファイルを保存し、ツールバーの「マイコンボードに書き込む」のボタンを押して書き込みます。

書き込みが完了したら、右上の「シリアルモニタ」ボタンを押してみましょう。

このように、値が0.2秒おきに更新されていると思います。

まずは、計算が間違っていないかを確認するために、室温を測定してだいたい感覚と合っているかを見てみてください。

まとめ

ということで今回は、このような内容を学んできました。

今回のレッスンで学んだこと
  • analog Read関数
  • 四則演算
  • データ型:float
  • データモニターの使い方
やってみよう!
手で触ったり温めたりして温度が変化することを確認してみてください。

当サイトでは、最低限身につけるべき知識やツールの解説など、電子工作を 0 から体系的に学べる動画や記事を投稿しています。

さらに電子工作について学びたい方は、他の動画や記事もぜひ見てみてください。