BASIC4MCU | 질문게시판 | 온도센서와 압력센서가 동시 동작이 안돼요
페이지 정보
작성자 카라멜 작성일2018-06-19 21:53 조회6,556회 댓글0건본문
아두이노 우노 / LM35 (온도센서) / MFSR-R18(압력센서)
를 사용해서 각각 온도와 압력값을 보려고 합니다.
온도센서는 계속 자동으로 측정되도록 하였고, 압력센서는 0 이상의 값이 들어갈때만
그 값이 뜨도록 했는데,
온도센서만 측정되고 있을때나, 온도센서를 주석처리하고 압력센서만 측정할 때는 잘 구동이 되지만,
둘이 동시에 동작될 때는 (온도가 측정되고 있을 때 압력센서를 누르면)
압력센서 값이 0 이 뜨면서 온도센서가 변합니다.
사이에 딜레이를 넣어줘 보기도 하고 나름 이것저것 많이 시도 해보았는데 결과는 항상 같네요...
무엇이 문제일까요? ㅠㅠ
아두이노 회로
int temperature; // 온도센서
int reading;
int lm35Pin = A0;
const int FSR_PIN = A1; // 압력센서
const float VCC = 4.98;
const float R_DIV = 3230.0;
void setup() {
Serial.begin(9600);
}
void loop() {
TEMP();
FSR();
Serial.println("------------------");
delay(300);
}
void TEMP() {
analogReference(INTERNAL);
int yn=0, yn_1=0; // 온도센서 필터코드
unsigned long prev_time=0;
unsigned long current_time = millis();
reading = analogRead(lm35Pin);
temperature = reading / 9.31;
if(current_time - prev_time > 1)
{
yn=0.99*yn_1+0.01*temperature;
prev_time = current_time;
yn_1=yn;
}
Serial.print("Tem : ");
Serial.println(temperature);
}
void FSR() {
int fsrADC = analogRead(FSR_PIN);
float fsrV = fsrADC * VCC / 1023.0;
float fsrR = R_DIV * (VCC / fsrV - 1.0);
float force;
float fsrG = 1.0 / fsrR;
if (fsrR <= 600) {
force = (fsrG - 0.00075) / 0.00000032639;
} else {
force = fsrG / 0.000000642857;
}
if (force>0) { // 압력센서 값이 0 이상이 될 때만 출력될 수 있도록
Serial.print("FSR : ");
Serial.println(int(force/100));
}
}
댓글 0
조회수 6,556등록된 댓글이 없습니다.