パソコンで温度計

公開日: 電子工作 | , ,

Arduino + STTS751

ありきたりのPC温度計ですが、なんとなく作りたくなったので作ってみる。

コントローラーは手軽なArduino、温度センサーは昔ちょっと使ったまま部品箱で眠っているSTTS751を使います。

 

STTS751

STTS751

STTS751はI2C接続の温度センサーです。
測定温度は-40℃~+125℃、分解能は最大12ビットで0.0625℃刻み、精度は±1℃ (0~85℃)となっている。
このセンサーは、昔米粒AVRに接続して、Androidでも使えるようにしたことがある。

STTS751 – 米粒AVRで温度計

STTS751

STTS751は表面実装のSOT23パッケージ、ブレッドボードで使う為に変換基板を利用する。
バイパスコンデンサ 0.1uFを裏面に乗っけている。

高精度12ビットI2C接続デジタル温度センサ STTS751 – 秋月電子通商
SOT23変換基板 金フラッシュ (10枚入)- 秋月電子通商

 

ArduinoでI2C

米粒AVRではソフトウェアI2Cを作ってSTTS751を使ったけれど、Arduinoではハードウェアで実装されていてライブラリも用意されているので、簡単にI2Cデバイスが使える。

Android アナログピン

Arduino UNOでは、アナログの4番・5番がI2C用のピンとなる。
その他のArduinoでは利用するピンがそれぞれ違っていたりする。

Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1

Wire Library – Arduino

 

回路

Arduino + STTS751

ArduinoとSTTS751を接続するのに、秋月電子のI2Cレベル変換モジュール(AE-FXMA2102)を間に入れました。

※2014/2/18 回路を修正しました

 

プログラム

#include <Wire.h><br />
<br />
#define STTS751_ADRS  0b0111001<br />
<br />
void setup()<br />
{<br />
    Serial.begin(115200);<br />
    Wire.begin();<br />
<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x03);<br />
    Wire.write(0b10001100);        // EVENT停止、12bit解像度指定<br />
    Wire.endTransmission();<br />
}<br />
<br />
void loop()<br />
{<br />
    byte valueHigh,valueLow;<br />
    int16_t temp;<br />
<br />
    // 整数部をセンサーから取得<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x00);<br />
    Wire.endTransmission();<br />
    Wire.requestFrom(STTS751_ADRS, 1);<br />
    valueHigh = Wire.read();<br />
<br />
    // 整数部をPCへ出力<br />
    Serial.print(valueHigh);<br />
    Serial.print(".");<br />
<br />
    // 少数部をセンサーから取得<br />
    Wire.beginTransmission(STTS751_ADRS);<br />
    Wire.write(0x02);<br />
    Wire.endTransmission();<br />
    Wire.requestFrom(STTS751_ADRS, 1);<br />
    valueLow = Wire.read();<br />
<br />
    // 少数部をPCへ出力<br />
    temp = (valueLow >> 4) * 625;<br />
    Serial.print(temp/1000);<br />
    temp %=1000;<br />
    Serial.print(temp/100);<br />
    temp %=100;<br />
    Serial.print(temp/10);<br />
    temp %=10;<br />
    Serial.print(temp);<br />
<br />
    Serial.print("\r\n");<br />
    delay(1000);<br />
}<br />

このプログラムをArduinoで走らせると、1秒毎にシリアル出力で温度が出力される。

Arduino + STTS751

 

以上、とりあえず、PC接続の温度計が出来ました。

 

関連記事

raspi-config

Raspbianの最初の設定

  Raspbianのインストール後にraspi-configを使って行う最初の設定

記事を読む

Arduinoで温湿度計

Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前「パソコンで温度計」と言うもの

記事を読む

soundIR 受信機 回路図

赤外線リモコン受信機(イヤホンジャック接続)の回路

  前回からだいぶと時間が経ってしまっていますが、今回はイヤホンジャック接続のリモコン受

記事を読む

秋月電子 リアルタイムクロック(RTC)モジュール

秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを買ったので、ちょっと試してみま

記事を読む

no image

PIC24FJ64GB002でADKを試す(その2)

 前回「PIC24FJ64GB002でADKを試す(その1)」では回路の説明までしたので、

記事を読む

no image

Android + Arduino でリモコン2 (softmodem接続)

以前、LAN接続のリモコン Android + Arduino でリモコン と言うものを作ったのです

記事を読む

no image

米粒AVRの動作周波数

  米粒AVR(ATtiny10)のデフォルトでは内臓発振器利用の1MHzが指定されてい

記事を読む

熱湯の温度計測実験

パソコンで温度計 #3

今回は、I2C接続の温度センサー STTS751をケーブルを使ってArduinoに接続できるよう

記事を読む

no image

米粒AVRで小型8連ナイトライダーを作ってみた

米粒AVR(ATtiny10)を2つ使って、8つのLEDを順番に点灯しています。 &nbs

記事を読む

sdcards

Raspberry Pi SDカードのクラスと起動速度

SDカードにOSをインストールするので、起動にはそれなりに時間がかかります。 では、どれくらい

記事を読む

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑