STM32F103C8T6 보드를 기반으로 제작된 자동 고추 건조기 제어 시스템입니다. 지정된 온도(50.0°C)를 유지하기 위해 실시간으로 온도를 측정하고 릴레이를 통해 히터를 제어합니다.
소리 필수
IMG_3801-1.mov
- 자동 온도 조절 로직: 현재 온도를 측정하여 50.0°C를 기준으로 릴레이(히터) ON/OFF 자동 제어.
- 실시간 온도 모니터링: 4-Digit FND(7-Segment)를 활용하여 현재 온도를 소수점 첫째 자리까지 실시간 표출.
- OneWire 프로토콜 통신: DS18B20 센서와 통신하여 노이즈에 강한 디지털 온도 데이터 수집.
- MCU: STM32F103C8T6 (ARM Cortex-M3)
- 온도 센서: DS18B20 (OneWire Interface)
- 디스플레이: 4-Digit 7-Segment (FND) + 74HC595D (Shift Register)
- 액추에이터: 1 Channel 5V/12V Relay Module (히터 전원 제어용)
| 모듈 (Module) | 핀 역할 (Function) | STM32F103C8T6 핀 | 방향 (I/O) | 비고 |
|---|---|---|---|---|
| DS18B20 (온도 센서) | DATA | PA3 | In/Out | OneWire 데이터 통신 라인 |
| FND (74HC595D) | RCLK (Latch) | PB13 | Output | 디스플레이 출력 래치 클럭 |
| FND (74HC595D) | DIO (Data) | PB14 | Output | 디스플레이 직렬 데이터 입력 |
| FND (74HC595D) | SCLK (Shift) | PB15 | Output | 디스플레이 시프트 클럭 |
| Relay Module | IN (제어 신호) | PB5 | Output | 히터 전원 ON/OFF 제어 출력 |
- IDE: STM32CubeIDE (Version 1.19.0)
- Firmware Package: STM32Cube FW_F1 V1.8.6
- Toolchain: GNU ARM Embedded Toolchain
- Libraries: HAL Driver API 사용
- 초기화: 시스템 클럭, GPIO, TIM2 타이머, FND, DS18B20 센서를 초기화합니다.
- 온도 갱신 (1초 주기):
HAL_GetTick()을 사용하여 1초(1000ms)마다 DS18B20 센서에 온도 변환 명령(Ds18b20_ManualConvert())을 내리고 값을 읽어옵니다. - 히터 제어:
- 측정된 온도가 50.0°C 미만일 경우: 릴레이 모듈 제어 핀을 HIGH(또는 LOW)로 설정하여 히터 ON.
- 측정된 온도가 50.0°C 이상일 경우: 릴레이 제어 핀을 반전시켜 히터 OFF.
- 디스플레이 출력:
digit4_temper()함수를 통해 메인 루프 내에서 FND 각 자리의 세그먼트를 순차적으로 점등하여 온도를 표시합니다.
-
이 저장소를 로컬 PC로 클론합니다.
git clone [https://github.com/Ryu-Yoon-Min/hot_pepper_drier.git](https://github.com/Ryu-Yoon-Min/hot_pepper_drier.git)
-
STM32CubeIDE를 실행하고, File > Open Projects from File System...을 통해 클론한 폴더를 Import 합니다.
-
상단 메뉴의 망치 아이콘(Build)을 눌러 프로젝트를 컴파일합니다.
-
ST-Link 등 디버거를 PC와 타겟 보드에 연결합니다.
-
상단 메뉴의 벌레 아이콘(Debug) 또는 재생 아이콘(Run)을 눌러 펌웨어를 보드에 다운로드하고 실행합니다.
[ ] FND 디스플레이 구조 개선 (Flickering 이슈 해결): 현재 FND의 4자리 숫자를 표시할 때 메인 루프에서 Chip-Select 방식으로 딜레이를 주며 동작하여, 온도 측정 로직이 실행되는 1초마다 FND가 깜빡거리는 현상이 있습니다. 이를 타이머 인터럽트(Timer Interrupt) 기반의 백그라운드 스레드 방식으로 변경하여 깜빡임 없이 상시 점등되도록 구조를 개선할 예정입니다.
[ ] 오버슈트(Overshoot) 방지 로직 도입: 현재는 50°C 도달 시 즉시 히터가 꺼지지만, 잔열로 인해 온도가 목표치를 한참 웃도는 현상이 발생합니다. 50°C 부근에서 전원을 미리 차단하거나 PID/Hysteresis 제어를 도입하여 온도를 더 정확하게 유지하도록 개선할 예정입니다
Author: Ryu-Yoon-Min
License: 이 프로젝트는 MIT License를 따릅니다.