RS232CからデータをこれまでPC(NEC9801)で計測していたが,
Arduino経由エクセルに切り替えを行うべくArduinoの準備をしたので備忘録として残しておきます.
まずは,配線図
RS232Cの先には熱電対がついており,RC232Cのピンから0-60度の温度データが0-5Vに割り当てられて出力されている.概要はRS232Cからの電圧を読み取り,任意の温度になった時にスイッチを押し,ブザーを鳴らし,その時の温度データを記録するというものです.
Arduino側のピン番号割り当ては,
A0:スイッチの接点
A1:RS232Cからのアナログ電圧
Digital 1:スイッチのON/OFF
Digital 13:ブザーのON/OFF
でOKでした.
以下スケッチです.
unsigned long int milli_time; //variable to hold the time
float voltage0; //variable to hold the voltage form A0
float voltage1; //variable to hold the voltage form A0
float voltage2; //variable to hold the voltage form A0
float voltage3; //variable to hold the voltage form A0
float trigertemp;
int b_pin = 7; // デジタルデータ出力用ピン番号
int state = 0; // ピンより取得したデータ格納用
int buzzer = 13; // ブザーのピン番号
void setup() {
Serial.begin(9600); //
Serial.println("CLEARDATA"); //
Serial.println("LABEL,ComTime,Time,MeasTemp,MaxTemp, MinTemp, Trigger");
//
pinMode(b_pin, INPUT); // ボタンスイッチ用に入力に設定
pinMode(buzzer, OUTPUT); // ブザーを出力に設定
}
void loop() {
milli_time = millis();
trigertemp=0.0;
voltage0 = ((5.0 * analogRead(A0) / 1024.0) * 11.354+7.7273); // measured temp.
voltage1= ((5.0 * analogRead(A0) / 1024.0) * 11.354+7.7273); // Max. Temp.
voltage2 = ((5.0 * analogRead(A0) / 1024.0) * 11.354+7.7273); //Min. Temp.
voltage3= 5.0 * analogRead(A3) / 1024.0; //triger
//以下ブザースイッチ文
state = digitalRead(b_pin); // ピンよりデータ取得
Serial.println(state); // シリアルモニタに出力
//取得データにより分岐
if(state == 1){
tone(buzzer,400,100); // ブザーを鳴らす
}
else{
digitalWrite(buzzer,LOW); // ブザーを消音
}
delay(50);
// 以下出力文
if (voltage3 > 1){
trigertemp=voltage0;
}
else
{
trigertemp=0.0;
}
Serial.print("DATA,TIME,");
Serial.print(milli_time);
Serial.print(",");
Serial.print(voltage0);
Serial.print(",");
Serial.print(voltage1);
Serial.print(",");
Serial.print(voltage2);
Serial.print(",");
Serial.println(trigertemp);
delay(250); //測定間隔
}
///
0 件のコメント:
コメントを投稿