パソコンで温度計

公開日: 電子工作 | , ,

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接続の温度計が出来ました。

 

関連記事

パソコンで温度計 #4

前回までに作ったPC温度計のログデータを、計測と同時に撮影した映像にオーバーレイ表示(スーパーイ

記事を読む

S2 SoundIR analyzer

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

 前回の赤外線リモコン受信機(イヤホンジャック接続)の回路 を使う為のAndroidア

記事を読む

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

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

記事を読む

no image

PICでMicroBridgeをやってみた

今回は、@yishiiさんが公開されている、PIC24FJ64GB002用のMicroBridgeソ

記事を読む

no image

USBホストケーブルとUSBケーブルの違い

USBホストケーブル(OTGケーブル)と普通のUSBケーブルの違いは、USBホストケーブルとして振る

記事を読む

no image

米粒AVRの動作周波数

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

記事を読む

秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、ちょっと比較してみる。 買っ

記事を読む

no image

Wimeji Client for Arduino

前回紹介したWimeji Client for WindowsXPをArduinoでやってみました。

記事を読む

no image

Android Open Accessory開発時のWiFiデバッグ

Android Open Accessory開発時のデバッグは、ADBをWiFiで接続しろと、USB

記事を読む

no image

AndroidでSoftModemを試してみた

今回、ここで言うSoftModemとは、携帯電話のオーディオ端子(イヤホン・マイク端子)を利用し

記事を読む

Arduinoで温湿度計 #2

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

Arduinoで温湿度計

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

ArduinoでSDカード

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

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

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

秋月の小型キャラクタLCD

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

PAGE TOP ↑