아두이노 - 온도 센서 - 릴레이 | Arduino - Temperature Sensor - Relay

이 튜토리얼에서는 아두이노와 DS18B20 온도 센서를 사용하여 릴레이를 제어하는 방법을 소개합니다. 구체적으로, 아두이노는 DS18B20 센서를 사용하여 지속적으로 온도를 측정하도록 프로그래밍됩니다. 그런 다음 다음 규칙에 따라 릴레이를 조정합니다:

릴레이는 그런 다음 팬, 가열 요소, 냉각 요소 또는 기타 것들에 연결될 수 있습니다.

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×DS18B20 Temperature Sensor (WITH Adapter) 쿠팡 | Amazon
1×DS18B20 Temperature Sensor (WITHOUT Adapter) Amazon
1×Relay Amazon
1×DC Power Jack 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

Buy Note: Many DS18B20 sensors available in the market are unreliable. We strongly recommend buying the sensor from the DIYables brand using the link provided above. We tested it, and it worked reliably.

릴레이 및 온도 센서에 관하여

릴레이와 온도 센서(핀배열, 작동 방식, 프로그래밍 방법 등)에 대해 모른다면, 다음 튜토리얼에서 그것들에 대해 배우십시오:

선연결

브레드보드를 포함한 배선도

arduino temperature sensor relay wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

어댑터가 포함된 배선도 (권장)

arduino DS18B20 temperature sensor relay wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

우리는 쉬운 연결을 위해 DS18B20 센서와 함께 제공되는 배선 어댑터를 구매할 것을 제안합니다. 어댑터에는 내장된 저항기가 있어 배선에서 별도의 저항기가 필요 없습니다.

아두이노 코드 - 온도 센서가 릴레이를 작동시킵니다

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // 아두이노 핀이 릴레이의 핀에 연결됨 const int SENSOR_PIN = 2; // 아두이노 핀이 DS18B20 센서의 DATA 핀에 연결됨 const float TEMPERATURE_THRESHOLD = 20; // °C OneWire oneWire(SENSOR_PIN); // oneWire 인스턴스를 설정함 DallasTemperature sensor(&oneWire); // oneWire를 DallasTemperature 라이브러리에 전달함 float temperature; int relay_state; void setup() { Serial.begin(9600); // 시리얼 초기화 pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // 센서 초기화 } void loop() { sensor.requestTemperatures(); // 온도를 가져오라는 명령을 보냄 temperature = sensor.getTempCByIndex(0); // 섭씨 온도를 읽음 if (temperature > TEMPERATURE_THRESHOLD) relay_state = HIGH; // relay_state를 HIGH로 설정 else relay_state = LOW; // relay_state를 LOW로 설정 digitalWrite(RELAY_PIN, relay_state); // 릴레이 제어 // 시리얼로 출력 Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

사용 방법

  • 위 다이어그램과 같이 아두이노, 온도 센서, 릴레이 사이를 배선하세요.
  • 아두이노를 PC에 USB 케이블로 연결하세요.
  • 아두이노 IDE를 열고, 올바른 보드와 포트를 선택하세요.
  • 아두이노 IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
  • “DallasTemperature”을 검색한 다음, Miles Burton이 만든 DallasTemperature 라이브러리를 찾으세요.
  • DallasTemperature 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
Arduino Dallas Temperature library
  • 라이브러리 종속성을 설치하라는 요청을 받게 됩니다.
  • OneWire 라이브러리를 설치하려면 Install All 버튼을 클릭하세요.
Arduino onewire library
  • 위의 코드를 복사하고 아두이노 IDE로 열기
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드
  • 온도 센서 주변 온도 변경
  • 릴레이의 변화를 확인
  • 시리얼 모니터에서 결과 확인, 아래와 같이 보임:
COM6
Send
Temperature: 19.1°C => relay's state: 0 Temperature: 19.3°C => relay's state: 0 Temperature: 19.7°C => relay's state: 0 Temperature: 19.8°C => relay's state: 0 Temperature: 20.1°C => relay's state: 1 Temperature: 20.6°C => relay's state: 1 Temperature: 21.4°C => relay's state: 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

아두이노 코드 - 온도 센서가 허용 오차를 가진 릴레이를 작동시킵니다

작동 중에는 온도가 미리 정해진 임계값을 초과하거나 미만으로 변동할 수 있으며, 이로 인해 릴레이의 상태 변화가 자주 및 갑작스럽게 발생하여 예상치 못한 운영 문제를 일으킬 수 있습니다. 이 문제를 해결하기 위해 임계값에 허용 오차를 포함시킬 수 있습니다. 아래 코드는 이 해결책을 구현하는 방법을 보여줍니다:

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // 릴레이 핀에 연결된 Arduino 핀 const int SENSOR_PIN = 2; // DS18B20 센서의 데이터 핀에 연결된 Arduino 핀 const float TEMPERATURE_THRESHOLD = 20; // °C const float TOLERANCE = 0.5; // °C OneWire oneWire(SENSOR_PIN); // oneWire 인스턴스 설정 DallasTemperature sensor(&oneWire); // oneWire를 DallasTemperature 라이브러리에 전달 float temperature; int relay_state; void setup() { Serial.begin(9600); // 시리얼 초기화 pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // 센서 초기화 } void loop() { sensor.requestTemperatures(); // 온도를 얻기 위해 명령 보냄 temperature = sensor.getTempCByIndex(0); // 온도를 섭씨로 읽음 if (temperature > (TEMPERATURE_THRESHOLD + TOLERANCE)) relay_state = HIGH; // relay_state를 HIGH로 설정 else if (temperature < (TEMPERATURE_THRESHOLD - TOLERANCE)) relay_state = LOW; // relay_state를 LOW로 설정 digitalWrite(RELAY_PIN, relay_state); // 릴레이 제어 // 시리얼로 출력 Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

위에 제시된 코드는 20°C의 임계값과 0.5°C의 허용 오차를 지정합니다. 다음 조건이 적용됩니다:

  • 온도가 19.5°C 이하일 경우 릴레이는 꺼집니다.
  • 온도가 20.5°C를 초과할 경우 릴레이는 켜집니다.
  • 온도가 19.5°C와 20.5°C 사이일 경우 릴레이의 상태는 그대로 유지됩니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!