温度を制御するためには、温度を測定するセンサが必要です。
温度センサには色々な物がありますが、自宅の部品箱に各種の温度センサが見つかったので、その種類と使い方を紹介します。
今回紹介するのは、
・I2C 出力タイプ
・モジュール/IC タイプ
・熱電対(MAX6675 基板)
・抵抗値が変化するタイプ
・温度センサじゃなかったセンサ
の5種類です。
I2C 出力タイプ
センサ内部で温度をデジタル処理して、I2C 信号に変換して出力するタイプです。
今まで使用したことがあるのは、
BME280
honkytonk さん設計の GPSDO で使用した温度センサです。
OCXO の表面温度を検出するために使いました。

このセンサは、温度だけではなく湿度と気圧も計測出来ます。(SPI インターフェースも使えます。)
温度範囲:-40 ~ 85 ℃
誤差:±1 ℃
なお、AliExpress などで「安価な BME280」を購入すると、湿度が計測出来ない BMP280 が届くことがあります。
見分けるには、センサの金属パッケージが正方形なのが BME280、長方形なら BMP280(下の写真)です。

「200円の BME280」は、LINE を使って連絡してくる警察官と同じように 100% 偽物です。
Arduino で使用する
Arduino IDE で使用するには、ライブラリで「BME280」と検索すると出てくる Adafruit BME280 Library をインストールすると簡単です。Adafruit BME280 のライブラリ例で動作確認が出来ます。
(購入した基板の種類によっては、I2C と SPI の切り替えジャンパが必要な場合があります。)
LM73
ji1udd さんの GPSDO で、OCXO の表面温度の検出に使用しました。
6ピンの小型 IC(SOT-23)で、I2C で温度データが出力されます。

Arduino で使用する
Arduino IDE で使用するには、ライブラリで「LM73」と検索すると出てくるライブラリをインストールすると簡単に動作確認が出来るはずですが未確認です。
モジュール/IC タイプ
モジュール又は IC として作られていて、温度データが内部処理されて出力されるタイプです。
DHT11
プラ製で青いケースの温度と湿度が計測できるセンサ(データ出力は2秒間隔)

温度範囲:-20 ~ +60 ℃
誤差:±2.0 ℃
4ピン左から
・電源(3.3 V ~ 5 V)
・データ(10 kΩでプルアップ)
・NC
・GND
Arduino で使用する
Arduino IDE で使用するには、ライブラリで「DHT」と検索すると出てくるライブラリをインストールすると簡単に動作確認が出来ます。(このライブラリは、DHT21、DHT22 でも使用可能です。)
DHT22
白いケースの温度・湿度センサです。
温度範囲と誤差が違うだけで、DHT11 と同じように使用できます。

温度範囲:-40 ~ +80 ℃
誤差:±0.5 ℃
ピン配置は DHT11 と同じです。Arduino での使用方法も同じです。
LM35
DHT11/22 は、デジタルでデータが出力されましたが、これは温度に比例した電圧が出力されます。

・温度測定:0 ℃ ~ +100 ℃
・誤差:±1.0 ℃(高精度タイプ)
・電源:4 V ~ 20 V
出力電圧 = (温度(℃) X 10 mV) + 0 mV
(0 ℃ = 0 V、100 ℃ = 1 V)
3ピンで左から
・電源
・出力
・GND
LM61
LM35 と同じく温度に比例した電圧が出力されます。
(末尾の型番で BIZ と CIZ がある。画像は CIZ)

・温度測定:-25 ℃ ~ +85℃ (BIZ)、-30 ℃ ~ +100 ℃(CIZ)
・誤差:±2.0 ℃
・電源:2.7 V ~ 10 V
出力電圧 = (温度(℃) X 10 mV) + 600 mV
(0 ℃ = 0.6 V、100 ℃ = 1.6 V)
3ピンで左から
・電源
・出力
・GND
S8100B
このセンサも上と同じで、温度に比例したアナログ電圧が出力されます。
出力端子は 1 MΩ でプルアップします。

30 ℃ が基準温度で、この時の出力電圧が 1.508 V で、1 ℃上昇すると -8 mV 下がります。
(0 ℃ = 1.748 V、100 ℃ = 0.948 V)
・温度測定:-40 ℃ ~ +100 ℃
・誤差:?
・電源:3 V ~ 5.5 V
このセンサは、印字面が裏になります。無地面の左から
・電源
・GND
・出力
Arduino で使用する
温度を電圧に変換するタイプの温度センサを Arduino IDE で使用するには、アナログ入力端子で電圧を読み取って温度を計算する必要があります。
熱電対
熱電対は、-200 ℃ ~ +1000 ℃ 以上と広範囲の温度を比較的正確に計測できるセンサです。
このセンサは、2つの金属を接合することで「ゼーベック効果」を利用して温度を測ります。よく使われるのは、ニッケルと銅が原料の「K 熱電対」です。

しかし、このセンサの出力電圧は大変微弱なために OP アンプなどで増幅して、外気温を検出して補正する外付け回路が必要です。
マイコン などで熱電対を使うには、MAX6675 などの専用 IC を使うと簡単に使用できるので便利です。

Arduino で使用する
Arduino IDE で使用するには、ライブラリで「MAX6675」と検索すると出てくる「Adafruit MAX6675 library」ライブラリをインストールすると簡単に動作確認が出来ます。
抵抗値が変化するタイプ
温度変化で抵抗値が変化するものです。
部品箱には、このタイプの温度センサは NTC サーミスタの新品が2種類ありました。
また、分解したプリント基板から回収した サーミスタ型のセンサが数種類ありました。
現在、サーミスタといえば NTC(Negative Temperature Coefficient)タイプの事を言います。
この原理は、1833年に、あの有名なイギリスの物理学者マイケル・ファラデーが発見しました。(ファラデーは貧しくて小学校を中退しましたが、「科学史上、最も影響を及ぼした科学者の1人」と呼ばれています。)
NTC サーミスタには重要な定数があります。
抵抗規定温度1(通常 25℃)、抵抗規定温度2(通常 50℃)と「B定数」です。(なぜ A や C ではなく B なのかは未確認です。)
B定数は、抵抗規定温度1と抵抗規定温度2を結んだグラフの傾きを表しています。
NTC サーミスタは、マンガン、ニッケル、コバルトで出来ていて、温度が上がると比例して抵抗値が下がりますが、回路の工夫で出力電圧の正負を調整出来ます。(村田製作所の「NTCサーミスタ温度検知回路」より引用)

NXFT15XH
(多分)秋月電子さんで購入した、頭の青い温度センサです。

設定値は 25℃ で 10 kΩ、B定数は 3380 です。
MFSC-SD12001-8
頭の黒い温度センサです。

設定値は 25℃ で 10 kΩ、B定数は 3977 です。
型番不明
破棄するプリント基板から回収した NTC サーミスタです。
秋月電子さんで売っている「超薄型サーミスター 103JT-025」と似たタイプです。
非常に薄いので、隙間に差し込んで温度を測るのに重宝しそうです。
秋月さんと同じなら、設定値は 25℃ で 10 kΩ、B定数は 3435 です。

その他にも、3D プリンタのヘッド部で使用する温度センサがありますが、これも温度変化で抵抗値が変化するので NTC サーミスタですね。(温度が上昇すると抵抗値も上昇する PTC サーミスタという物を使った 3D プリンタもあるようです。)
3D プリンタのヘッド部は ABS などのプラスチック材料を溶かすために 300℃位以上まで計測できる温度センサを使用しています。
Arduino で使用する
NTC サーミスタを Arduino IDE で使うには、温度の変化に比例して変化する抵抗値を電圧に変換する必要があります。電圧に変換してしまえばアナログ入力端子で電圧を読み取って温度に換算することが出来ます。
正確な電圧源と外付け抵抗を準備して、NTC サーミスタを Arduino Uno のアナログ入力に接続すると温度変化が電圧変化として読み取れます。
ちなみに、今回の温度測定などに Arduino の VCC(+5 V)を基準電圧に使用すると、USB から供給される電圧は大きく変動するために正確な測定が出来ない可能性があります。外付けの基準電圧か 3.3 V を使いましょう。
Arduino の 3.3 V は、Arduino UNO では LP2985-33DBVR という 3.3 V レギュレータの出力(誤差 1%)、Arduino Nano は USB シリアルインターフェース IC の FT232RL 内の 3.3 V レギュレータ(誤差最大 0.3 V)出力なので比較的安定しています。
温度センサじゃなかったセンサ
温度センサの箱に入っていたセンサですが、データシートを見てみたら違うセンサでした。
CHS-GSS
他の温度センサと同じ場所にあったので、温度センサかと思ったら湿度センサでした。
5% ~ 95% の湿度をアナログ電圧(0 ~ 1.0 V)に出力します。
電源は+5 V です。

端子は左から見て、
・出力
・GND
・電源
MQT8K-5XC
温度センサと販売時の袋に書いてありましたが、データシートを見ると温度によって ON/OFF するバイメタルですね。

動作電圧:AC 125/250 V、DC 12/24 V
動作温度:ON 5 ℃、OFF 11.5 ℃
次回の予定
色々な種類の温度センサの使い方が、何となくですが分かってきました。
最終的にはペルチェ素子の表面温度を測定して温度を制御するのが目標ですが、次回は高電流(最大で数A)を扱う PID 制御の方法を調べつつ、ラジオペンチさんの「ペルチェ温度コントローラー」製作を目指します。
コメント