wiki:MAX6675Sketch

Version 18 (modified by maris, 6 years ago) (diff)

--

MAX6675 K型熱電対温度センサのスケッチ

どんなスケッチ(ソフトウェア)で使うのかを説明します。

すでにモジュールが完成していて、Arduino Uno (Arduino Duemilanove) のデジタル8番~13番の位置に差し込んであるものとします。 Arduinoのデジタル8番がモジュールのVCC、Arduinoのデジタル13番がモジュールのSCKになります。

このページの添付ファイル「MAX6675_10_02.zip」をダウンロードして、展開します。 展開してできたフォルダを、Arduinoのスケッチブックのフォルダに移動します。 スケッチブックのフォルダは、ウィンドウズでは標準は「ドキュメント」(Vista/7の場合)または「マイドキュメント」(XPの場合)の中にある、「Arduino」というフォルダです。

Arduino統合環境を起動して、「ファイル」メニューの「スケッチブック」から「MAX6675_10_02」を探して開いてください。

あとは、普通にArduinoに書き込んで実行します。Serial Monitorを有効にすると、定期的に温度が表示されます。
「Error」と表示された場合は、熱電対がきちんとつながっていないなどの不具合があります。「0.00」と表示された場合は、モジュールが正しく接続されていなかったり壊れていたりする可能性があります。

スケッチの先頭に、以下の定義があります。

#define VCC  8
#define GND  9
#define SLAVE  10

モジュールをデジタルの8番~13番に直結しない場合は、これらの定義を変更してください。
VCCおよびGNDの定義は、デジタルの8番および9番からモジュールに電源供給を行うためです。 こんなずるをしないで、ちゃんと電源に接続する場合は、この2行を削除してください。
SLAVEの定義は、SPIで言うところのスレーブセレクトにデジタルの何番を使うかを決めています。

このスケッチはArduinoIDE付属のSPIライブラリを使用しています。 古いArduinoIDEをお使いで、このスケッチが上手く動かない場合は、MAX6675.zipをお使い下さい。

MAX6675_10_02.ino (Arduino 1.0付属SPIライブラリ対応版)

#include <SPI.h>

#define VCC  8
#define GND  9
#define SLAVE  10

void setup() {
#ifdef GND
  pinMode(GND, OUTPUT);
  digitalWrite(GND, LOW); 
#endif
#ifdef VCC
  pinMode(VCC, OUTPUT);
  digitalWrite(VCC, HIGH);
#endif
  pinMode(SLAVE, OUTPUT);
  digitalWrite(SLAVE, HIGH);

  Serial.begin(9600);
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV4);
  SPI.setDataMode(SPI_MODE0);
}

void loop() {
  int value;

  delay(500);
  digitalWrite(SLAVE, LOW);        //  Enable the chip
  value = SPI.transfer(0x00) << 8;  //  Read high byte
  value |= SPI.transfer(0x00);      //  Read low byte
  digitalWrite(SLAVE, HIGH);         //  Disable the chip
  
  if ((value & 0x0004) != 0){
    Serial.println("Error");
  } else {
    Serial.println((value >> 3) * 0.25);
  }
}

Attachments (4)

Download all attachments as: .zip