2020年4月18日土曜日

MAX31865の謎症状判明

うちの「かんたんスマートモニター」のオプションモジュールに、
Pt100センサー入力モジュールが追加されました。

Pt100のセンサーを繋いで温度を測るだけの代物ですから、
特に目新しいような代物ではございませぬ。

Pt100の特性上、通常の16bitA/Dコンバーターモジュールを流用しても、
そこそこの精度で測定は可能と思いますが、
MAXIMからMAX31865という専用ICが出ているので、
これはぜひとも使わなければ もったいない!!

というわけで、MAX31865を積んだモジュールを新規追加してわけでした。

ちなみにこのMAX31865という石、なかなか良く出来ています。
通常のA/Dコンバーターを使用する場合より、かなり部品数を減らすことが出来るかと。
かと言ってMAX31865自体の単価が高いわけではないので、
トータルコストは こっちの方が有利なはず。
そして何より、インターフェースがSPIという点が大助かり。
I2Cオンリーだったならば、かんたんスマートモニターへの使用は断念してました。

唯一の難点を挙げるなら、他に類似の石が無い点でしょうか。
Pt100用のICを探すと、必ずこの石にたどり着くことを意味するわけでして、
どこかで大口需要が発生しちゃうと、入手性が悪化する可能性が有るんですね。


そんな話はさておき、さくさくと基板を作りまして、いざ試運転。
ん~~~、なぜか半分くらいの測定値が出力されてくる???

私の解釈が間違っているのか?と、データーシートを何度も読み返す。
あ、ちなみにMAX31865は日本語データーシートが有るので助かります。
しかし、やっぱり解釈に間違いは無い模様。

半分にはなっているものの、一応それなりに測定できている様なので、
これはこれで良しとするべきか? とか考えてましたが・・・・・・・

ふと、SPIモードが気になりました。
PICマイコンのSPIトランシーバーにはモード設定が存在するわけですが、
他のモジュールのデバイスに合わせ、ほぼ設定は固定しております。
で、今回もその設定のままMAX31865を繋いでおりました。

そこで、設定レジスタの内のCKEを1から0に変えてみたら・・・・・・・
MAX31865からの出力データーが予想通りの値に!!
つまり、MSB側の1ビットが欠けて読み取られてたんですね。
なので約半分の値になっていたというオチ。

普通ならば何らかの通信エラーで不具合が出てくるところなんでしょうけど、
そこにMAX31865ならではの話が絡んでくるのでした。

MAX31865って、SPIモードにちょっと汎用性を持たせているんですね。
波形の状態を見て、医師の方がモードを切り替えてくれちゃうんです。
なのでたぶん、見た目上は通信エラーが発生しなかったんでしょうね。
その代わり、LSB側1ビットが欠落したことにも気付かなかったわけですが・・・・
ロジアナで波形を直接見れば すぐに判ったのかもしれませんね。

ともあれ、PICにMAX31865を繋ぐ際は、CKE=0にしなきゃアカンよという話でした。

0 件のコメント:

コメントを投稿