[Embedded] Relay 제어(드라이기 제어)

강지원·2025년 3월 25일

STM32 강의

목록 보기
32/33

강의목표

  1. 7segment : 온도표현
  2. 온도센서 : 온도정보
  3. 드라이기(릴레이 이용) : 온도 조절

드라이기로 껐다 켰다하면서 원하는 온도에 맞추기

릴레이(Relay)

릴레이 : GPIO 신호를 주면 회로가 연결됨(스위치같은 동작)

릴레이 회로분석

릴레이의 스위치를 HIGH로 두면 - 기본적으로 LOW로 있다가 HIGH신호에 동작함
릴레이의 스위치를 LOW로 두면 - HIGH에 있다가 LOW신호에 동작

회로 확인

  1. LOW Level Trigger이기 때문에 LOW상태로 바꿔야 함
  2. 5V 전압으로 동작
  3. DC- 는 GND, DC+ 는 5V
  4. IN에 LOW신호를 주면 릴레이 동작
  5. PB5에 LOW신호를 주면 IN에 HIGH가 걸려서 아무 동작 X
  6. PB5에 HIGH신호를 주면 IN이 LOW가 걸리면서 동작하게됨
  7. COM은 기준, 평상시에는 NC-COM이 붙어있음
  8. IN에 LOW신호가 가면 COM-NO가 연결됨

동작 방식

  1. 돼지코에서 선 하나를 COM에 연결
  2. 드라이기의 선 하나를 NO에 연결
  3. 릴레이가 동작하면 COM-NO가 연결되면서 드라이기가 동작함

하드웨어 구성

1. 납땜(5v 필요)

2. 릴레이 회로구성

  1. 돼지코, 콘센트 연결 중간을 잘라서 릴레이(COM,NO) 연결
  2. 돼지코에 드라이기를 연결해서 릴레이가 동작하면 드라이기도 동작할 수 있도록 함

업로드중..

  • 온도센서와 FND 회로도 구성하기

소프트웨어

1. 릴레이 PB5 핀 세팅

2. 드라이기 온도 제어

heaterController.c

#include "heaterController.h"
#include "ds18b20.h"

static uint8_t m_state = 0;

float getCurrentTemper(void) {
    return ds18b20[0].Temperature;
}

void heaterControll(uint8_t onOFF){

	HAL_GPIO_WritePin(PB5_RELAY_ON_OFF_CTRL_GPIO_Port, PB5_RELAY_ON_OFF_CTRL_Pin, onOFF);
	m_state = onOFF;
}

uint8_t getHeaterState(){
	return m_state;
}

heaterController.h

#ifndef SRC_HEATERCONTROLLER_H_
#define SRC_HEATERCONTROLLER_H_
#include "main.h"

enum{
	t_OFF = 0,
	t_ON = 1
};

uint8_t getHeaterState();

float getCurrentTemper(void);
void heaterControll(uint8_t onOFF);


#endif /* SRC_HEATERCONTROLLER_H_ */

main.c

/* Infinite loop */
  /* USER CODE BEGIN WHILE */

    while (1)
    {
    	Ds18b20_ManualConvert();
    	digit4_temper((int)ds18b20[0].Temperature*10,10000); //온도 표시

    	if(getCurrentTemper() > 50 && getHeaterState() == t_ON){
    		heaterControll(t_OFF);
    	}else if(getCurrentTemper() < 45 && getHeaterState() == t_OFF){
    		heaterControll(t_ON);
    	}

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    }

온도가 45도 이하이고 드라이기가 꺼져있으면 드라이기 ON
온도가 50도 이상이고 드라이기가 켜져있으면 드라이기 OFF

0개의 댓글