はっくはっくキッチン
Hack Hack Kitchen

AVR による MAX31855 制御器

 2022/01/29

max31855-banner.jpg

ちょっと温度 (特に何かの表面温度) をはかりたい場合には、例えば DMM に付いている熱電対を使うことができますが、 最大の欠点はこの DMM を使って電圧・電流の測定ができなくなってしまうことです。

そこで、DMM を別目的で使いつつ、ちょっと表面温度をはかりたいといった時のために、 MAX31855 ボード を使用した温度計を作成しました。

MAX31855 Controller board
MAX31855 Controller board
MAX31855 Controller board
MAX31855 Controller board

上の写真では熱電対をワニ口クリップ経由で接続していますが、熱電対は端子台に直接接続すべきです。 また上部にある白い小さなボードは DC-DC 昇圧 (5V) モジュールです。

AVR は 7-Segment LED ボードの下にあります。 トランジスター、抵抗等はチップ部品を使っています (基板裏についているので、写真では見えません)。

回路図

./max31855ctrl-sch-thumb.png
Schematic of AD9833 Controller (click to enlarge)

コンパイル方法

7セグメントの使用、USART 出力、温度補正有無はそれぞれ有効化/無効化できます。 デフォルトでは全て有効化されていますが、不要な場合は Makefile.settings の該当部分をコメントアウトして下さい。

温度補正については MAX31855の温度データーの補正 を参照して下さい。

MAX31855 ボードへ接続するピンは max31855-config.h で変更できます。

7セグメントボードへの接続は固定です。 ソースを変更することで違うピンも使用できますが、現在の実装は

  • セグメントの ON/OFF には一種類のポートの 8 ピン (「PB0 から PB7」とか「PC0 から PC7」とか) を使用し、

  • 桁選択には一種類のポートの 0 から 3 (例えば PC0 から PC3) を使用する

という前提で書かれているため、それ以外で使用する場合にはソースの大幅な変更が必要となります。

このプログラムでは拙作 pAVRlibLibrary for Thermocouple based on NIST ITS-90 Database を使用しています。 git submodule になっているので、下記のように --recursive を付けて git clone するか、 通常の git clone の後、 git submodule update -i として下さい。

具体的な手順は次の通りです。

温度補正を使わない場合は avra でもアセンブルできます。 その場合は、上記の make の部分で、

make -f Makefile.avra
make flash

として下さい (make flash では -f Makefile.avra はあってもなくても OK)。

使い方

USE_USART を定義してコンパイルした場合 (デフォルト) は、シリアル経由で詳細情報が出力されます。

エラー発生時は以下のエラーコードが表示されます。

0

温度補正で範囲外になり NAN (not a number) が発生した

1–7

MAX31855 の LSB 3 ビットに対応

D2

SCV Fault (熱電対が V$_\text{CC}$ に短絡している)

D1

SCG Fault (熱電対が GND に短絡している)

D0

OC Fault (熱電対がオープン (接続なし) になっている)

License

  • MIT License