温度センサの追加
アナログ入力ポート0、1、2の3ポートに同じLM35DZを接続しました。
このポートからの温度データを、Serial.Print()関数でモニタすることにします。
スケッチは、今までのスケッチを基に一部を修正して作成します。温度センサの読み取りの処理を追加します。
コネクタの横の抵抗は、マイコン・ボードのアナログ入力ポートの入力インピーダンスが大きいため、温度センサからのリード線が長くなるとノイズが乗ってきます。温度センサが駆動できる範囲で入力インピーダンスを下げてノイズのレベルを下げています。
温度センサからの温度データを受けるのは、tempprt1、2、3に割り当てます。Arduinoのマイコン・ボードのアナログ・ポート番号の0、1、2のポートをそれぞれ割り当てます。
コメント欄
ここでは記入していませんが、コメント欄にはスケッチ名も記載しておくと後で、スケッチのリストを確認するときに、わかりやすくなります。
/* 2009/2/11 アナログの入出力、温度の測定 データのモニタのテスト Arduino IDEのSerial Monitor で測定された温度のデータを確認 */
変数の設定
ポート番号、温度センサから読み取った値や、その値から計算された温度の値を保存する変数などを設定する
int potprt = 5; // Analog入力ポートの番号を設定 半固定抵抗
int tempprt1=0; //
int tempprt2=1; // 温度センサ1入力ポート
int tempprt3=2; //
int val = 0; // 半固定抵抗から読み取ったデーを保存する変数
int val2=0; // LM35DZから読み取ったデータを保存する変数
int t1=0; // 温度の値に変換された値
int t2=0; // 温度の値に変換された値
int t3=0; // 温度の値に変換された値
初期化処理
シリアル通信およびディジタル出力ポートの初期化処理
void setup()
{
Serial.begin(9600); //シリアル・ポートの伝送速度9600bpsに設定シリアル通信の
// 初期化を行う
pinMode(3,OUTPUT); // ソリッドステート・リレーの制御ポート
pinMode(13,OUTPUT);
}
スケッチのメイン処理部
void loop()
{
val = analogRead(potprt); // Anlog入力ポートから半固定抵抗の設定値を読み込む
val2= analogRead(tempprt1); // LM35DZからの温度のデータを読み取る
t1=(4.9*1000/1024)*val2; // 読み取った値をmV単位の値に変換する
t2=(4.9*1000/1024)*analogRead(tempprt2); //
t3=(4.9*1000/1024)*analogRead(tempprt3); //
ここまでで、半固定抵抗値と、各センサの値を読み取り温度に変換する。半固定抵抗から読み取った値と、センサから読み取り温度に変換された値と大小の比較を行う。
比較結果により、ソリッドステート・リレーのオン/オフを行う。
if (val > t1)
{
digitalWrite(3,HIGH); // ソリッドステート・リレーをオン
digitalWrite(13,HIGH);}
else
{ digitalWrite(3,LOW); // ソリッドステート・リレーをオフ
digitalWrite(13,LOW);} //
測定結果をシリアル・プリントで出力する
Serial.print(millis()/1000); //m秒単位の経過時間を秒単位にして表示
Serial.print(" val= "); // わかりやすいように変数の見出しを追加
Serial.print(val); // 半固定抵抗から読み取った値を出力 10進表示の文字列で出力される
Serial.print(" val2= "); // データの区切りのためのスペースを出力
Serial.print(val2); // センサから読み取った値を出力
Serial.print(" temp= "); // 温度の見出し
Serial.print(t1); // mVに変換した値、0.1℃単位の温度表示を転送
Serial.print(" t2= "); //
Serial.print(t2); //
Serial.print(" t3= "); //
Serial.print(t3); //
Serial.print(" Power "); //
Serial.print(digitalRead(4)); // ソリッドステート・リレーのオン/オフの状態を表示
Serial.print(" monitor"); // モニタ・データを示すmonitorの文字列を出力
Serial.println(); // 改行、行送りを出力
delay(1000); // 時間待ちここでは1秒待っている
}
モニタしたデータの記録
Arduino IDEのシリアル・モニタの機能で、マイコン・ボードからデータを受信しデータを確認します。
3本の温度センサを、前回示した蒸し器にセットしてモニタしました。ノートPCでArduino IDEを起動し温度をモニタしました。蒸し器の最上部の温度が96℃以上になるのに、火力の弱いほうのバーナーを使ったために、40分くらいかかりました。全体が温度を96℃以上に15分くらい保って麹米の蒸しを終えました。
モニタ・データの保存
Arduino IDEのシリアル・モニタは、534行以上のデータ表示はオーバフローして消えてしまいます。また、これらのデータを保存する機能が用意されていません。
Arduinoのシリアル・モニタのデータの保存
シリアル・モニタを停止して、マウスでモニタ画面のデータをすべてドラッグして選択します。選択した後、CtrlキーとCキーを押し選択部分をコピーします。
次に、メモ帳などのテキスト・エディタの画面にCtrlキーとVを押して貼り付けます。後は、メモ帳の貼り付けたデータをテキスト・ファイルとして保存します。
シリアル・モニタ起動時にマイコン・ボードがリセットされる
Arduino Duemilanove などのUSBポートからリセットできる機能をもったマイコン・ボードの場合、Arduino IDEのシリアル・モニタを開始するときマイコン・ボードを自動的にリセットします。
また、表示される量が533行までなのでこれ以上のデータをファイルに保存するため、ターミナルソフトでマイコン・ボードからの通信データを受信することを次回考えます。


コメントする