今回は、AC100Vをフルで通電し、水温の立ち上がりがどうなるかを調べた。
後から気がついたんだけど、ヒーターとArduinoを全く独立に通電すれば良かったかも知れない。
でも気がつくのが遅く、Arduinoのスケッチを以下のように最速化して走らせた。
ヒーターは「setup」内で、OUTPUTをHIGHにしてフル通電した。
「loop」には、温度測定とそのデータをシリアルモニタに送信することのみを記述した。
水温が60℃になったら、AC100Vのスイッチを切った。
// setupで、300WのヒーターにSSRを介してAC100Vを通電し、
// 29度の水が60度になるまで、熱しました。
// loopでは、温度を測ってシリアルモニタに送るだけです。
// 対応するPythonコードは"Data_from_Arduino_vF.py"です。
// 2024.07.23 by Kero
// 温度センサDS18B20の設定(以下のサイトからもらいました。感謝)
// https://github.com/matmunk/DS18B20?tab=readme-ov-file
#include <DS18B20.h> // センサからの読み込み値はセ氏温度です
DS18B20 ds18(2); // センサの黄線はArduinoの端子2につなぎます
String ds18C; // センサからの読込は文字列変数「ds18C」に入ります
int SSR = 6; // SSRのアドレス
void setup() {
Serial.begin(9600); // 通信速度セットアップ
pinMode(SSR,OUTPUT);
digitalWrite(SSR, HIGH);
}
void loop() {
while (ds18.selectNext()) {
ds18C = ds18.getTempC();
Serial.println(ds18C);
}
}
【結 果】
1.ヒーターは継続的(continuous)に通電された。loop 内だったら、必ず断続的になる。
2.AC100Vフル通電と、これまでの温度変化グラフ(loop内に入れたAC100V版、及びPWM_Duty比50%版)とを比べてみた。以下の図ご参照。(横軸:時間(分)、縦軸:温度(℃))
左図では、AC100Vフル通電(左側)とPWMのDuty比50%(右側)の温度変化を比べているけど、出だし(左29℃、右25℃)を揃えると、若干PWMの方が遅いけど、ほぼ同等の速度で加熱されているようだ。
一方、右図では、loop内に “digitalWrite(SSR, HIGH)” を入れているので、loopが回るたびに必ず1秒弱ごとに電気の遮断が生じ、加熱速度が遅くなっている。loop内に “analogWrite(・・・)” を入れた場合は、「電気の遮断は起きず、継続的(continuous)にPWM通電される。」と、言われている。
3.loop 内の処理は、温度センサから温度を読み取り、PCへデータ転送するだけだけど、約1.8回/ 秒の速度だった。温度センサが遅いのかArduinoが遅いのか分からないが、これが限界らしい。
4.今回のAC100Vフル通電では、SSRが恐ろしく熱くなり今にも発火しそうだった。ヒートシンクをつけているんだけど、焼け石に水。なので、ティシュに水を含ませ、ヒートシンクのひだの間に挟み入れたり、濡れティシュでシンクの板を挟んだりして、60℃になるまで耐えるように祈った。PWMの場合はこれほどではなかったと思う。
5.現実的な「Arduinoでローストビーフを作る」方法は、電熱器とArduinoを電気的に接続せず、Arduino には温度を測らせ、設定温度未満なら、サーボモータか何かで、電熱器のスイッチを物理的に押して「オン」にし、設定温度以上になったら、そのスイッチを「オフ」にする、ってやり方の方が良いみたい。