BASIC4MCU | 질문게시판 | 코드 해석 문의
페이지 정보
작성자 월랑 작성일2018-12-08 18:21 조회7,908회 댓글0건본문
#define Temp_set A0 // 온도 설정의 위한 아날로그 입력
#define NTC A1 // 온도 측정의 위한 아날로그 입력
#define Ref_Resistor 10000 // NTC에 연결된 직렬 저항값
#define B_Value 4200 // NTC 10KD-5J의 B값
#define NTC_Nomal_Temp 25 // NTC 10KD-5J의 기준 온도값
#define NTC_Nomal_Resistor 10000 // NTC 10KD-5J의 기준 온도에서의 저항값
#define PWM_out 3 // PWM 출력핀 설정
unsigned char fan=0;
void setup(void) {
Serial.begin(9600); // 시리얼포트 설정
pinMode(PWM_out, OUTPUT); // 디지털 6번핀을 출력모드로 설정.
}void loop(void) {
float Value, Temp; unsigned char PWM_data; unsigned int Temp_set_value;
Temp_set_value = analogRead(Temp_set);// 온도설정값 A/D변환
Temp_set_value /= 10; // 온도설정값/10로 하여 0~51까지 조정되게 함.
Value = analogRead(NTC); // NTC값 A/D변환
Value = Ref_Resistor / (1023 / Value - 1); // A/D값은 = x*1023/5로 전압값 구함.// Stein Hart 방정식에 의한 온도값 산출
Temp = Value / NTC_Nomal_Resistor; // (R/Ro)
Temp = log(Temp); // log(R/Ro)
Temp /= B_Value; // 1/B * log(R/Ro)
Temp += 1.0 / (NTC_Nomal_Temp + 273.15); // {1/B * log(R/Ro)} +(1/To), To = 273.15 + NTC_Nomal_Temp
Temp = 1.0 / Temp; // 역수 취함.
Temp -= 273.15; // 화씨에서 섭씨로 바꿈.unsigned char k = Temp; // float형 Temp값을 char형 k값으로 치환
if (k <= Temp_set_value){ PWM_data = 0; // 온도설정값 이하일 때, PWM_out = OFF
fan=0;}
else if (k < (Temp_set_value + 25)) { //온도설정값 이상일 때, PWM_out = k*10,
if(fan==0){
analogWrite(PWM_out, 200);
delay(200);
fan=1;
}
k -= Temp_set_value;
PWM_data = k * 10;
}
else PWM_data = 255; // 온도설정값+25℃의 값 이상일 때, PWM_out = 255(최대값)
analogWrite(PWM_out, PWM_data); // PWM_out에 PWM_data만큼의 아날로그 신호 출력
unsigned char Duty_rate = (PWM_data*100)/255; // Duty rate 계산// A/D 변환된 NTC저항값 출력
Serial.print("NTC Value : "); Serial.print(Value, 3); Serial.print("[Ω]" ); Serial.print("\t");// 현재 온도 출력
Serial.print("Temperature : "); Serial.print(Temp); Serial.print("[℃]"); Serial.print("\t");// 온도 설정값 출력
Serial.print("Temp_Setting_Value : "); Serial.print(Temp_set_value); Serial.print("[℃]");
Serial.print("\t");// PWM의 Duty rate값 출력
Serial.print("Duty_rate : "); Serial.print(Duty_rate); Serial.println("[%]");delay(500);
}
--------------------------------------------------------------
빨간 부분이 들어가므로써 하는 미치는 영향을 알고싶어요
부분적으로 해석좀 부탁드립니다.
댓글 0
조회수 7,908등록된 댓글이 없습니다.