このプロジェクトでは温度測定が多々行われることになります。
現構想では最終的にKタイプの熱電対で温度測定/制御を行うことを考えています。熱電対周りの部材はすでにAliexpressに手配をかけており、入手待ちですが、例によって時間がかかると思われますので、先に手持ち部材で多点の温度計測が可能な測定系を作っておこうと思い立ちました。
水冷ペルチェ方式霧箱作成時に入手していたMicrochipのMCP9701がたくさんありますので、これを使うことにしました。秋月で8個200円と良心的な価格で売ってます。
温度精度はいまいちですが、上がった下がったはわかりますし、絶対温度(ケルビンではなく正確な温度という意味で)というより温度差が見えればよいのでとりあえずは使えるでしょう。
ということで、このあたりの部材で、
マイコンは山ほどあるArduino nanoのパチモンを使います。
ブレッドボード使ってピンヘッダをまっすぐはんだ付けします。
ピンソケット使って基板から脱着可能にします。ピンソケットカットにはアルティメットカッター使います。美しく美しく切断することができます。
基板はこれ使うかな。
ピンソケットはんだ付けして、
3PのXHポストを8個並べます。
付きました。
一生使える、いや相続できるであろう錫メッキ線で、
GNDとVDDラインを数珠繋ぎします。
センサは電圧で温度を出力しますので、ArduinoのADで読み取ります。
少しでも正確な値が読めるようにレギュレータで5Vを作ることにします。USBの電圧って結構揺れる印象があるんですよ。ハブも使いにくいですしね。
78L05を使います。昔7805にはひどい目にあったので、指差呼称しながら部品を確認し、ハンダ付けします。
出力をアナログポートにつなぎます。nanoのADは8ポートなので、全部使います。
汚いけどできました。
レギュレータに入れる電源ハーネス作って、
8個分のセンサハーネスを作ります。
まず8×3=24本全部のケーブルの一端にXHコンタクトをカシメます。これは楽しい作業。
中華カシメ治具ですが何の問題もなく使えます。わずか1000円かそこらの値段ですが、日圧の数万円もするカシメ治具と遜色ない出来栄え。
XHハウジングに刺して、
絡まないように三つ編みにしておきます。
他端にセンサをハンダ付け。
脚の部分は短絡しないように熱収縮チューブで保護しておきます。
これをたくさん作りました。結構疲れました。
温度の計算は簡単で、データシートの記載に従うだけです。
Arduinoのスケッチは出すまでもないですが、自分の備忘のために載せておきます。
配列使ってすっきりさせろとかいった突っ込みは無しの方向で(笑
8個のセンサデータを摂氏温度に換算し、カンマ区切りでシリアルから垂れ流してます。
来週はこれをPCから読んでエクセルに書き出してグラフ化するC#のプログラムを書くことにします。見える化はだいじなのです。
********************************
double TempA0 = 0;
double TempA1 = 0;
double TempA2 = 0;
double TempA3 = 0;
double TempA4 = 0;
double TempA5 = 0;
double TempA6 = 0;
double TempA7 = 0;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
}
void loop() {
TempA0 = analogRead(A0);
TempA1 = analogRead(A1);
TempA2 = analogRead(A2);
TempA3 = analogRead(A3);
TempA4 = analogRead(A4);
TempA5 = analogRead(A5);
TempA6 = analogRead(A6);
TempA7 = analogRead(A7);
TempA0 = (TempA0 * 0.005 – 0.4) / 0.0195;
TempA1 = (TempA1 * 0.005 – 0.4) / 0.0195;
TempA2 = (TempA2 * 0.005 – 0.4) / 0.0195;
TempA3 = (TempA3 * 0.005 – 0.4) / 0.0195;
TempA4 = (TempA4 * 0.005 – 0.4) / 0.0195;
TempA5 = (TempA5 * 0.005 – 0.4) / 0.0195;
TempA6 = (TempA6 * 0.005 – 0.4) / 0.0195;
TempA7 = (TempA7 * 0.005 – 0.4) / 0.0195;
Serial.print(TempA0, 1);
Serial.print(“,”);
Serial.print(TempA1, 1);
Serial.print(“,”);
Serial.print(TempA2, 1);
Serial.print(“,”);
Serial.print(TempA3, 1);
Serial.print(“,”);
Serial.print(TempA4, 1);
Serial.print(“,”);
Serial.print(TempA5, 1);
Serial.print(“,”);
Serial.print(TempA6, 1);
Serial.print(“,”);
Serial.println(TempA7, 1);
delay(1000);
}
********************************
コメント