温度センサの追加
  アナログ入力ポート0、1、2の3ポートに同じLM35DZを接続しました。
 このポートからの温度データを、Serial.Print()関数でモニタすることにします。
 スケッチは、今までのスケッチを基に一部を修正して作成します。温度センサの読み取りの処理を追加します。

 

adr310010.jpg

 コネクタの横の抵抗は、マイコン・ボードのアナログ入力ポートの入力インピーダンスが大きいため、温度センサからのリード線が長くなるとノイズが乗ってきます。温度センサが駆動できる範囲で入力インピーダンスを下げてノイズのレベルを下げています。


adr310020.jpg温度センサの接続ポート
  温度センサからの温度データを受けるのは、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行までなのでこれ以上のデータをファイルに保存するため、ターミナルソフトでマイコン・ボードからの通信データを受信することを次回考えます。

<神崎康宏>


トラックバック(0)

このブログ記事を参照しているブログ一覧: 連載(31)Arduinoで何でも制御 いろんなArduinoがある(13)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/2674

コメントする

カテゴリ

このブログ記事について

このページは、kanzakiが2009年3月30日 11:39に書いたブログ記事です。

ひとつ前のブログ記事は「連載(30)Arduinoで何でも制御 いろんなArduinoがある(12)」です。

次のブログ記事は「連載(11)縫って作るコンピュータ LilyPad Arduino 」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.