温度センサーモジュールを使ってみる(その2)
いよいよハードウェアの接続。
初めてのSPI通信ですがRaspberry pi Zero WHとセンサーモジュールの接続はこんな感じ。
Raspberry Pi側
赤: +5V (2pin)
黒: GND (6pin)
青: SPI0 MISO (21pin)
緑: SPI0 SCLK (23pin)
黄: SPI0 CS0 (24pin)
熱電対モジュール側
赤: Vin
3VO(接続無し)
黒: GND
青: DO
黄: CS
緑: CLK
接続図
回路図
Raspberry Pi GPIO
MAX31855熱電対モジュール
↓温度センサー、サーモカップル(熱電対)を接続した写真。
ダウンロードしたライブラリーにexamplesというフォルダーがあったので開いてみたところ
simpletest.pyというサンプルプログラムがあったのでとりあえず実行してみた。
う~ん、1秒ごとに温度を表示しようとしていますが0.0℃が続いている。
なぜ動かないかプログラムソースを見てみます。
Raspberry Pi専用のプログラムかと思いましたが、よくよく見るとBeagleBorn Blackという
コンピューターボードにも対応するプログラムの模様。
ん? Raspberry Pi用のソフトウェア設定はできてるのに大事なハードウェアの設定部分がコメントになってる!?
Adafruitさ~ん、このままじゃRaspberry Piで動かないでしょ!!www
こういうところが私みたいな素人のつまづく原因。
ということで、↑の2~4行目、先頭の「#」を3つ消して実行。
温度表示成功!!
バッチリ温度を取得できています。
この温度センサーモジュールは、サーモカップル(熱電対)と令接点補正用の基板上温度センサーの
二つの温度を同時に取得できるようです。
結果がちょっと見づらいのと華氏表示もしているので少しプログラムを変更してみました。
External tempが熱電対で、Internal tempが基板上の温度。
1秒毎に温度が更新されて摂氏のみの表示にしました。
↑温度表示のプログラム、不要な部分を消してよりシンプルにしてみました。
Adafruitさんのサンプルプログラムだけだと何故か時々サーモカップルの出力にエラーが発生するので
プログラム中に↓の部分を追加してエラーが発生しないようプログラムを工夫しています。
次に、実際に氷水の温度を測定し0℃近くになるかを確認。
External(熱電対)の温度が0℃近くで表示されています、
熱電対側の分解能が0.25℃なのでなかなか良い感じです。
今回は温度センサー(熱電対)と温度変換モジュールから温度を取得することに成功しました。
試行錯誤の連続でしたが、なんとか無事にプログラムで温度を読み込める様になりました。
これで温度センサーを使い、いろいろと応用できそうです。