Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC16F1503 or PIC16F1827 + MAX6675使用K型熱電対モジュール

PIC18F13K50用のサンプルを探してきてPIC18F14K50で動くことは「PIC18F14K50 + MAX6675使用K型熱電対モジュール」で確認した。
ほとんど変更する部分も無かったので、PIC初心者の味方、PIC16F1系でも動かせるかやってみる。
SPI通信を扱うのは初めてだ。
20160308215714

仕様としては、K型熱電対 –> MAX6675 –> SPI –> PIC16F1503 –> USART –> FT232RL –> USB –> TeraTerm という順序。
PICからTeraTermまでの部分は、以前「PIC16F1827 – ADC – Bit Banging UART -> FT232RL -> PC」でやってあるので、コードを持ってきて使うピンにあわせて若干変更するだけだ。
ちなみに、9800以上のボーレイトだとエラー気味になったので、今回は4800baudで動かしている。
いったい、どの程度の速度まで可能だったのか、しっかりテストしてみた記憶が無いが、ここではそれが主題ではないので良しとする。
もとのサンプルにあったUSBがらみを捨ててシリアル通信とし、SPIまわりもヘッダファイルから必要な部分だけをかいつまんでmainへ移動させたらすっきり、これだけになってしまった。

CKPとCKEの選択がいまひとつピンと来ないくらいで、さほど問題なく計測データを取得できていると思う。
8ビットずつにわけて2組読み込んだものをあわせた16ビットがMAX6675が送ってくるデータだ。
pic16f1503_max6675_01
下位3ビット(赤枠)は温度データ以外のデータなので捨てる。
12ビット分ある温度データだが、1ビットあたり0.25℃換算なので、整数値で表示するなら下位2ビットは必要ない。
必要なのは青枠の部分だけとなる。
よって、5ビット分シフトした結果を文字に直してTeraTermへ送るとちょうど温度を表示することができる。
下は、熱電対をポットのお湯に投入し、その後取り出して放置したときの温度変化のグラフだ。
pic16f1503_max6675_02
eBayで買った安いモジュールだが、ぐらぐら煮立った熱湯に投入するとちゃんと100~101℃を示すので、そこそこ使えそうだ。
先端の細い、狭い隙間に入れられるような形状の熱電対の方がいいなあと思う。
今回購入したものの先端のカバーを外してしまえばいいのかもしれないが、熱電対だけなら安いので適当に見繕ってもう一本買ってみるつもりだ。
追記
バーナーであぶったり、氷水に入れたり熱湯に入れたりしてみた。
pic16f1503_max6675_03

追記
PIC16F1827にも移植してみた。
こちらも、ピンの変更に対応して少し書き換えるだけで済む。

ICに組み込まれた温度センサーはいろいろあるが、バーナーであぶったり、熱湯につけたりできるという意味で熱電対は遊びやすい。
SPI通信も、やってみればさほど難しくもなく手軽にデータを取れることがわかった。

このエントリーをはてなブックマークに追加

Posted under: PIC16F1503, PIC16F1827, 電子工作その他


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.