2016年2月6日土曜日

ペルチェ素子冷却霧箱の作製 その6

 
水冷を動かしてペルチェ素子がどの程度まで冷えるか試してみます。
先日作ったこれを引っ張り出してきて、つか横浜基地にはこんなのいちいち片付けるようなスペースはありませんのでいやでも目についてやることになります。


とりあえずタンクは鍋で。こないだ鍋が食べたくなってドンキでかったやつ
100均の土鍋(200円)も試したのですが、一発でひびが入ってしまいましたので、雰囲気よりも実用性を撮ることにしました。 ....鍋の説明はどうでもいいですね。


水を入れてポンプを沈め、暴れないようにチューブを取っ手に縛り付けます。レーザの冷却水で部屋に大洪水をもたらしそうになった前科がありますので、この辺りは慎重に。実家ではないのであんまり無茶をやると追い出されるのであります。


水冷台だけでどの程度まで温度が下がるかに興味があります。この凍らせたPETボトルを放り込んで様子を見ることにします。うまくいくと一けたの冷却水を作ることができるかもです。


ついでに余っている氷も放り込みます。


初期はこんな温度です。温度計のずれも大きいですね、同じ環境に置いているのに01と02で4度くらい違う。(笑 


しばらく流しているとそれなりに下がっては来ましたが、一けたというのは難しそうです。PETボトルの漬け方も適当ですしね。


ということで、やってみることにします。
水冷台の上にペルチェ素子を一枚乗せ、その上に温度センサを乗せてまとめて水冷台にセロテープで縛り付けて通電します。


なかなかいい感じに下がっております。冷却台の温度から30度以上下がっております。なかなか。

ですが、ここで参照用の放射温度計を使って温度を測定してみますと、もっと下がっております。放射温度計もこれはこれで放射率の設定とかいろいろと問題があるのですが、それでもまだましな方だと思っております。よって、ここではこれを正確な値と定義して進めます。この値に合わせて温度センサの表示値を補正することにします。


下の方にあるソースの
  temp01 = temp01 + ((4.9 * analogRead(0) - 400) / 19.5 - 2);
  temp02 = temp02 + ((4.9 * analogRead(1) - 400) / 19.5 - 4);
の、各行の最後のところ、-2 と-4 が補正です。単純に値をオフセットしただけ(笑 まあいいでしょう。

再度やってみます。動画で。



いい感じですね。下がるスピードも申し分ないです。何よりも下がったあとが安定しております。
この安定感が欲しかったのです。

通電を切った時の温度上昇のところも動画で見てみましょう。温度変化の様子がよくわかります。


次に、二つのセンサをペルチェ素子に固定して、両者の差がどんな感じが見てみます。


下げるところ。動画で。
それほどひどく差があるというわけではなさそうです。この両者はオフセット値が2度違うだけです。これで二つのセンサの値がそろうのであれば、温度に対するカーブは同じ形をしているということですね。


気休めですが、温度精度の確認をしてみます。
センサの読みでちょうど0度になるあたりに電流値を設定して表面の状態を見てみます。あからさまに氷点下なら表面の結露水は凍り付いているはずですし、明らかに氷点より上なら全部溶けているはずです。
やってみます。



おおおお、結構いい感じじゃないですか?
わかりますかね、液体の水と氷が共存しています。ということで、この表示値は少なくとも0度付近ではそれほど大きくずれてはいないようです。案外使えるかもです。

いい加減な実験ではありますが、今後に期待できる結果だったと思います。



なんのコメントも入れていないわかりにくいスケッチはこちら。
lcdのピン配置は rs/enable が 6/7 データ線が2-5、センサはアナログピンの0-3で、こんかいは0,1を使用しています。

#include <LiquidCrystal.h>

// initialize
LiquidCrystal lcd(6, 7, 2, 3, 4, 5);

// declareation
float temp01;
float temp02;
int tempcount;

void setup()
{
  // define LCD size
  lcd.begin(16, 2);
  // show message
  lcd.print("mirata.na.hibi");
  // move cursor
  lcd.setCursor(4, 1);
  // show second row
  lcd.print("Temp control");

  delay(3000);
  lcd.clear();

}

void loop() {

  // measure temp & display LCD


  temp01 = temp01 + ((4.9 * analogRead(0) - 400) / 19.5 - 2);
  temp02 = temp02 + ((4.9 * analogRead(1) - 400) / 19.5 - 4);
  tempcount = tempcount + 1;

  if (tempcount == 100) {
    lcd.print("01:  ");
    lcd.print(temp01 / 100);
    lcd.print(" deg");
    lcd.setCursor(0, 1);
    lcd.print("02:  ");
    lcd.print(temp02 / 100);
    lcd.print(" deg");
    delay(1000);
    temp01 = 0;
    temp02 = 0;
    lcd.clear();
    tempcount = 0;
  }
}

0 件のコメント:

コメントを投稿