create every day - 福野泰介の一日一創

いい温度センサー ADT7310 を IchigoJam で使う

2017/07/06 23:55:00
#IchigoJam #KidsIT #maker 

手軽な学習キット「tempeX」に同梱される温度センサーの精度はプラスマイナス4度。 誤差が大きめで、室温が26度でも最大30度と出てしまうなど室温を測るには適しません。

今回は、いい温度センサー「ADT7310」をIchigoJamにつなげてみました。 精度はプラスマイナス0.5度!だいたい正確な室温が測れそうです。


室温を測っている様子 25.6℃

接続方法:ADT7310とIchigoJamを接続する
VDD - OUT4 (モジュールの電源制御)
SCL - OUT1 (SPIのクロック)
SDO - IN1 (SPI モジュールからのデータ受信用)
SDI - OUT2 (SPI モジュールへのデータ送信用)
~CS - OUT3 (SPI モジュールの選択)
GND - GND (グランド)


温度センサー ADT7310 - 小型ブレッドボードでOK!

プログラムをかく

10 OUT3,1:OUT4,1:WAIT10:OUT3,0:N=#54:GSB@SPIW:WAIT20 20 GSB@SPIR:N=N>>3 30 ?N/16;".";N%16*10/16 40 WAIT30:GOTO20 100 @SPIW:FOR I=7 TO 0 STEP-1:OUT1,0:OUT2,N>>I&1:OUT1,1:NEXT:RTN 110 @SPIR:N=0:FOR I=15 TO 0 STEP-1:OUT1,0:N=IN(1)<<I|N:OUT1,1:NEXT:RTN

0から1に変わるタイミングでデータを送るSPIというデータ送受信方式が使われています。
@SPIW が、8bitのデータをIchigoJamからモジュールへ送るプログラム。
@SPIR が、16bitのデータをモジュールからIchigoJamで受け取るプログラム。
#54をモジュールへ送信すると温度データを連続データ受信するモードに変わります。
モジュールの詳しい動きはADT7310のデータシートを参照すると書いてあります。


オシロスコープでSPIでやりとりされる信号の様子を見てみました。SPIはあんまり速度が関係ないので、IchigoJamでも扱いやすい!


時々おかしな温度データを示すのが謎ですが、信号線が時々まるっと化けてしまっていました。異常値は表示しないようなプログラムで対処もできますが、モジュールの使い方がどこか悪いのかも??

links
- ADT7310 データシートおよび製品情報 | アナログ・デバイセズ
- デジタル温度センサ ADT7310 DIP化モジュール MDK001の通販ならマルツオンライン
- 温度センサー(I2C接続、精度±0.5C)連結コネクタ付 MADT7410-MODの通販ならマルツオンライン (SPIではなくI2C接続のものもある様子)
- ADT7310使用 高精度・高分解能 SPI・16Bit 温度センサモジュール: センサ一般 秋月電子通商 電子部品 ネット通販
- 温度センサ ADT7310: センサ一般 秋月電子通商 電子部品 ネット通販 (チップ単体でも買えます!)

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image