温度センサの動作、PID/PWW による制御方法を勉強したので、いよいよ目標だった Arduino を使ったペルチェ素子の温度制御装置を作ります。
メインの材料は、この企画の初回で紹介したハードオフで入手した「温冷コースター」です。
これを使って、2019年にラジオペンチさんが製作された「ペルチェ温度コントローラー」を組み立てます。

ペルチェ温度コントローラーの機能
ラジオペンチさんの「ペルチェ温度コントローラー」の製作記事は、以下のリンクからご覧ください。
この温度コントローラの元々の機能は素晴らしいのですが、さらに、使用する場面に併せてユーザが好きなようにカスタマイズ出来るように設計されています。
初期状態の各モードです。
それぞれの機能はパネルのノブで選択出来て、選んだモードはメモリに記憶されています。
| モード | 機能 |
| マニュアル | セレクトつまみで温度を設定します。設定値は運転中に任意に変更可能 |
| プログラム1 | 10℃→60℃→10℃を10℃ステップ、各ステップ5分間ホールドの繰り返し。1サイクル50分 |
| プログラム2 | 10℃→60℃→10℃を2℃/分の速度で昇温/降温、上下端で5分ホールドの繰り返し。1サイクル60分 |
| プログラム3 | 10℃/60℃を最高速度で繰り返す。各温度で1.5分ホールド。1サイクル3分 |
| プログラム4 | 20℃/50℃を最高速度で繰り返す。各温度60秒ホールド。1サイクル2分 |
また、Arduino には PID 制御用のライブラリがあるのですが、ラジオペンチさんは動作が分かりやすいように、ブログで公開されているスケッチ内に自前の PID 関数を作り、日本語でコメントを付けて理解しやすいように設計されています。
温冷コースターの性能
改造する「温冷コースター」の性能を振り返ります。
・最高温度:50℃
・最低温度:5℃
・消費電圧/電流:5 V / 1.2 A
・冷却ファン動作:冷却時のみファン動作
・サイズ:14 cm X 9 cm 高さ 3.5 cm(保冷面は 6.5 cm の円形)
・外観

制御部の追加
「温冷コースター」の内部はこんな感じで、私の実装技術ではファンとスイッチ横の隙間に制御回路を納めるのはムリです。

そこで、外付けで制御部を作ります。
制御部は、いつもの Fusion でデータを設計して、3D プリンタで出力します。
(下図は、完成品の 3D データです。)

今回は3個の試作品(失敗作)が出来ました。
左上は、高さを「温冷コースター」と同じにしたため、クッション材で製作した保温カバーがはめ込みできなくなってしまいました。
そこで高さを 1 cm 低くしましたが、左下の2個目は内部に組み込んだ Arduino Nano とロータリーエンコーダの場所が干渉しました。
最後の試作品は、OLED 位置の微修正です。

制御部の製作
Arduino Nano などで構成されるデジタル回路の「制御部」と、ペルチェ素子を動作させる高電流が流れる「FET ブリッジ部」を分けて製作します。
制御部の構成部品です。
・温度センサ
・Arduino Nano(互換品)
・OLED (128 X 32)
・LED(橙、緑)
・タクトスイッチ(リセット用)
・ロータリーエンコーダ(押し込みスイッチ付き:Start 用)
(この他に抵抗とコンデンサなど使います。)

本来ならば、組み立て・分解が楽に出来るようコネクタ式にしますが、制御部は Arduino Nano がギリギリ入るサイズにしたので、直接、配線を半田付けしました。

3D プリンタで作った制御部のケースに組み込みます。
3度微調整した結果が出ていますね。全ての部品が余裕で組み込めました。

制御部のみで簡単な動作確認を行います。
USB ケーブルでパソコンにつないで、ラジオペンチさんのスケッチを書き込むと OLED に「RUN Manual」と正常に画面が表示されました。
ロータリースイッチの軸を押し込むと「Start」スイッチが機能して、マニュアル動作の画面が表示できました。
中央の温度表示も、室温(24℃ 位)に近い温度が出ています。
ここまでは、非常に順調に組み立て出来ました。

ケースの加工
制御部が合体できるように「温冷コースター」のケースを加工します。
固定ネジ穴を2つ、配線を通す穴を1つ開けました。(最終的に配線穴は拡大しました。)

制御部の内部には手が入るようなスペースがないので、「温冷コースター」に制御部を固定する時に普通のナットでは、手を入れて固定する事が出来ないです。
そこで、制御部側の固定穴にインサートナットを埋め込むことにしました。
M3 サイズのインサートナットを使用しました。

このインサートナットを、温度調整が出来て木工加工にも使える半田ごてで挿入しました。

木工加工用のヘッドに付け替えて、インサートナットを載せました。
この状態で制御部に押し込みました。

初めてインサートナットを埋め込みましたが、キレイに挿入できました。

FET ブリッジ部の製作
「温冷コースター」に組み込む、高電流を扱う FET ブリッジ部を製作します。
ラジオペンチさんのオリジナルでは、
・P Ch:2SJ334(60V 30A)
・N Ch:2SK2232(60V 25A)
を使っていますが、部品箱に P Ch MOSFET の MTP4835I3(30V 40A)があったので、これで試してみます。

ユニバーサル基板上に、こんな感じで出来ました。
部品点数が少ないので、チャチャっと完成しました。
(一応、電源~FET~グランド間は、太い配線にしています。)

動作確認
出来上がった FET ブリッジ部と完成した制御部を接続して、「温冷コースター」のペルチェ素子とファンにつなぎ、バラック状態で動作確認を行います。
温度センサはペルチェ素子に差し込みました。
USB 5V で5 A の出力が出る USB 電源に接続して電源スイッチを入れます。
動作はどうでしょうか?

写真や動画を撮っていないのですが、モードを Manual にして少し加熱側にノブを回しました。
とりあえず 30℃ の設定にしてみます。
「あれ?温度設定を加熱にしたのに、どんどん温度が下がるぞ!?」
どうやら、組み立てに失敗したみたいです。
一度電源を切って、再度電源オンして確認してみます。
今度は室温が 25℃ で、温度を 27℃にしてみました。
でも、どんどん温度が下がります。
「温度センサが誤動作して、実際には加熱されていて 27℃ なのでは?」と思いましたが、ペルチェ素子部を触ると明らかに冷たくなっています。
やはりノブを右に回すと温度が下がります。
「さてはエンコーダの接続が逆で、右に回すと設定温度が下がるのかな?」
しかし、次に電源を入れて確認しても、制御部の動作は正常で、ノブを右に回すと設定温度は上昇します。
分解して FET ブリッジ部の全ての接続を確認してみます。
異常なしですね。
まさか、ペルチェ素子の配線の赤と黒を間違えてる?
そんな事はありませんでした。
制御部からの配線も確認しますが、FET の制御信号も配線ミスはありません。
これだけ簡単な回路なのに、何度も配線を確認しても誤配線が見つかりません。
あと、考えられるのはオリジナルと違う P Ch MOSFET の MTP4835I3 が良くなかったのでしょうか?
FET の交換
もう、考えられるのは FET の違いしかなかったので、 P Ch MOSFET の MTP4835I3 をオリジナルと同じ 2SJ334 に交換しました。
「今度はどうかな?」
USB から 5 V を給電してノブを右に回します。
・・・同じです。
設定温度を上げるとペルチェ素子の表面温度が、どんどん下がります。
「配線は何度も確認したし、意味が分からん!」
少し時間を置いて、考え直してみます。
基本に帰る
制御部は簡単に完成したし、FET ブリッジ部も FET 4個と抵抗4個だけの簡単な回路なので、すぐに動作すると思っていたペルチェ温度コントローラーですが、最後になって思ったとおりに動作しません。(人生なんてこんな物か・・・)
困ったときには、電源の確認ですね。
先ほどと同じ状態で、電源の電圧を追いかけてみます。
・制御部の 5 V はダイオードで若干の電圧降下されて Arduino Nano に入力されるため、4.5 V 位ですが動作に問題ありません。
・FET ブリッジ部の 5 V、グランドは正常です。
こうなると、回路的に不具合は無さそうなのですが・・・
確認のためにペルチェ素子の配線の赤と黒にマルチメータをつないで、制御部のノブを右に回してみます。
「あれ?FET からの出力はプラスの電圧だぞ!」
それなのに、ペルチェ素子の表面温度はドンドン下がっていきます。
もしかしてと思って電源を落として、次はノブを左に回して設定温度を下げてみます。
すると、FET の出力電圧はマイナスになりました。
この時、ペルチェ素子の表面は暖かくなります。
今までは制御回路の不具合だと思っていたので、右にしかノブを回していなくて気づきませんでしたが、FET ブリッジ部は正常に動作しているようです。
出力電圧を測定した限りでは、「FET ブリッジ部」の出力までの動作は正常じゃないですか。
そして、ペルチェ素子の赤・黒の配線は間違っていません。
犯人は思いがけない所にいました。
犯人はココにいた!
冷静になって、ペルチェ素子の動作を思い出しました。
ペルチェ素子のプラス端子にプラスの電圧をかけると、表面温度は上昇して裏面は温度が低下します。
しかし、すでに組み上がった状態の「温冷コースター」は、「表面」がどちらなのか外観からは分かりません。
下の写真が「温冷コースター」のペルチェ素子と放熱板です。
上のアルミ板がケースから出ている部分で、その下にペルチェ素子が隠れています。

このような部品は、普通なら表面が上で裏面が下に組み立てられていると先入観から思っていましたが、逆だったようです。
下の図のようにペルチェ素子の裏面が上に、表面が放熱器側になっていると考えると、今回の不具合の原因がスッキリと解決します。

本当ならば、放熱板からペルチェ素子を剥がして確認するのが確実なのですが、力を加えると壊れやすいという情報があったので、接着されている状態からの分解は止めておきます。
動作確認のために、FET ブリッジ部に接続するペルチェ素子の配線の赤と黒を入れ替えました。
動作の再確認
仮組状態で電源を入れてみます。
Manual で室温から 5℃ 高い 29℃ に設定します。
「やった!今度はちゃんと温度が上昇したぞ。」
少し時間が経過して、設定温度の 29℃ になると緑色の LED が点灯しました。
念のために一度電源を切って、次はノブを左に回して 20℃ に設定します。
今度は、ちゃんと温度が下がって 20℃ になると緑の LED が点灯します。
他の温度も試してみましたが、正常に動作することが確認できました。
最低温度
Manual モードで設定温度を下げて、どこまで下がるか試してみます。
室温は 25℃、冷却ファンは冷却時は常時回転、保温カバーを付けた状態です。
4.5℃ 設定ですが制御部の表示温度は 7.2℃ で停止しました。

実際の温度は、マルチメータの計測値で 6℃ でした。
消費電流は 0.82 A です。

最高温度
最高温度も測定します。
加熱時は市販品の「温冷コースター」の状態ではファンが停止していたので、この計測時もファンは停止させて計測しました。
設定温度 55℃ ですが、制御部の温度表示は 46.5℃ で停止しました。

実際の温度はマルチメータ表示で 51 ℃、消費電流は 0.61 A でした。

計測結果
最低温度と最高温度を計測しましたが、組み込んだ温度センサがジャンク基板から回収した物なので定数がズレているようです。
最低温度で 1.2℃、最高温度で5℃ 程度の誤差があります。
温度センサの 25℃ と 50℃ での抵抗値などを測定して定数を修正する必要がありそうです。
冷却ファンの制御
今回使用した市販品の「温冷コースター」は、加熱時には冷却ファンが停止して、冷却動作時だけ冷却ファンが動作する設計でした。
さらに、冷却ファンは放熱器に対して「吸い込み」で動作していました。
今まで私は冷却するなら、ファンを放熱器に吹き付けにした方が効率が良いと思っていたのですが、違ったのかな?
とりあえず、このケースに組み込んで色々な試験を行ってから、販売を行っているであろう市販品を信用して、風の向きはこのままで使います。

ペルチェ素子は初めて使うので、冷却ファンの動作はどうするのが正しいのか分からないのですが、少なくとも冷却モードで使うときには、冷却ファンを使用しないとペルチェ素子が過熱して故障するようです。
動作確認時は手動で冷却ファンをオン・オフしましたが面倒です。
そこで、プログラムで冷却ファンを制御できるように機能を追加しておきます。
(常に冷却ファンの動作が必要なら、そのようにプログラムを修正できますから。)
ラジオペンチさんオリジナルの「ペルチェ温度コントローラー」では、Arduino Nano の D4,6,8 端子が余っているので、D8 を使ってみます。

前回の記事では、ファン制御には 2SC2120-Y を使用していましたが、今回は部品箱の在庫の 2SC2235 を使います。
2SC2235 の Ic(コレクタ電流)は、2SC2120 と同じ 800 mA です。

IB もデータシートから 1.5 mA 位と読めます。

スケッチの改修
ラジオペンチさんの「ペルチェ温度コントローラーの製作」のスケッチに、ファン制御を追加してみます。追加するのは3か所です。
「void setup()」内に
pinMode(8, OUTPUT);
「void peltierDrive(float p) { // ペルチェ駆動」内の
「 if (p >= 0) { // 順方向に通電(発熱)」に
digitalWrite(8, LOW);
「 } else { // 逆方向に通電(吸熱)」に
digitalWrite(8, HIGH);
を追加します。
これで、「温冷コースター」と同じ冷却ファンの動作状態になりました。
常に冷却ファンを動作させる場合は、発熱時も HIGH に書き換えるだけで Arduino Nano から冷却ファンが制御できます。
ファン制御機能を追加したおかげで、ペルチェ素子の動作開始をファンの回転が教えてくれるようになりました。
完成と改造予定
ラジオペンチさん設計の「ペルチェ温度コントローラー」を、安価に組み立てることが出来ました。
今回、市販品のペルチェ素子が使用された「温冷コースター」を改造したので、かなり小型なガジェットに仕上がったのではないかと思います。
これで、温度によって部品の特性が変化する状態を、簡単にログに取ることが出来るようになりました。

上から見た状態です。
制御部を追加して横に 3cm 増加しましたが、14 cm X 12 cm 高さ 3.5 cm という小型サイズです。

ただし、現状では簡単な動作確認をしただけの状態で、いくつかの不具合があります。
1 温度計測値のズレ
現状では、ジャンクの温度センサを使用しているために 5℃ で 1.2℃、50℃ で 5℃ の誤差があります。
これを ±1℃ 程度のズレに調整したいです。
2 現在の最低温度は 6℃ 最高温度は 50℃ 位で停止します。これは室温が 25℃ 位の夏の室内の状態なので、冬の事を考えるともう少し高い温度まで加熱して欲しいところです。
使用している電源が USB の +5 V なので、これをもう少し高くして最高温度が上げられないか実験してみたいです。
3 冷却ファンの動作の確認
現在、加熱時には冷却ファンは停止して、冷却動作時だけ冷却ファンを動作する設定にしています。
これは元々の製品の仕様に合わせたのですが、これが正しい動作なのか分かっていません。
ペルチェ素子の加熱時にも冷却ファンを動作させると、最高温度が上昇するのかを確認します。
また、現在の冷却用の風の向きは「吸気」です。
ファンから放熱器に風を当てる「排気」との違いも検証したいですね。
これらの改善が出来たら、温度調整機能のない水晶振動子の周波数変動などに使ってみたいですね。



コメント