개요
캐패시터가 부착된 단상 AC 동기 모터에서 가장 중요한 것은 안전한 정·역회전 전환입니다. 이번 글은 Triac(무접점 전원 스위칭) 과 SPDT 릴레이(기계적 방향 전환) 를 결합해, 소형 산업장비/가전 환경에서도 안정적으로 동작하는 정·역회전 제어 회로를 정리한 완결편입니다.
핵심 부품은 다음과 같습니다.
1) MOC3063M 제로크로스 옵토트라이액 드라이버(※ 동계열 MOC3041SM 대체 가능)
2) BTA16-600 메인 트라이액
3) SRD-24VDC-SL-C (BBM) 릴레이
4) MCU: STM32 (릴레이/트라이액 제어)
이번 글에서는 회로 구성 → 동작 시퀀스 → 부품 선정 포인트 → STM32 펌웨어 까지를 한 번에 정리합니다.
아래는 본 글 이전에 작성된 [1편]과 [2편]의 링크 입니다.
[1편] AC 동기 모터 방향전환 방법
[2편] STM32 MCU로 단상 AC 동기 모터 정역회전 제어
회로구성
본 회로는 “Triac으로 전원을 무접점 제어하고, BBM 릴레이로 방향을 전환하는 구조”로 설계되었으며,
단상 커패시터 모터의 정·역제어를 가장 단순하면서도 안전하게 구현한 현실적 회로입니다.
이전 글에서는 아래와 같이 릴레이만을 이용하여 MCU에서 정·역회전을 제어하는 회로를 구성하였습니다.
해당 회로는 방향 전환 기능에는 충실했지만, 전원 인가·차단은 기계식 접점에 의존하므로
스파크와 노이즈, 접점 수명 등의 한계가 존재했습니다.

이번 글에서는 이러한 문제를 개선하기 위해,
기존 회로에 Triac을 이용한 AC 전원 On/Off 제어부를 추가하였습니다.
이를 통해 전원 제어를 무접점화하여 접점 손상 없이 부드러운 전원 인가가 가능하며,
EMI와 서지를 최소화한 제로크로스 스위칭 회로를 함께 소개합니다.

MCU 제어부
MCU(STM32)는 회로 전체의 중심 제어를 담당합니다.
두 개의 GPIO 포트가 각각 릴레이와 트라이액을 제어하도록 구성되어 있으며,
각 포트에는 게이트 보호 및 풀다운 저항이 포함되어 있습니다.
-
릴레이 제어 신호는 Q1(2N7002E)로 전달되어,
릴레이 코일의 한쪽을 접지로 끌어내리는 방식으로 동작합니다. -
트라이액 제어 신호는 Q2(2N7002E)를 통해 MOC3041SM(제로크로스 옵토커플러)의 LED를 점등시켜
전원 스위칭을 간접적으로 제어합니다.
이와 같이 MCU는 전류를 직접 구동하지 않고,
MOSFET을 이용하여 신호와 전류 경로를 분리한 구조를 취하고 있습니다.
이는 MCU 포트를 보호하면서도 보다 안정적인 제어를 가능하게 합니다.
릴레이 제어부
릴레이는 단상 모터의 회전 방향을 결정하는 핵심 소자입니다.
단상 모터는 보조 권선에 연결된 커패시터의 극성이 바뀜에 따라 회전 방향이 달라집니다.
따라서 본 회로에서는 SPDT(Single Pole Double Throw) 타입 릴레이(RY1) 를 사용하여
커패시터의 연결 방향을 반전시키는 구조로 설계했습니다.
릴레이가 비활성 상태(NC 접점) 일 때는 정회전,
활성 상태(NO 접점) 일 때는 역회전이 됩니다.
릴레이 코일의 구동은 Q1(2N7002E)에 의해 이루어지며,
코일 양단에는 다이오드 D1(1N4148) 을 병렬로 연결해
역기전력에 의한 소자 손상을 방지했습니다.
릴레이의 구동 전압은 DC 24V로,
산업용 표준 전압을 사용하여 안정성과 내구성을 확보했습니다.
트라이액 전원 스위칭부
AC 전원의 On/Off 제어는 MOC3041SM과 BTA16-600C로 구성됩니다.
MOC3041SM은 Zero-Cross Opto Coupler로,
AC 전압이 0V 근처일 때만 트리거 신호를 전달하여
서지 전류와 전자파(EMI) 발생을 최소화합니다.
이 옵토커플러의 출력은 트라이액의 게이트로 연결되어 있으며,
R6(180Ω), R7(180Ω) 저항이 게이트 보호 역할을 수행합니다.
C2(0.1µF)과 120Ω 저항으로 구성된 RC 스너버 회로는
dv/dt에 의한 오동작을 억제하고, 스위칭 시 발생하는 서지를 완화합니다.
AC 입력단에는 MOV-471(R8) 이 병렬로 삽입되어,
낙뢰나 전원 이상에 의한 과도 전압을 흡수합니다.
이로써 전체 회로는 강한 전원 노이즈 환경에서도 안정적으로 동작할 수 있습니다.
옵토커플러 구동회로
MOC3041SM의 LED는 MCU가 직접 구동하지 않고,
Q2(2N7002E) MOSFET을 통해 독립적으로 제어됩니다.
이때 전류는 +24V에서 흘러들어가며, R5(2.2kΩ) 저항이 LED 전류를 약 10mA로 제한합니다.
이 방식은 MCU와 고전압 스위칭 회로 간의 절연을 보장하면서도
LED의 밝기와 응답을 안정적으로 유지시켜 줍니다.
또한 LED1이 병렬로 연결되어 있어,
Triac 제어 신호가 입력될 때 점등되어 시각적으로 상태를 확인할 수 있습니다.
보호 및 안정화 회로
AC 전원단에는 MOV-471과 RC 스너버가 병렬로 구성되어 있습니다.
이 조합은 전원선에 유입되는 외부 서지를 억제하고,
트라이액이 스위칭할 때 발생하는 노이즈를 완화하여 주변 회로로의 간섭을 줄입니다.
릴레이 코일에는 역기전력 보호 다이오드,
MCU 포트에는 게이트 저항과 풀다운 저항이 포함되어 있어,
모든 경로에서 전기적 안정성을 확보했습니다.
STM32 펌웨어 설계
서문
이제 하드웨어 회로가 완성되었으니,
Triac과 SPDT 릴레이를 실제로 제어할 수 있는 펌웨어를 설계할 차례입니다.
Triac은 AC 전원의 On/Off를 무접점으로 제어하고,
릴레이는 전류의 방향을 전환하여 모터의 정회전과 역회전을 결정합니다.
특히 이번 설계에서 사용한 릴레이는 SPDT 타입으로,
“하나의 공통(COM) 단자가 두 개의 접점(NC, NO)을 선택적으로 연결”하는 구조를 가지고 있습니다.
이 구조에서는 릴레이가 Off일 때(NC 연결) 모터는 기본적으로 정회전,
릴레이가 On일 때(NO 연결) 모터는 역회전 상태가 됩니다.
즉, 전원이 인가되지 않은 기본 상태를 “정회전”으로 두고,
MCU가 릴레이를 On시키는 경우에만 “역회전”으로 바뀌는 셈입니다.
이와 같은 설계는 MCU가 한 개의 릴레이만으로 방향 제어를 수행할 수 있게 하며,
전원 인가 직후의 초기 상태를 “정회전 대기”로 유지하기 때문에 매우 직관적입니다.
아래 그림을 기준으로 동작과 펌웨어를 설명하겠습니다.

제어개념
이 시스템은 릴레이(RY1) 와 트라이악(T1) 을 함께 사용하여
단상 AC 동기모터의 전류 방향을 전환함으로써 정회전(시계 방향) 과 역회전(반시계 방향) 을 제어합니다.
Triac (T1) → AC 전원 On/Off 제어 (무접점 스위치)
Relay (RY1, SPDT) → 전류 방향 전환 (정/역회전 전환)
MCU (STM32) → 릴레이 코일(Q1) 및 트라이악 게이트(Q2 → U1)를 순차적으로 제어
하드웨어 동작 원리
이 회로는 SPDT(단극 쌍투형) 릴레이와 트라이악(Triac) 을 조합하여
단상 AC 동기모터의 회전 방향을 제어하도록 설계되어 있습니다.
기본적으로 릴레이(RY1) 는 세 개의 접점을 가집니다.
공통(COM) 단자를 기준으로, 한쪽은 정회전용 접점(NC), 다른 한쪽은 역회전용 접점(NO) 에 연결됩니다.
릴레이가 Off 상태일 때에는 COM과 NC가 연결되어 있으며,
릴레이가 On 상태가 되면 COM이 NO 쪽으로 전환됩니다.
이 구조를 이용하여, 모터의 세 단자 중
Terminal① 을 정회전 시 전원이 공급되는 쪽,
Terminal② 를 역회전 시 전원이 공급되는 쪽,
Terminal③ 을 공통(ACN)으로 설정하였습니다.
따라서 릴레이가 Off 상태일 때는
AC 전원의 Hot(ACL) 라인이 트라이악을 거쳐 Motor Terminal① 로 공급되고,
전류는 Motor① → Motor③(ACN) 방향으로 흐릅니다.
이때 모터는 시계 방향(정회전) 으로 회전하게 됩니다.
반대로 MCU가 릴레이를 On 시키면,
릴레이의 COM 단자가 NO 쪽으로 전환되면서
AC 전압이 이번에는 Motor Terminal② 로 공급됩니다.
이때 전류의 흐름은 Motor② → Motor③(ACN) 방향으로 바뀌며,
모터는 반시계 방향(역회전) 으로 회전하게 됩니다.
이 과정에서 Triac(T1) 은 AC 전원의 흐름을 On/Off하는 역할을 담당합니다.
즉, 릴레이가 어느 방향을 선택하든, Triac이 On되지 않으면 모터에 전류가 흐르지 않습니다.
Triac은 MCU에서 제어하는 광절연 소자(Zero-Cross Opto Coupler, U1)를 통해 구동되며,
이를 통해 MCU가 직접 고전압을 다루지 않고도 안전하게 전원 제어를 수행할 수 있습니다.
정리하자면,
릴레이는 모터의 회전 방향(정/역)을 결정하고,
트라이악은 전원의 공급 여부를 결정하며,
MCU는 두 소자의 순차적 제어를 통해 안전한 전환을 수행합니다.
릴레이가 Off일 때 모터는 정회전,
릴레이가 On일 때는 역회전 상태가 되고,
트라이악은 두 모드 모두에서 전원의 흐름을 제어하는 “무접점 스위치” 역할을 합니다.
펌웨어 제어 로직
이 시스템에서 MCU는 두 가지만 정확히 하면 됩니다. 전원은 Triac이 켜고 끄고, 방향은 SPDT 릴레이가 바꾼다—이 순서를 절대 뒤섞지 않는 겁니다.
기본 상태에서 릴레이는 Off(=COM–NC) 이므로 모터의 Terminal① 쪽이 ACL(Hot)에 연결될 준비가 되어 있습니다. 이때 Triac만 켜 주면 전류는 Motor① → Motor③(ACN) 으로 흐르며 정회전이 시작됩니다. 반대로 역회전을 원하면 반드시 Triac을 꺼서 전류를 완전히 끊고, 300~500ms 정도 잔류자속 대기 후 릴레이를 On(=COM–NO) 으로 전환합니다. 이러면 이번엔 Terminal② 쪽이 ACL에 물리고, 다시 Triac을 켜면 Motor② → Motor③ 방향으로 전류가 흘러 반시계(역회전) 이 됩니다.
Triac 게이트는 MCU→Q2→Zero-cross Opto(U1) 경로로 구동합니다. Zero-cross 타입 Opto를 쓰면 MCU가 LED를 켠 순간, Opto가 다음 제로크로스 시점에 Triac을 자연스럽게 Trigger하므로 서지가 줄고 EMI가 낮아집니다. “연속 구동(On 동안 LED 유지)”만 해도 각 사이클마다 제로크로스에서 알아서 다시 Trigger되기 때문에, 단순 On/Off 제어라면 주기적인 펄스 만들기나 위상제어는 필요 없습니다
정리하면 로직은 다음과 같습니다.
1) 켜기(정회전): Triac Off 확인 → 릴레이 Off 유지(기본 NC) → Triac On
2) 정지: Triac Off → 300~500ms 대기
3) 켜기(역회전): Triac Off → 300~500ms 대기 → 릴레이 On → Triac On
4) 역회전 정지/복귀: Triac Off → 릴레이 Off로 복귀(다시 정회전 대기)
STM32 코드 예
#include “main.h”
#include <stdbool.h>
#define TRIAC_PORT GPIOB
#define TRIAC_PIN GPIO_PIN_0 // PB0
#define RELAY_PORT GPIOB
#define RELAY_PIN GPIO_PIN_1 // PB1 (Low=FWD, High=REV)
typedef enum { MOTOR_STOP=0, MOTOR_FWD, MOTOR_REV } motor_dir_t;
static motor_dir_t g_state = MOTOR_STOP;
static inline void TRIAC_ON(void) { HAL_GPIO_WritePin(TRIAC_PORT, TRIAC_PIN, GPIO_PIN_SET); }
static inline void TRIAC_OFF(void) { HAL_GPIO_WritePin(TRIAC_PORT, TRIAC_PIN, GPIO_PIN_RESET);}
static inline void RELAY_FWD(void) { HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_RESET);} // COM–NC
static inline void RELAY_REV(void) { HAL_GPIO_WritePin(RELAY_PORT, RELAY_PIN, GPIO_PIN_SET); } // COM–NO
static void Motor_StopBlocking(uint32_t settle_ms)
{
TRIAC_OFF(); // 1) 전류 먼저 차단
HAL_Delay(settle_ms); // 2) 자속/접점 정지 대기 (300~500ms 권장)
g_state = MOTOR_STOP;
}
void Motor_ForwardBlocking(void)
{
Motor_StopBlocking(300); // 항상 Stop → FWD
RELAY_FWD(); // 기본 NC 유지(정회전 접점)
HAL_Delay(20); // 릴레이 접점 안정화(접점 바운스 여유)
TRIAC_ON(); // 전원 인가 (Zero-cross Opto면 다음 0V에서 점호)
g_state = MOTOR_FWD;
}
void Motor_ReverseBlocking(void)
{
Motor_StopBlocking(300); // Stop → REV
RELAY_REV(); // 역회전 접점으로 전환
HAL_Delay(20); // 접점 안정화
TRIAC_ON(); // 전원 인가
g_state = MOTOR_REV;
}
위 코드는 HAL_Delay()와 같은 Blocking 코드가 삽입되어 있습니다.
실제 코드에서는 Non Blocking으로 만들어 적용하면 됩니다.
마무리
이번 글에서는 Triac과 SPDT 릴레이를 결합한 단상 AC 동기모터 정·역회전 제어 회로를 설계하고,
그 동작원리와 STM32 기반 펌웨어 로직까지 함께 살펴보았습니다.
핵심은 간단합니다.
Triac이 전원을 제어하고, 릴레이가 방향을 전환한다.
이 두 소자의 역할을 명확히 구분하고, MCU가 정해진 순서대로 구동하도록 제어하면
복잡한 모터 제어 회로 없이도 안정적이고 신뢰성 높은 제어가 가능합니다.
릴레이는 SPDT(Single Pole Double Throw) 구조를 사용하여
기본 접점(NC)을 정회전, 전환 접점(NO)을 역회전 회로로 구성했습니다.
따라서 MCU가 아무 제어 신호를 주지 않은 상태에서도
모터는 항상 “정회전 대기”라는 안전한 초기 상태에 있게 됩니다.
MCU가 릴레이를 On시키면, 접점이 NO 쪽으로 바뀌며
전류 흐름이 반대로 전환되어 모터는 역회전을 하게 됩니다.
이때 Triac은 MCU와 절연된 광커플러(Zero-cross Opto)를 통해 구동되어
AC 전원이 0V 근처일 때 Trigger되므로, 전자파 노이즈가 최소화되고
기계적 접점 손상 없이 부드러운 전환이 가능합니다.