히팅 플레이트가 온도를 일정하게 유지하기 위해 아두이노에서 온도센서를 통해 온도를 측정하고 릴레이를 이용하여 히팅플레이트에 전달되는 외부전원을 ON/OFF 해서 온도를 일정하게 유지시켰다.
일정온도 이상 올라가면 릴레이가 히팅플레이트 전원을 차단시키고 내려가면 다시 전원을 연결시킨다.
장점: 저렴한 부품들로 온도제어를 간단하게 할 수 있다.
단점:
1) 릴레이를 사용할 경우 스위칭 될 때 딸깍 하는 소리가 난다. 일정한 온도를 제어하는 과정에서 딸깍딸딱 소리가 주기적으로 발생한다.
2) 릴레이 하나만을 이용하여 제어하는 경우 전류가 한번에 ON/OFF 가 되기때문에 온도변화가 급격히 이루어진다.
개선방안
1) 릴레이를 트렌지스터로 바꾸면 더 빠르고 조용히 전원의 on/off를 제어할 수 있다.
2) 전원연결부에 캐패시터를 이용하여 전류의 흐름이 급격히 차단되지 않도록 만들 수 있다면 온도제어를 조금 더 완만하게 할 수 있다. PID 컨트롤과 같은 피드백을 이용하여 전원 ON//OFF 타이밍을 조절할 수도 있다.
코드
#include <MAX6675.h>
int CS = 10; // CS pin on MAX6675 온도센서 연결핀
int SO = 12; // SO pin of MAX6675
int sCK = 13; // SCK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F) 섭씨로변경
float temperature = 0.0; // Temperature output variable
int pinOut = 9; // 릴레이 컨트롤 제어 신호핀
// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,sCK,units);
// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
void setup() {
Serial.begin(9600);
pinMode(pinOut, OUTPUT);
}
void loop() {
// Read the temp from the MAX6675
temperature = temp.read_temp();
if(temperature < 0) {
// If there is an error with the TC, temperature will be < 0
Serial.print("Thermocouple Error on CS");
Serial.println( temperature );
} else {
Serial.print("Current Temperature: ");
Serial.println( temperature );
// 정상적으로 작동 할 때 온도가 30도 이하면 릴레이에 신호를 주고 30이상이면 신호를 끝다
if(temperature < 50){
digitalWrite(pinOut, HIGH);
} else{
digitalWrite(pinOut, LOW);
}
}
// Wait one second before reading again
delay(1000);
}
참고
https://www.devicemart.co.kr/goods/view?no=13192536
https://www.devicemart.co.kr/goods/view?no=1362017
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pcmola&logNo=221253425869
반응형
'만들기 > 아두이노' 카테고리의 다른 글
[아두이노] at1d 토글 스위치 사용하기 (0) | 2022.07.04 |
---|---|
[아두이노] B10K 가변저항 사용하기 (0) | 2022.07.04 |
arduino nano BLE 33 sense 설치하기 (0) | 2022.06.14 |
트렌지스터, MOSFET 연결 (0) | 2022.05.23 |
아두이노 시리얼 모니터 0 자동 입력 오류 (0) | 2022.04.15 |