温度を制御する5 温度測定の微調整

前回、ラジオペンチさんの「ペルチェ温度コントローラー」を、ジャンクの「温冷コースター」を改造して組み立てました。
機能確認したところ、とりあえず温めたり冷やしたり出来る事は確認しましたが、温度の誤差が大きいこと(最高温度で+5 ℃ の誤差)と最高・最低温度の差が 40℃ 程度なのが気になっています。

今回は、温度の誤差を全域で ±2℃ 程度までに抑えることを目標にします。
また、最高温度がもう少し上がらないか試してみます。

ペルチェ温度コントローラー

ラジオペンチさんの「ペルチェ温度コントローラー」の製作記事は、以下のリンクからご覧ください。

この温度コントローラは素晴らしい性能で、さらに、使用する場面に併せてユーザが好きなようにカスタマイズ出来るように設計されています。

また、Arduino には PID 制御用のライブラリがあるのですが、ラジオペンチさんは動作が分かりやすいように、ブログで公開されているスケッチ内に自前の PID 関数を作り、日本語でコメントを付けて理解しやすいように設計されています。

温冷コースターの性能

ハードオフで入手した「温冷コースター」の性能です。
入力された USB の +5 V は、回路を通さず直接ペルチェ素子に接続されていて、制御回路を通していない電源ロスのない状態ですが、変化できる温度差は 45℃ でした。

・最高温度:50℃
・最低温度:5℃
・消費電圧/電流:5 V / 1.2 A
・冷却ファン動作:冷却時のみファン動作
・サイズ:14 cm X 9 cm 高さ 3.5 cm(保冷面は 6.5 cm の円形)

ペルチェ温度コントローラの性能

前回、組み上げたペルチェ温度コントローラの温度変化と誤差の関係は、下表のとおりです。
(熱電対を使ったマルチメータの測定温度が正しいと仮定)

設定ペルチェ温度コントローラマルチメータ誤差
最低温度7.2℃6℃+1.2℃
最高温度46.5℃51℃-4.5℃

使用した NTC サーミスタ

ペルチェ素子の最初の記事で、色々な温度センサを調べました。
今回製作したペルチェ温度コントローラは、NTC サーミスタを使用しています。
この温度センサには、4つの重要な値があります。
抵抗規定温度1(通常 25℃)・この温度の抵抗値(通常 10kΩ)、抵抗規定温度2(通常 50℃)と「B定数」です。

今回使用したジャンクの NTC サーミスタは、ノートパソコンのリチウムイオンバッテリ・パックの基板から回収したジャンク品なので、この定数が分かりません。

秋月電子で販売している類似の NTC サーミスタは、「抵抗規定温度1」が 25℃ で 10 kΩ、抵抗規定温度2が 50℃、B 定数が 3435 ですが、この値をラジオペンチさんのペルチェ温度コントローラのスケッチに代入すると、室温(24 ℃)で誤差が 10 ℃ 以上になったので、前回の動作確認では(適当に)値を調整していました。

今回は、最低・最高温度で誤差が少なくなるように調整します。
とりあえず定数を調整して誤差が少なくできるかを確認するだけなので、細かな測定は次回にします。

NTC サーミスタ定数の調整

ラジオペンチさんのペルチェ温度コントローラのスケッチでは、温度測定のために以下の値を使用しています。

Rs:サーミスタと直列に入れる抵抗の値(Ω)、規定値 75000
Vo:サーミスタにかかる電圧(V)、規定値 3.3
R0:抵抗規定温度1(25℃)の抵抗値(Ω)、規定値 10000.0
B:B 定数、規定値 3431.0
T0:抵抗規定温度1の温度(℃)、規定値 25.0

・オリジナルの回路で使用している Rs 用の抵抗の 75 kΩ は、秋月電子の通販でも入手できなかったので、82 kΩ の金属皮膜抵抗(誤差±1%)を使いました。

・Vo、R0 は、規定値どおりで変更なしです。

B 定数など

本来なら、温度と対応した抵抗値や電圧の細かな測定から定数を計算するべきなのでしょうが、定数を変更して温度の誤差を少なくできるか確認してみます。

まず、T0(抵抗規定温度1の温度)を変更した場合です。規定値 25.0 ℃ ですね。
これを増加させると、下図のように元のグラフから平行に増加します。
値を減少させると、平行に減少します。

次に B 定数です。この定数は、「傾き」を表しています。(グラフは例なので、交点の位置は異なります。)
この値を増加させると、高いほうの温度ほど増加率が多くなります。
値を減少させると、高温部で減少率が上がります。

これを踏まえて、2つの定数を調整します。
オリジナルは、T0 = 25.0、B 定数 = 3431.0 でしたが、室温で 10℃ 程ズレていたので(適当に)T0 = 20.0、B 定数 = 2800.0 にしたところ、24℃ でほぼマルチメータと同じ値になりました。

再測定と再設定

現在の設定値で再度、最低温度と最高温度のズレを確認します。
保温カバーを付けた状態で測定すると、最低温度のズレは「+3℃」近くでした。

そこで、T0 = 17.0 まで下げます。その分、全体的にグラフが下がるので、B 定数 = 3100 としました。
最低温度のズレは 0.5℃ 以下になりましたが、最高温度(約 52℃)のズレは -3℃ でした。
B 定数が少ないようです。

B 定数 = 3300、54℃ で -1.5℃
B 定数 = 3400、56℃ で +0.1℃
良い感じですね。

再度、この値で最低温度を計測します。
ペルチェ温度コントローラの表示が 7.8℃ で、マルチメータの表示が 8℃ でした。
調整完了です。

なお、本来ならば NTC サーミスタの 25℃ と 50℃ の抵抗値を計測して B 定数を計算すべきです。
また、マルチメータの温度測定結果は小数点以下の値が出ないため、単純に比較が出来ないことは理解しているつもりです。

最高温度を上げる

現在の制御できる最高温度は 56℃、最低温度は 8℃ です。これは、室温が 26℃ 程度の夏の室内の状態です。
可能なら、もう少し最高温度を上げたいところです。
最高温度を上げるために思いつくことは、今のところ2つです。

・ペルチェ素子への電圧を上げる。
・加熱時に停止している冷却ファンを常時動作にする。

ペルチェ素子に印加している電圧を上げるには、半田ごてで回路の変更の必要があるので、先に冷却ファンを回転させます。

冷却ファンの常時回転

冷却ファンの回転は、プログラムで制御できるようにしているので、

「void peltierDrive(float p) { // ペルチェ駆動」内の
「 if (p >= 0) { // 順方向に通電(発熱)」に
digitalWrite(8, LOW);


digitalWrite(8, HIGH);
に変えるだけです。

早速やってみましょう。
プログラムを変更すると、ペルチェ温度コントローラの電源を入れて「Manual」でスイッチを押すと、加熱モードでも冷却モードでも冷却ファンが回転します。

最高温度はどうでしょうか?
冷却ファンが回っていると、加熱には有利なはずですが・・・
・・・変化なしですね。
56℃ 位で加熱は停止しました。

電圧を上げる

ペルチェ素子への印加電圧を増加させます。
秋月電子で販売しているペルチェ素子の最高動作電圧は 16 V 程度です。
余裕を持たせて半分の 8 V 程度まで上げても余裕ですね。(この、「温冷コースター」に使わられている素子の規格は分かりませんが、汎用品でしょう。)

Arduino Nano の最大電圧も 7 ~ 12 V なので、8 V なら大丈夫です。
現在、電源入力は 5 V 端子に入っていますが、「VIN」に入れ替えます。

7 V から試験してみます。
最高温度は 56℃ 位で変化なしです。

8 V にしてみます。
最高温度は 57℃ でしたが誤差範囲ですね。

よく考えてみれば、使用しているペルチェ素子の仕様もサイズもわからないので、もしかしたら、このペルチェ素子の最高電圧は 16 V より低いのかもしれません。
これならば、危険を冒して商品が保証している本来の電圧を上げる必要はないですね。
USB からの 5 v で使うことにします。

ファンの吸出しと掃き出し

ペルチェ温度コントローラの元となった「温冷コースター」の冷却ファンは、放熱器に対して吸い込むことで冷却していました。
今までは、冷却するためにはファンは吹き出しで、外気を放熱器に当てるものだと思っていましたが、この製品は逆でした。

この機材の冷却ファンは、接着ではなくはめ込み式だったので向きを逆にしてみましたが、今までの最低温度と最高温度から大きな変化はありませんでした。

検証結果

抵抗規定温度1の温度と B 定数を(適当な値に)調整することで、可変できる温度の全域にわたって 1℃ 程度の誤差で温度を表示出来るようになりました。
また、加熱だけではなく冷却も短時間で行えるので、各種実験に使うにはちょうど良い機材に仕上がりました。

ただし、温度範囲には制限があります。
大体、下は 10℃ 位、上は 50℃ 位までしか変化しません。
電源電圧を上げてみましたが、最高温度に変化はありませんでした。
これを拡張するには、ペルチェ素子を2段重ねにすると良いらしいのですが、今後の課題ですね。

温度測定の定数については、現物合わせで行いましたが、次回はちゃんと 25℃ と 50℃ の時の抵抗値と供給される 3.3 V を測定して、計算で B 定数を求めたいですね。

コメント

  1. ファンでペルチェの排熱(加熱)を行っても効果無かったようですね。ペルチェのヒートポンプとしての容量があまり大きくないのでしょうか。と言っても加熱側はヒートポンプと言うより単純な消費電力で加熱されても良さそうなものですが、、

    この回路はHブリッジのFETのゲート駆動をCPUポートから直接行っている関係で、供給電圧をあまり上げることが出来ません。一番の問題は上側のP-chFET(2SJ334)を十分にOFFにすることが出来なくなる点です。
    2SJ334はVGSが-2VあたりでONになり始めるようなので、供給電圧が7V以上あたりでVGSが-2Vを超える(5V-7V=-2V)ので完全なスイッチングが出来なくなり始めると思います。

    ペルチェの素子に印加されている電圧を確認しておいた方が良さそうです。

    • パオさん より:

      ラジオペンチさん
      コメントありがとうございます。
      いい加減な定数のいじり方をしていたので、しっかりと測定してから、そちらのブログに報告しようと思っていました。

      最高温度を上げようと電源電圧を 7 V 以上にすると不安定になるのは、そういった理由だったのですね。(勉強になります。)
      しかし、ペルチェ素子の上下が反対に装着されている「温冷コースター」に、良い感じのペルチェ素子は使っていない気もしますが・・・

      とりあえず、電源電圧を 5 V にして、10℃ ~ 50℃ の範囲の温度制御装置として使ってみます。