人気ブログランキング |

タグ:プロジェクトLC ( 40 ) タグの人気記事

ホットステージの改造 (自宅でできる液晶観察20)

ホットステージが、そのままだと台が熱くなることが分かったので宙に浮かすことにした。
といっても、ステージの上側に出ているネジをつかって、アルミ板を渡して、そのアルミ板につけた足で地面に接するようにしただけである。
ホットステージの改造 (自宅でできる液晶観察20)_c0164709_139775.jpg

この状態で昇温テストはしていないが、まあ、台に直接置くよりは下への断熱はよいと思う。この状態で、POHについている4倍の対物でダミーで置いた試料を眺めてみた。観察はできるけれど、ステージと対物全面の距離が思ったよりない。正面がわから見ても
ホットステージの改造 (自宅でできる液晶観察20)_c0164709_1394836.jpg

という感じ。ステージの温度が上がると、対物レンズもちょっと熱くなりそうでいやだ。
10倍より高倍率は金属用の長作動距離を用意してあるので、問題ないのだけれど、4~5倍は、とりあえず、これしか在庫がない。というわけで、5倍のレンズの適当なの(10倍以上と合わせようとおもったら、鏡筒長が210のシリーズがよさそうだ)をオークションで探す必要が出てきてしまった。
by zam20f2 | 2010-05-16 13:14 | 科学系 | Comments(0)

温度調節(7) (自宅でできる液晶観察19)

実際のON-OFF調整では、これまでのシミュレーションのように、ある温度以上でOF、未満でONというような動作ではなく、昇温時には目標温度を少し超えるまで、ON動作が続き、降温時には目標温度より少し低い温度までOFF動作が続くような動作が行われているらしい。
こんな動作をすると、目標温度を挟んでの温度のふらつきは大きくなるわけで、温度調整からは望ましい気はしない。のだけれど、実用的な理由により、このような動作の必要があった。
かつて、ON-OFF制御は機械的にスイッチをON-OFFするしか方法が無かった。そのために一般的な方法は電磁リレーで、これは、小さな電力で動く電磁石を使って、大きな電力を制御するスイッチをON-OFFする手法である。ところで、スイッチで大電流の回線をON-OFFするとその時に火花が飛んでスイッチが損傷を受ける。損傷は積み重なっていき、最後にはスイッチとしてまともに機能しなくなる。オムロンの温度調節器についている電磁リレーの寿命は大体10万回である。10万回というと大きそうな数字だけれど、例えば、10秒に1回ON-OFFをするなら、1分6回、1時間360回、1日で8640回になるので、2週間を待たずに寿命となってしまう。

さて、エクセルファイル、もしくはプログラムで、ヒステリシスを取り入れようとすると、その前の温度をチェックするだけでは駄目で、現時点で温度が上昇しているのか、下降しているのかの情報が必要になる。そのためには、一つ前だけでなく、二つ前の温度の情報も必要である。プログラムとしては、先ほどのON-OFFとは次の部分が異なっている。

If Cells(i - st - Range("b21"), 4) <= Range("b2") - Range("b23") / 2 Then
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b17") + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15")) / Range("b19")
この部分は、ヒステリシス幅(B23)(を全体の幅としているので片側ならその半分なので2で割っている)を含めても、目標より温度が低いという条件なら、ヒーターをつけろという条件文+実行文になっている。
Else
If Cells(i - st - Range("b21"), 4) < Range("b2") + Range("b23") / 2 And Cells(i - st - Range("b21"), 4) - Cells(i - st - 1 - Range("b21"), 4) > 0 Then
この条件文は、目標温度+ヒステリシス幅より温度が低く、かつ、二つ前の温度より一つ前の温度が高い(昇温している)という条件になっている。
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b17") + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15")) / Range("b19")
上の条件の場合にはヒーターをつけている。
Else
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15") / Range("b19")
それ以外はヒーターをつけずに放熱のみ起こしている。
End If
End If

折角プログラムがあるのだから、ヒステリシス幅をつけたときの動作を見てみよう。まずはヒステリシス幅が0の場合である。

温度調節(7) (自宅でできる液晶観察19)_c0164709_12565072.gif

拡大してみると3点周期での繰り返しの動きとなっている。
温度調節(7) (自宅でできる液晶観察19)_c0164709_12573036.gif


ヒステリシスが入ると、ヒステリシスに応じてON-OFF周期が延びていく。まずは温度幅2度
温度調節(7) (自宅でできる液晶観察19)_c0164709_12575118.gif

続いて4度
温度調節(7) (自宅でできる液晶観察19)_c0164709_1258887.gif

次は8を飛ばして16度
温度調節(7) (自宅でできる液晶観察19)_c0164709_12582641.gif


さらに、遅れを16程入れると
温度調節(7) (自宅でできる液晶観察19)_c0164709_12585328.gif


となり、さらに周期が延びる。

by zam20f2 | 2010-05-16 12:59 | 科学系 | Comments(0)

温度調節(6) (自宅でできる液晶観察18)

少し前に十進ベーシックのプログラムを出したけれど、考えてみれば、エクセルにはベーシック言語がついている。
わざわざ別のソフトをインストールしなくても、そのままエクセルのベーシックを動かせば、プログラムでの計算ができるのである。というわけで、ON-OFFのエクセルベーシック版も作ってみた。以下、アルファベット部分がプログラムで、日本語部分は(本来のプログラムにはない)注釈部分である。

st = Range("b5")
等号の後のRangeは、括弧内で指定したセルの値を扱うための命令。実際のエクセルのセルではB5に計算の時系列の最初の値を入れるようにしている。この式でstという変数に時系列の最初の値が代入される。
vend = Range("b6")
上の式と同じで、vendという変数に時系列の最後の点の値を代入する。
Cells(1, 4) = Range("b1")
左側のCells(1,4)は1行4列目のセル(D1になる)の値で、この式はD1にB1の値を代入するコマンドになる。B1には初期温度を入れるようにしているので、この式が実行されるとD1に初期温度が入る。この式はRange("d1") = Range("b1")と同じ意味なのだけれど、Rangeの式だと後で、セルの場所をプログラムで変えていく時に対応しにくかったので、RangeではなくCellsというコマンドを使っており、それと合わせるためにCellsにしている。
Cells(1, 3) = st
セルC1に初期時系列の値を入れている
For i = st + 1 To vend
ここからnext i迄をiという変数がst+1からvendまで繰り返す
Cells(i - st + 1, 3) = i
C列のi - st + 1行に、時系列の数字を入れる
If i < 0 Then
上の文は条件文といい、if以下が正しければThen以下を実行し、正しくないなら、Else以下に飛ぶ。ここではiという変数がマイナスである場合に式は正しくなる。
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b3") - Cells(i - st, 4)) * Range("b15") / Range("b19")
セルB3は室温、B15は放熱係数、B19は熱容量である。この式は、D列のi - st + 1番目の温度は一つ上のi - st番目の温度に室温と一つ上の炉の温度の差に放熱係数を掛けた放熱量を熱容量で割った分だけ変化するので、それを加算した温度になるという式になっている。
Else
上のifからElseまでで、時系列の値がマイナスの間は、ヒーターをOFFにして、初期温度と周囲の温度の差のみでホットステージの温度が変化するプロセスを記述している。
これ以降は、時系列がプラスになり、ヒーターに温度がかかるようになりうる状況の場合である。

If Cells(i - st - Range("b21"), 4) < Range("b2") Then
B21は遅れ係数を入れるセルで、この式は、遅れ係数も勘案した、前のセルの温度が目標温度よりも低い場合に、正しい文となり、次の文が実行される。
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b17") + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15")) / Range("b19")
この文にはヒーターパワーのB17が入っており、先ほどの放熱のみの式と違って、発熱部分も入っている。つまり、目標温度より低かったら、ヒーターをONにすることになっている。
Else
Cells(i - st + 1, 4) = Cells(i - st, 4) + (Range("b3") - Cells(i - st - 1, 4)) * Range("b15") / Range("b19")
目標温度より高い場合にはヒーターは焚かずに放熱にまかせる指定になる。
End If
End If
Next i

プログラムは以上である。(実は、もうすこしややこしくなったプログラムをテキスト上で書き戻しているので、ミスが含まれているかもしれない。)なお、実際には、上のプログラムは

Sub ONOF()

End Sub

という部分に挟まれている。
このプログラムを動かすと、当たり前であるけれども、パラメータが同じなら。エクセルシートの計算式を書き込んだ場合と同じ結果が得られる。違いは、ファイルサイズで、エクセルシートに式を書き込むのに比べて遙かに小さなサイズになる。

by zam20f2 | 2010-05-15 21:17 | 科学系 | Comments(0)

写真撮影(2) (自宅でできる液晶観察 17)

写真撮影ではでに出たリング状態のハローの原因を調べるべく、カメラにレンズを装着しての撮影を行った。
写真撮影(2) (自宅でできる液晶観察 17)_c0164709_13265239.jpg


室内灯を消すと
by zam20f2 | 2010-05-09 13:37 | 科学系 | Comments(0)

温度調節(5) (自宅でできる液晶観察16)

少し前のステージの写真で、熱電対が試料の場所ではなく、ヒーターの脇にあるのに疑問を感じた方もいるかもしれない。
確かに、ある温度にしたいのは試料であって、ヒーター付近ではない。そう考えると、温度センサーは試料のそばにあるのが筋であるような気にもなる。
しかし、熱電対をステージのそばに置いてしまうと、大きな問題が生じる。というのは、ヒーターから熱電対が離れると、熱電対がある温度となったときには、ヒーター付近はより高い温度になっており、熱電対が目標温度を示した時点で電源を切っても、ヒーター付近の余熱でさらに温度が上がってしまうのである。
それをシミュレートするために、エクセルファイルに変更を加えた。
今までは
F103=IF(H103>=0,1,0)
E104=E103+$B$5*(F103*$B$15-G103*$B$11)/$B$9
と、一つ前の温度を使って次のステップでヒーターを焚くかを決めていたのを
E104=E103+$B$5*(OFFSET(F103,-$B$6,0)*$B$15-G103*$B$11)/$B$9
とOFFSETというコマンドを加えた。これは、F103から、$B$6の数字文だけ上のセルを参照するというコマンドで、$B$6に入れた数の文だけ遡ったセルを参考にする。
まず、値が0で遅れがない場合は
温度調節(5) (自宅でできる液晶観察16)_c0164709_1704563.gif

なのだけれど、5セル分の遅れがあると
温度調節(5) (自宅でできる液晶観察16)_c0164709_17166.gif

と、温度が振動するようになる。遅れを10にすると、振動の振幅は
温度調節(5) (自宅でできる液晶観察16)_c0164709_1714749.gif

と拡がり、20でさらに
温度調節(5) (自宅でできる液晶観察16)_c0164709_172284.gif

となっていく。
というわけで、温度センサーは、なるべくヒーターの側において遅れを少なくした方が、凸凹を少なくできる。

この話を最初にしったのは、大昔にロゲルギストの第三物理の散歩道の防寒夜話を読んだときだった。該当する部分を下に引用しておく。

A 寒い地方-東北だったかな-で、ハダカで寝るというところああるんだってね。もちろん、ごろ寝じゃない。ハダカでふとんにもぐりこむという意味だ。その方がねまきを着るよりあたたかいという…。

中略

C さっき、誰かが枕の話をしていたけれど、日本では大体ふとんというものは肩口をたたいておさえて寝るものだろう。ところで、寝がえりでも打って肩口にすきまができたとする。ネマキを着ていると、肩が冷えるまでに時間がかかるから、なかなか気がつかない。やっと気がついて直しても、ネマキだの、その附近のふとんだのがみな冷えきっているから、温度を回復するのに時間がかかる。ハダカで寝ていれば、肩口がすけばすぐ肩が冷えてきがつくからチョイと直す。温度の回復が速い。要するに応答時間の問題だと思うんだ。


中略

C 電気炉の自動温度調整と同じことなんだ。試料を炉のなかに入れて一定温度に保とうとする。温度計にリレー(継電器)を接続して、温度が上がりすぎたら壁のヒーターのスイッチを切り、下がりすぎたら入れるようにするのだが、この温度計を試料のそばに置くと失敗する。というのは、こうすると、ヒーターの電流が切れてから大分たってはじめて温度計の示度が下がり、リレーがはたらき、ヒーターに電流が流れはじめる。ところがそのときには炉の外側の方は冷えてしまっているからなかなかあたたまらない。試料の温度はまだ下がり続けるというわけだ。
 うまくやろうと思ったら、ヒーターのすぐ内側に温度計をおいて、それでリレーを働かせるのだ。
後略

by zam20f2 | 2010-05-08 17:06 | 科学系 | Comments(0)

温度調整(4) (自宅でできる液晶観察15)

ヒーターパワーに続いて、ステージの熱容量によって挙動がどのように変化するかをシミュレートしてみよう。
まずステージの熱容量を低くしてみる。ヒーターパワーは160でパワー係数が2に固定している。
温度調整(4) (自宅でできる液晶観察15)_c0164709_13515399.gif

これは熱容量を32にしたもの。立ち上がりが右上がりになるのは、たまたまである。というのは、熱容量を33にしてみると、
温度調整(4) (自宅でできる液晶観察15)_c0164709_13524242.gif

とフラットになるし、34にすると
温度調整(4) (自宅でできる液晶観察15)_c0164709_1353241.gif

と逆傾向にさえなる。
ただし、いずれも、温度の上下幅が結構大きい。上下幅は熱容量を増やすと減っていき、熱容量を80にすると
温度調整(4) (自宅でできる液晶観察15)_c0164709_13535591.gif

となる。また、温度が上がるまでの時間が、より長くなる。さらに熱容量を160にすると
温度調整(4) (自宅でできる液晶観察15)_c0164709_13542917.gif

となる。以下、熱容量320,480,1600を示すけれど、何れも横軸は相対的にずれている(けど幅は同じにしている)のにご注意いただきたい

温度調整(4) (自宅でできる液晶観察15)_c0164709_1356378.gif

熱容量320

温度調整(4) (自宅でできる液晶観察15)_c0164709_13561415.gif

熱容量480

温度調整(4) (自宅でできる液晶観察15)_c0164709_13562476.gif

熱容量1600
である。熱容量をかえると、目標温度に到達するまでの時間は長くなるけれども、最大到達温度は変化しない。それは、単に放熱量とのバランスでのみ定まっているのである。
この結果は、システムの応答性を上げたかったら熱容量を小さく、遅くても良いから安定性を高くしたかったら大きくするべきであることを示している。
最初にステージを銅で作ろうとしたのは、銅の方が同じ容積のものなら熱容量が大きくなるから。
銅の比熱は0.38J/gKで比重は8.89、アルミは0.88J/gKと0.27。同じ体積あたりなら、これらを掛け粟得た比率になるわけで、それを計算すると銅の方が熱容量は1.4倍程度になる。
気分的にはもっと違うだろうと思っていたけれど、アルミの比熱が妙に大きい気がする。何でだろう……………

by zam20f2 | 2010-05-05 14:09 | 科学系 | Comments(0)

温度調整(3) (自宅でできる液晶観察14)

B列のパラメータを変えるだけで、どのように挙動が変わるかがグラフとしてすぐに確認できるので、少しばかり遊んでみることにしよう。
ただし、これからお見せする図は、いくつかの典型的なパターンでしかない。できたら、身近にある使えるコンピュータで自らやってみるとよい。この先のPIDも含めて、ややこしい数学なしに、おおよその挙動をつかめるのだから、こんなにすてきで楽しいことはない。そのために、この後もエクセルファイルのセルの式は示していくつもりでいる。

まず、放熱係数と熱容量は変えずに、ヒーターパワーのみ変えていく。ヒーターパワー係数が1以下の場合は、目標温度以下で温度上昇は止まり、そのままの温度を維持する。
温度調整(3) (自宅でできる液晶観察14)_c0164709_21274136.gif

係数が1の場合には長い時間の後には、目標温度で一定になる。ただし、これは、セルのif文で温度が目標に等しい場合もヒーターがONになるように等号をつけているためである。
温度調整(3) (自宅でできる液晶観察14)_c0164709_21282889.gif

係数がわずかでも1を越えると、目標温度以上に上昇する瞬間が出現し、その次のステップでヒーターがOFFになり、温度が低下する。その後ゆっくりと目標温度に復帰し、また急激に低下する。
温度調整(3) (自宅でできる液晶観察14)_c0164709_2129579.gif

係数が1から離れるに従い、変化の周期は短くなるとともに、変化の中心が目標温度に近づいていく。
温度調整(3) (自宅でできる液晶観察14)_c0164709_21343587.gif

ヒーターパワー81

温度調整(3) (自宅でできる液晶観察14)_c0164709_21344828.gif

ヒーターパワー90

温度調整(3) (自宅でできる液晶観察14)_c0164709_2135011.gif

ヒーターパワー90で横軸を替えた

温度調整(3) (自宅でできる液晶観察14)_c0164709_21351020.gif

ヒーターパワー120

グラフを眺めると、変化の周期は短周期と長周期の2つがでている場合がある。これは、多分、時間間隔と温度変化率の関係で生じているのだろうと思う。
係数が2になると、放熱速度と加わる熱量が等しくなるので、変化は目標温度をはさんでほぼ対象に生じるようになる。
温度調整(3) (自宅でできる液晶観察14)_c0164709_21352041.gif

ヒーターパワー160で係数2ここが、50%出力で目標温度に到達する値。
そして、係数が2を越えると、変化の中心が目標温度より上に移っていく。ただし、変化の周期は、降温プロセスの時間で制限されるので、係数を大きくするとmむしろ長くなる。
温度調整(3) (自宅でできる液晶観察14)_c0164709_21364610.gif

ヒーターパワー240

温度調整(3) (自宅でできる液晶観察14)_c0164709_21375291.gif

ヒーターパワー360

温度調整(3) (自宅でできる液晶観察14)_c0164709_2138216.gif

ヒーターパワー480
というわけで、ON-OFF制御の場合には、ヒーターが5割の出力の場合に目標値をはさんでほぼ対称に温度が調整されることが分かった。

by zam20f2 | 2010-05-04 21:41 | 科学系 | Comments(0)

温度調整(2) 自宅でできる液晶観察(13)

ON-OFF調整の動作をエクセルでシミュレーションしたけれど、もちろん、適当なプログラム言語を使っても同じ事ができる。

それを示すため、十進basicを使ってプログラムを書いてみた。何で十進basicかというと、知りあいの勤めていた高校の課題研究で生徒さんが使っていたのがこれだったから。無料で入手できるbasicだし、日本語の簡易マニュアルがあるので、Scilabなんかよりは高校生さんあたりだと手が出しやすいだろうと思う。
ON-OFFのプログラムは

LET StageT=20
LET RoomT=20
LET TargT=100
LET HPower=160
LET HNKeisu=1
LET NetuYoryo=160
OPEN #1:NAME "C:/TempD.txt"
FOR i=1 TO 1000
IF StageT <= TargT THEN
LET StageT=StageT+(HPower-(StageT-RoomT)*HNKeisu)/NetuYoryo
ELSE
LET StageT=StageT-(StageT-RoomT)*HNKeisu/NetuYoryo
END IF
PRINT #1: StageT
NEXT i
CLOSE #1
END

な感じ。
最初のLETの部分は変数の定義。StageTがステージの温度。RoomTが室温で一定。TargTが目標温度でこれも一定。HPowerがヒーターパワー、HNKeisuが放熱係数、NetuYoryoが熱容量である。
次のOPEN文は、結果を書き込むためのファイルを作る命令。以下、PRINT文とCLOSE文はファイルに書き込むのとファイルを閉じる操作である。
というわけでプログラム本体はFOR i=からNEXT i までの間である。やっていることは
IF StageT <= TargT THEN
でステージの温度が目標温度以下であるかを調べて、以下なら
LET StageT=StageT+(HPower-(StageT-RoomT)*HNKeisu)/NetuYoryo
で、新しいステージ温度として、現在のステージ温度に加熱要素と放熱要素を加える。
もし、ステージ温度が目標温度より高いなら
LET StageT=StageT-(StageT-RoomT)*HNKeisu/NetuYoryo
で、新しいステージ温度として、現在のステージ温度から放熱要素文のみを引く。
そして、これを1000回繰り返すというものだる。

エクセルファイルと比べると、少しばかり取っつきにくいかもしれない。また、結果をグラフにするのには、できたファイルをエクセルなどで読ませてグラフ化する必要がある。でも、その一方で、ファイルサイズは遙かに小さいし、また、エクセルだとゲロゲロになるような、面妖な処理も比較的楽に実装できる。

コンピュータは、ソフトも含めて道具である。ので、目的のためにとりあえずは使えて、少ない手間で結果が得られるものを使えば良いのだろうと思う。ただ、そのためには、ヒマなときに、いろんなことを試して、それぞれのソフトの得意範囲などを実感しておかないといけなかったりするのだけれど。

ところで、エクセルでは、繰り返しの計算はしていないように見えるかもしれないけれど、
E3のセルの式を等号を使って書き表すと
E3=E2+$B$5*(F2*$B$15-G2*$B$11)/$B$9
と一つ前の代のセルの値に足す格好になっており、上の
LET StageT=StageT+(HPower-(StageT-RoomT)*HNKeisu)/NetuYoryo
とまったくパラレルになっていることが分かる。もうすこしパラレル度を上げたかったら、配列を使って十進basicのプログラムを書き直して
LET StageT(i)=StageT(i-1)+(HPower-Tdiff(i-1)*HNKeisu)/NetuYoryo
と、明示的に一つ前の世代を使って計算する形になる。プログラムの全体は一番下につけてあるけれど、エクセルの場合は、世代をiという文字で表す代わりに
LET StageT(2)=StageT(1)+(HPower-Tdiff(1)*HNKeisu)/NetuYoryo
LET StageT(3)=StageT(2)+(HPower-Tdiff(2)*HNKeisu)/NetuYoryo
という具合に、具体的な数が入って、繰り返しでなく、下へ下へと続いていっている訳である。エクセルは、上から下へと計算を行っていく。この流れが、プログラムのステップを定めているのである(それ故に、上下を逆にするとまったく動かなくなる)

エクセルというと、表やグラフを作るためのソフトと思っている人もいるようだけれど、それは、完全な誤解である。

配列版ON-OFFの十進basicプログラム
DIM StageT(1001)
DIM TDiff(1001)
LET StageT(1)=20
LET TDiff(1)=0
LET RoomT=20
LET TargT=100
LET HPower=160
LET HNKeisu=1
LET NetuYoryo=160
OPEN #1:NAME "C:/TempMD.txt"
FOR i=2 TO 1001
IF StageT(i-1) <= TargT THEN
LET StageT(i)=StageT(i-1)+(HPower-Tdiff(i-1)*HNKeisu)/NetuYoryo
ELSE
LET StageT(i)=StageT(i-1)-Tdiff(i-1)*HNKeisu/NetuYoryo
END IF
LET Tdiff(i)=StageT(i)-RoomT
PRINT #1: StageT(i)
NEXT i
CLOSE #1
END

※DIMは配列の定義命令である

by zam20f2 | 2010-05-04 07:38 | 科学系 | Comments(0)

写真撮影 (自宅でできる液晶観察 12)

顕微鏡観察の基本は目視である。のだけれど、見た物を人に伝えるのには写真撮影が必要になる。いや、別に写真撮影をしなくてもスケッチという手もあるのだけれど、液晶はグラデーション系なので、なかなかスケッチという感じにもならない。
さて、写真撮影には幾つかの手法があるのだけれど、とりあえず、手持ちの装置で一番安直にできそうな方法を試してみた。
写真撮影 (自宅でできる液晶観察 12)_c0164709_2162680.jpg

接写台にカメラを取り付けて、直下に顕微鏡を置き、間を黒のテープで見苦しく巻いただけである。接眼レンズも写真撮影用レンズも入れていない。
とりあえず、ミクロワールドサービスさんで買ってきた珪藻の写真を撮ってみた。というか、より正確にいうと、カメラと顕微鏡の位置を調整するのに、珪藻プレパラートは結構役に立った。目立つ珪藻を目視で十字線の中央に置き、それが画面の中心になるように、顕微鏡とカメラの位置を調整する。
写真撮影 (自宅でできる液晶観察 12)_c0164709_21112090.jpg

左側が暗くなっているのは照明を絞っているせいで、照明を絞らないと上の写真でも右に少し出ているハローが
写真撮影 (自宅でできる液晶観察 12)_c0164709_21123130.jpg

となってしまう。
どうしてこんなになっちゃうかは、改めて説明する予定だけれど、とにかく改良が必要である。
by zam20f2 | 2010-05-03 21:14 | 科学系 | Comments(0)

温度調整(1) (自宅でできる液晶観察11)

PID制御というのは結構難しい話である。
ので、まず、それより簡単なあたりから話を始めることにしよう。
ある目標温度に温度を設定する一番単純な手法はON-OFF制御である。今の場合は(原理的には)ホットステージの温度が目標より低い場合にはヒーターをONにして、目標を超えたらOFFにする。
ON-OFF制御の説明はこれで十分ではあるけれども、どのような動作をするかは実際にシミュレーションをして試してみないことには実感をともなって理解できないと思う。という訳で、エクセルファイルを用意した。
と記すと「おいおいエクセルかよ」とブーイングが来そうである。確かに、エクセルなんか使うよりはScilabあたりを使うのが筋なのは分かっている。でも、普通の高校生さんが使っているPCにエクセルが入っていることはあってもScilabは入っていないように思う。もちろんScilabはフリーソフトだから、それのインストールから話を始めてもいいのだけれど、とりあえず、手元に使える道具があるなら、まずはそれを使ってできることをやるのは悪くはないと思う。また、エクセルのグラフは、パラメータを変えると連動して変化するので、パラメータの役割を感覚的に眺めるのには都合がよい。
エクセルファイルのスクリーンショットを図に示す。
温度調整(1) (自宅でできる液晶観察11)_c0164709_18245110.gif

左側がパラメータ欄、D列が時系列、E列が温度。F列がヒーターパワーで、1がヒーターON、0がヒーターOFFである。そして、G列が室温との温度差、H列が目標値との温度差である。
一方、パラメータは、室温、初期温度、目標温度、ステップ係数、熱容量、放熱係数、ヒーターパワーである。ステップ係数は、時系列1コマあたりの間隔を調整するための係数である。
放熱係数は、ホットステージと室温の温度差がΔTの時の単位時間の放熱量である。実際の放熱量はΔTに比例ではなく、もっと複雑な関数になっているはずだけれど、ここではΔTに比例するとして、その比例係数として与えている。
ヒーターパワーを入れると、ヒーターパワー係数が計算される。ヒーターパワー係数は、ヒーターが連続ONの時に、ちょうど目的温度で釣り合う場合が1である。従って、パワー係数が1未満の場合には、ヒーターをつけっぱなしでも目的温度には到達できない。ヒーターパワー係数のセルは数値ではなく
=B15/((B3-B1)*B11)
という計算式になっている。
熱容量係数は、ホットステージの熱容量のヒーターパワーに対する割合で、1の場合に、熱容量がヒーターパワーと等しくなる。というわけで、熱容量係数のセルには
=B9/B15
という式が入っている。

このワークシートでは-101から0まではヒータ出力が0で1からヒーター出力が出る設定になっている。このため、-101から0までは温度が一定だが、これは、単に初期温度と室温が等しいためで、たとえば、初期温度を100℃にすると
温度調整(1) (自宅でできる液晶観察11)_c0164709_18254845.gif

と、ステージの温度が単調に下がるようになる。
さて、計算の論理だけれど、温度のセル、たとえば、上から2番目のE3には
=E2+$B$5*(F2*$B$15-G2*$B$11)/$B$9
という計算式が入っている。最初のE2は一つ上のセルの温度である。そして、+以降の式が、一つ上との温度差を与える部分である。$B$5はステップ係数である。単純にB5としていないのは、ここをB5とした、
=E2+B5*
という式だと、E3のセルの内容をE4にコピーするとセルの式が
=E3+B6*
となってしまい、ステップ係数がかからなくなるためである。$マークは絶対参照といって、セルをコピーしたり、行を挿入してもその場所を保持したい場合に用いる。今の場合B$5と記して、B列の方は絶対参照をしなくてもよいのだけれど、発作的に列を挿入した場合でも問題が生じないように、列の方にも絶対参照記号をつけている。さて、計算式に戻ろう
=E2+$B$5*(F2*$B$15-G2*$B$11)/$B$9
+$B$5*は、一つ前の状態でヒーター出力をどうするかを定めるF2にヒーターパワーを掛けた項と一つ前の温度差に放熱係数を掛けた項になっている。前者がホットステージに加わる熱量で、後者が減少する熱量である。この括弧の中で熱量の収支が求められ、それを熱容量で割ったものが温度変化分となる。
ヒーター出力は時系列が-1までは0だが、0以降は式で与えられる。ちなみに、時系列0のF103の内容は
=IF(H102>=0,1,0)
である。ここで、IFという演算子が入っているが、これは、括弧内の最初の部分の式が正しかったら、コンマの次の値を、正しくなかったら最後の値を出力する命令である。今の場合、H102は一つ前の目標と現在温度の差であり、これがプラスだと現在温度は目標以下、マイナスだと現在温度は目標以上となる。初期温度が20℃で室温が20℃ならH102は80なので、H102は0以上であり、F103の値は1となる。一方、G103は0なので、それらより計算されるE104は1℃の上昇となる。続いて、F104は1だが、G104も0ではない値となり、放熱が生じるので、E105の値はE104より1℃より小さくなり、21.99375度となっている。
この後、F列は1のままで順調に温度が上がるけれど、
温度調整(1) (自宅でできる液晶観察11)_c0164709_1827893.gif

E214で温度が目標を超えるために、F214は0となり、それを用いたE215では放熱のみが寄与するので、温度が低下する。すると、温度が100℃未満に低下するために、再び昇温する。
シートを見れば分かるように、ON、OFFは繰り返し起こるために、温度は上下動を繰り返す。グラフに描くと
温度調整(1) (自宅でできる液晶観察11)_c0164709_18274788.gif

それを見やすくするために、グラフのスケールを替えてみた。
温度調整(1) (自宅でできる液晶観察11)_c0164709_1828121.gif


さて、ヒーターパワーや熱容量が変わるとどうなるのか、それは次回に。

by zam20f2 | 2010-05-02 18:28 | 科学系 | Comments(0)