周波数を使って熱電対センサーの測定値を安価な電線でより遠くまで伝送する:注目デバイスで組み込み開発をアップグレード(35)(1/2 ページ)
「センサーの値を遠くまで届ける」をテーマにした新シリーズの第3回。第2回では熱電対センサーの測定値を、安価な電線を使って10m程度離れた距離から確認できるようにした。今回は同じく安価な電線を使って測定値をより遠くまで伝送する方法を検討する。
はじめに
「センサーの値を遠くまで届ける」をテーマにした新シリーズの第3回です。前回は、薪ストーブに取り付けた熱電対センサーの測定値を、安価な電線を使って10m程度離れた距離から確認できるようにしました。
今回は、一般的な電線を使うことは変わりませんが、前回の10m程度よりもさらに遠くまで熱電対センサーの測定値を届ける実験の一部始終を披露します。
前回は電圧値によってセンサーの測定値を遠くまで届けるという試みでした。しかし、電圧を扱う場合、ケーブルの太さや長さによって電圧降下の度合いが異なるので、より遠くまで伝えようとするとどこかの時点で校正が必要になるのが課題です。それに対して今回は、音(電気信号)の周波数で熱電対センサーの測定値を伝えるので、より遠くまで届けられるともくろんでいます。
実験の概要
図1に今回の実験概要を示します。
今回の実験では市販のマルチメーターを使用します。指針で測定値を示すいわゆるアナログメーターが一般的にテスターと呼ばれるのに対し、測定値をデジタル表示するのがマルチメーターです。市販のマルチメーターが全ての周波数を測定できるかというとそうではないので、そこは各自お手持ちのマルチメーターの仕様を確認してみてください。
図2はマルチメーター(厳密にはオシロスコープ機能が付いているものはマルチメーターとは呼ばないようです)で周波数を表示しているところです。
周波数は、画面の左下に「920.1Hz」と小さい黄色の文字で表示されています。実際には、熱電対センサーがさらされている環境の温度は920℃以上になりますが、今回は検証用に疑似的に周波数を生成しています。詳しくは後述の検証の項目で説明します。
実験システムの回路
図3に本実験システムの回路を示します。
熱電対センサーのモジュールに搭載されているMAX6675とArduinoはSPI(Serial Peripheral Interface)というシリアル通信インタフェースで接続されています。
出力は温度情報を周波数に変換したのち3番ピンから出力されます。ケーブルは家庭内で最もありふれている電源ケーブルなどの電線を使用できます。
後はその電源ケーブルをマルチメーターにつなぐわけですが、つなぎ方はマルチメーターごとに異なります。お手持ちのマルチメーターの取扱説明書を参考にしてみてください。
周波数の送信
リスト1に、MAX6675から得られた温度の測定値を周波数に変換する、Arduino上で動作するプログラム「frequency.ino」を示します。
#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(2000);
digitalWrite(SS, LOW);
temp = SPI.transfer(0x00) << 8;
temp |= SPI.transfer(0x00);
digitalWrite(SS, HIGH);
temp = temp>>5;
Serial.println(temp);
noTone(3);
if (temp>31) tone(3, temp);
}
setup関数では、SPIの設定とPCに接続するシリアル通信の準備と設定を行っています。
loop関数では、MAX6675から温度の値を取得しtone関数を用いて周波数に変換しています。例えば、センサーの値が100℃を示していればtone関数の第2引数に100を入れれば、100Hzの音に変換して第1引数で指定した3番ピンに出力します。
tone関数の制限で31Hz以下の周波数を出力できないので、それ以下の値の時にはtone関数を停止します。
Copyright © ITmedia, Inc. All Rights Reserved.


