= MAX6675 K型熱電対温度センサ(SPI接続) = K型[http://ja.wikipedia.org/wiki/熱電対 熱電対]を使用した温度計モジュール。SPIでつなぎます。 校正不要。0℃~1023℃、0.25℃刻み。 ライターの火の温度とか測れちゃいます! [[Image(1.JPG, 500px)]] Arduinoなら、そのままデジタル8番~13番の位置に差し込めば動きます。 [[Image(2.JPG, 500px)]] 熱電対は比較的熱容量が小さいので、温度変化の検出が早いです。 常温程度の温度をモニタしていても、案外面白いです。 == 概要 == * K型熱電対を使用(接続はミニチュアコネクタ) * マイコンとはSPI接続(読み出しのみ) * [http://japan.maxim-ic.com/quick_view2.cfm/qv_pk/3149 Maxim社のMAX6675]を使用。 == 特徴 == いい点: * 校正不要 * 0℃~1023℃の広範囲を測定 * Arduinoなら、いきなり差し込んで動く。 悪い点: * 0.25℃刻みなのがちょっと粗い。 * 0℃以下を測定できない。 == 用途 == * ハンダごてのコテ先温度計 * なんちゃってリフロー * 恒温槽 * 各種実験 == キット販売検討中 == キットとして販売することを検討中です。 チップ部品が2個あるのがもしかしたら問題。 SOICは1.27mmピッチだからなんとかなるでしょう。 1005のチップコンデンサは、人によってはキツイかもしれません。 虫眼鏡、ピンセット、細いコテ先、細いハンダ、フラックスが必須です。 逆に、熱電対レセプタクルのハンダ付けには、太いコテ先が必須。 内容物: * ボード * Maxim MAX6675(SOIC 8ピン) * チップコンデンサ(1005サイズ) * K型熱電対専用レセプタクル基板直付け用(ミニチュア) * ピンヘッダ6ピン * K型熱電対(安物なので高温だと被覆が燃えます) * K型熱電対専用プラグ(ミニチュア、黄色) 3,000円くらいかなあ。MAX6675が高いんです。 回路図とパターン図は、そのうち掲載します。 オープンソースだなんてほどのことはありません。 == 差し上げます(完成品) == ハンダ付け済みの完成品を2個用意しました。抽選で差し上げます。 こんなマニアックな物、欲しい人いるでしょうか。 もしも、欲しい方がいらっしゃいましたら、以下の内容をメールでお送りください。 キットで販売した場合の価格をアンケートしたいと思います。 当選した方には、こちらからご連絡差し上げ、お送り先のご住所などをおたずねします。 {{{ MAX6675ボードがすごく欲しい! ハンドル名:(何かてきとうにお名前を決めてください) 使い途:(もらったら何に使うか書いてください) キットの価格を評価してください(××、×、△、○、○○の5段階)  1,000円:  1,500円:  2,000円:  2,500円:  3,000円:  3,500円:  4,000円:  4,500円:  5,000円: }}} 1,000円は、間違いなく無理なんですけど、いちおう。 もしかしたら、ハンドル名と使い途を公表させていただくかもしれません。 なるべく、面白いand/or有意義な使い途の方に差し上げたいと思います。 メールの宛先は、「`sales@`」の後にこのドメイン名。 メールの件名は、「MAX6675」にしてください。 あたった人は、事後に一言、使い勝手などを教えていただきます(公表することがあります)。 一応、「モニタ募集」って形ですが、めんどうなレポートとかは不要です。 締め切りは2009年3月25日(ぐらい)でお願いします。 == 謝辞 == Maxim社の無料サンプル制度を利用させていただきました。 うちみたいな小さな会社に対しても、ちゃーんと対応して下さるのが嬉しいです。 届くの早いし。ちなみに、マキシムジャパンから届きます。 サンプルでいただいたチップは、商売に使っちゃいけないのがルール。 上記のプレゼントで使用しているチップは、別途購入した物です。ご安心下さい。 == MAX6675.pde == {{{ #!c #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 Serial.begin(9600); SPI_Master.begin(SLAVE); } void loop() { int value; delay(500); SPI_Master.enable(SLAVE); value = SPI_Master.read() << 8; value |= SPI_Master.read(); SPI_Master.disable(); if ((value & 0x0004) != 0) Serial.println("Error"); else Serial.println((value >> 3) * 0.25); } }}} == SPI.cpp == {{{ #!c #include "SPI.h" boolean SPI_Master_Class::initialized_ = false; int SPI_Master_Class::enabled_ = -1; void SPI_Master_Class::begin(int slaveselecter) { if (!initialized_) { initialized_ = true; enabled_ = -1; pinMode(SS, OUTPUT); // Must be set as OUTPUT before SPE is asserted. pinMode(MOSI, OUTPUT); pinMode(MISO, INPUT); digitalWrite(MISO, HIGH); // Pull-up pinMode(SCK, OUTPUT); SPCR = (1<= 0) { digitalWrite(enabled_, HIGH); enabled_ = -1; } } byte SPI_Master_Class::write_and_read(byte data) const { SPDR = data; while (!(SPSR & (1<