IoTとは何かを問いただすため、まずは薪ストーブに熱電対センサーを取り付ける注目デバイスで組み込み開発をアップグレード(33)(2/2 ページ)

» 2026年05月18日 07時00分 公開
[今岡通博MONOist]
前のページへ 1|2       

Arduinoで動作する温度測定プログラム

 リスト1はArduinoで動作する温度測定プログラムです。MAX6675モジュールから温度の値を取得して、見やすく加工し、仮想シリアルポートでPCに10進数として送り出す内容になっています。

 #include <SPI.h>
 int temp; 
void setup() {
  SPI.setBitOrder(MSBFIRST);           
  SPI.setClockDivider(SPI_CLOCK_DIV4); 
  SPI.setDataMode(SPI_MODE0);         
  SPI.begin();                       
  Serial.begin(9600);              
}
void loop() { 
  delay(500);                    
  digitalWrite(SS, LOW);           
  temp = SPI.transfer(0x00) << 8;  
  temp |= SPI.transfer(0x00);      
  digitalWrite(SS, HIGH);          
  Serial.println((temp >> 3) * 0.25);
}
リスト1 温度測定プログラム

 setup()関数では、SPIの設定とSPIの動作を有効にします。その後仮想シリアルポートを同様に有効にします。loop()関数では0.5秒間隔で温度データを取得し、見やすく整形した後で仮想シリアルポートに数値データを送ります。

 SPI.transferで8ビットの値を2回取得しています。最初に読み出したのが上位バイト、2回目が下位バイトです。tempに格納された16ビットのうち、温度データは上位12ビットなので下位に3ビット分シフトさせています。

 それに分解能である0.25をかけて、セ氏の温度表示にしています。

実験

 図3は、熱電対センサーキットとArduinoによって実測した、薪ストーブに着火してから1分以内の温度変化のグラフです。

図3 図3 薪ストーブに着火してから1分以内の温度変化のグラフ[クリックで拡大]

 縦軸が温度で、横軸が時間です。時間の単位は0.5秒なので、グラフの左端から右端までの時間は24.5秒になります。着火前は24℃台だったので、24.5秒で5℃以上温度が上昇していることが分かります。

 温度測定プログラムの設定に基づき0.5秒ごとに測定していますが、熱電対センサーを取り付けた金属製の金具自体がそれなりの熱容量を持っていると思いますので、約5秒ごとでも十分なのではないかと思っています。そのあたりは、運用しながら最適値を見つけられればと思っています。

おわりに

 本シリーズでは、この熱電対センサーを取り付けた薪ストーブをモデルケースとして、センサーが取得した値をさまざまな方法でなるべく遠くに届ける工夫を展開していきたいと思います。(次回に続く)

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR