温度を測って異常を検知 その1 1-Wire温度センサ
■動作中の機器の異常は熱に現れる
モータなどが過熱して温度が高温になったのを検知する仕組みを考えます。
温度を測る場所とArduinoは離れていることを想定します。アナログ温度センサのLM35DZのデータシートによれば、ある程度のケーブル長は想定された回路が掲載されています。正確な温度測定はそれなりの経験が必要かもしれません。
ここでは、マキシムの1-Wireディジタル・サーモ・メータDS18B20を使います。アマゾンなどでは、金属ケースに入ったタイプが入手できます。1-Wireは数十mから100mを超えるケーブル長をサポートしています。
●ディジタル温度センサDS18B20の利用方法
1-Wireは、マキシム(元ダラス・セミコンダクタ)の複数のデバイスをつないで測定する設計のインターフェースです。1-Wireの専用のインターフェースはArduino UNOには用意されていません。ライブラリは検索するといくつか見つかります。今回はこちらのPaulStoffregen/OneWireライブラリを利用します。
①Clone or download -> Download ZIP をクリックしてライブラリをダウンロードする。ダウンロードしたzipファイルは、ダウンロード・フォルダに入っている。
②Arduino Web EditorのLibrariesをクリックする。
③Customを選択し、uploaded as a .Zip files をクリックする
④Import画面が出るのでImportボタンをクリックする。エクスプローラが開くので、ダウンロード・フォルダから、OneWire.zipを選択する。Libraries Successfully Importted:OneWire が表示される
⑤ONEWIREの中にExamplesの表示がある下向き矢印をクリックすると、その中にスケッチDS18x20_Temperatureがあるのでクリックすると、編集エリアに読み込まれる。メニュー「…」のSave Asで「DS18B20_Temp」で保存する。
⑥チェックのアイコンをクリックして、コンパイルでエラーが出ないことを確認する。
●接続
スケッチの中を見ると10番ピンにつないでいます。次のように一つのDS18B20を接続します。ケーブルの色のうち電源のプラスは赤色、グラウンドは黒色、信号は黄色もしくは白色が多いようです。
実行します。一つのDS18B20を見つけ、温度を表示しています。Dataの最後の1バイトが送られてきたCRC値で、次のCRC=が計算した値です。
(※1)DS18B20を使った記事
Arduino YUN Mini でIoT その4 MQTT(2)
5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (16) ディジタル温度センサ1 1-Wire DS18B20