注意:すべてのOSOYOO ARDUINO用製品はサードパーティー製品であり、ARDUINOと完全に互換性があります。

認可されたオンライン小売業者:

AMAZON
amzuk

内容

  1. 紹介
  2. 準備
  3. TMP36について
  4. 接続
  5. スケッチのアップロード
  6. プログラムの実行結果

紹介

OSOYOO basicボードで温度を測定するのは、Analog DeviceのTMP36温度センサーと同じくらい簡単ではありません!このセンサーは、かなり広い温度範囲(-50℃から125℃)を測定でき、かなり精度が高い(0.1℃の分解能)上に、非常に低コストであるため、人気のある選択肢となっています。このレッスンでは、TMP36の基本的な概要と、接続されたアナログ入力を読み取るための基本的なコードについて説明します。

準備

ハードウェア

ソフトウェア

TMP36について

概要

TMP36は、低電圧で精密な摂氏温度センサーです。出力電圧は、摂氏(セルシウス)温度に比例する直線的な関係を持ちます。TMP36は、外部キャリブレーションを必要とせず、25℃での典型的な精度が±1℃、−40℃から+125℃の温度範囲では±2℃という精度を提供します。

TMP36の特徴と利点

PIN定義

このICには、電源用の2つのピンとアナログ出力用の1つのピンがあります。出力ピンは、摂氏温度に比例する直線的な電圧出力を提供します。華氏温度を得るためには、この摂氏温度を華氏温度に変換するためのコードをボードに書く必要があります。

以下はTMP36 ICのピン配置図です:

ピン1はICを動作させるための正のDC電圧を受け取ります。これは再び、2.7-5.5Vの間の電圧です。ピン3はグラウンドなので、DC電源のグラウンドまたは負の端子を受け取ります。そして、ピン2はICの出力で、測定した温度に比例したアナログ電圧を出力します。

温度の測定方法

TMP36を使用するには、左のピンを電源(2.7-5.5V)に接続し、右のピンをグラウンドに接続するだけです。その後、中央のピンには温度に直線的に比例するアナログ電圧があります。アナログ電圧は電源に独立しています。

電圧を温度に変換するには、基本的な式を使用するだけです:

Temp in °C = [(Vout in mV) – 500] / 10

例えば、電圧出力が1Vの場合、温度は((1000mV-500)/ 10)= 50℃です。

複数のセンサーを使用する際の問題:

複数のセンサーを追加すると、温度が不一致になる場合、アナログ読み取り回路を1つのピンから別のピンに切り替える際にセンサーが干渉していることを示しています。最初の読み取りを2回遅らせて、2回目の読み取りのみを使用することで、これを修正できます。

下記のテクニカル記事を自然な日本語に翻訳してください。

これまでに見てきたフォトセルセンサーとは異なり、TMP36とその類似品は抵抗器のようには動作しません。そのため、センサーから温度値を読み取る方法は1つしかありません。それは、出力ピンを直接アナログ(ADC)入力に接続することです。

接続方法

構築する温度センサー回路は以下のとおりです。

TMP36のピン1はボードの+5Vに接続します。
TMP36のピン2はボードのアナログピンA0に接続します。
TMP36のピン3はボードのグラウンド(GND)に接続します。

電源は2.7Vから5.5Vまで使用できることを忘れないでください。この例では5V電源を使用していますが、同じく3.3V電源でも同じように使用できます。どの電源を使用しても、アナログ電圧読み取り値は約0V(グラウンド)から約1.75Vの範囲になります。

5Vを使用して、センサーを直接アナログピンに接続している場合は、次の式を使用して10ビットアナログ読み取りを温度に変換できます。

ピンの電圧(単位:ミリボルト)は、ADCからの読み取り値を使用して以下の式で求めることができます:(ADCの読み取り値)×(5000/1024)。この式は、ADCからの数字が0から1023の範囲である場合、0から5000mV(=5V)の範囲に変換します。もし3.3Vを使用している場合は、次の式を使用してください:(ADCの読み取り値)×(3300/1024)。この式は、ADCからの数字が0から1023の範囲である場合、0から3300mV(=3.3V)の範囲に変換します。そして、ミリボルトを温度に変換するには、次の式を使用します:摂氏温度=(アナログ電圧(単位:mV)- 500)/ 10。

コードプログラム

上記の操作が完了したら、USBケーブルを使用してボードをコンピュータに接続してください。緑色の電源LED(PWRと表示されています)が点灯するはずです。Arduino IDEを開き、プロジェクトに適したボードタイプとポートタイプを選択して、以下のスケッチをボードにロードしてください。

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        //the resolution is 10 mV / degree centigrade with a
                        //500 mV offset to allow for negative temperatures
/*
 * setup() - this function runs once when you turn your Arduin on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
}
 
void loop()           // run over and over again
{
 //getting the voltage reading from the temperature sensor
 int reading = analogRead(sensorPin);  
 // converting that reading to voltage, for 3.3v Arduino use 3.3
 float voltage = reading * 5.0;
 voltage /= 1024.0; 
 // print out the voltage
 Serial.print(voltage); Serial.println(" volts");
 // now print out the temperature
 float temperatureC = (voltage - 0.5) * 100 ;//converting from 10 mv per degree wit 500 mV offset
 //to degrees ((voltage - 500mV) times 100)
 Serial.print(temperatureC); Serial.println(" degrees C");
 // now convert to Fahrenheit
 float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 Serial.print(temperatureF); Serial.println(" degrees F");
 delay(1000); //waiting a second
}

このプログラムの最後には、1秒ごとに温度を測定するための1,000ミリ秒の遅延を設定しています。この値は、個人的な好みやプログラムの必要性に合わせて調整することができます。

実行結果

アップロードが完了してから数秒後、シリアルモニターを開くと、1秒ごとに電圧と温度の読み取り値が表示されるはずです。

注:プロジェクトに適したポートとボーレートを選択していることを確認してください。