로그인회원가입

[카테고리:] 스마트홈

홈 오토메이션 관련 DIY

  • [DIY] ESP32-C3와 MicroPython으로 만드는 스마트 USB 선풍기 컨트롤러 (터치·리모컨·웹·예약)

    [DIY] ESP32-C3와 MicroPython으로 만드는 스마트 USB 선풍기 컨트롤러 (터치·리모컨·웹·예약)

    일반 USB 선풍기를 단순히 켜고 끄는 것을 넘어, 터치 제어, IR 리모컨, 웹 UI 실시간 모니터링, 예약 스케줄 기능까지 한 번에 제어할 수 있는 스마트 컨트롤러 모듈을 제작했습니다.

    MicroPython의 비동기 처리(uasyncio)와 웹소켓(WebSocket) 통신을 활용하여 반응성을 극대화하고, 동작 로그는 외부 데이터베이스(PHP/MySQL)로 연동되도록 구성했습니다.

    🛠️ 주요 스펙 및 기능 정의

    • 메인 MCU: ESP32-C3 SuperMini (MicroPython 기반)
    • 전원 제어: N-Channel MOSFET (GPIO 제어 기반 USB VBUS 라인 switching)
    • 제어 방식 (4-Way Multi-Control):
      1. 터치 버튼: GPIO 1번의 capacitive touch 센싱을 활용한 즉각적인 제어
      2. IR 리모컨: 37.9kHz 적외선 수신 모듈을 통한 IR 명령 처리
      3. 웹 Dashboard: 비동기 웹서버 + WebSocket 기반의 실시간 상태 확인 및 Web UI 제어
      4. 스케줄링: Cron 형태의 예약 스케줄러를 통한 자동 On/Off
    • 데이터 연동: iFrame 기반의 Web UI 구조 및 외부 PHP/MySQL 서버로의 동작 상태 로그 전송

    🔌 하드웨어 구성 및 회로 포인트

    USB 선풍기의 전원을 안전하게 제어하기 위해 MOSFET 스위칭 회로를 기본 구조로 잡았습니다.

    • MOSFET Switch (GPIO 0): Low-power MCU 신호로 USB 선풍기의 5V 전류를 손실 없이 제어하기 위해 Gate 드라이브 회로를 구성했습니다.
    • Touch Sensor (GPIO 1): 물리 버튼 없이 깔끔한 외관을 위해 내부 Touch 센서를 활용했습니다.
    • IR 수신부 (GPIO 2): 리모컨 신호 인터럽트 처리 및 디코딩.

    💻 소프트웨어 아키텍처 및 핵심 코드

    웹 인터페이스의 실시간 반응성과 물리 입력(터치/리모컨) 간의 상태 동기화를 위해 MicroPython의 uasyncio를 기반으로 설계했습니다.

    1. 비동기 이벤트 루프 및 상태 동기화

    터치, IR 수신, 웹소켓 신호, 예약 스케줄러가 하나의 state_manager를 바라보도록 하여, 어느 매체에서 켜고 끄든 모든 인터페이스(웹 UI, LED 등)에 즉시 동일한 상태가 반영되도록 처리했습니다.

    2. WebSocket 기반 실시간 웹 UI

    HTTP 폴링(Polling) 방식의 지연을 없애기 위해 웹소켓을 직접 구축했습니다.

    • 웹 페이지 접속 시 현재 상태 동기화
    • 웹 버튼 클릭 시 즉시 MOSFET 제어 및 다른 웹 클라이언트로 상태 패킷 브로드캐스트
    • iFrame 구조를 통해 기존 메인 웹 대시보드나 홈 서버 페이지에 유연하게 삽입 가능

    3. 외부 PHP / MySQL 데이터 로깅

    상태 변경(On/Off) 이벤트가 발생할 때마다 비동기 HTTP POST 요청으로 외부 PHP API를 호출하여 데이터베이스에 동작 이력을 남깁니다.

    Python

    🌟 제작 및 시운전 결과

    1. 터치 반응성: 반응 지연 없이 즉각적으로 On/Off 토글이 작동합니다.
    2. 리모컨 연동: 가정용 남는 IR 리모컨의 특정 키를 맵핑하여 멀리서도 손쉽게 제어 가능합니다.
    3. 웹 제어 & 모니터링: 스마트폰이나 PC 웹 브라우저에서 웹소켓을 통해 실시간으로 선풍기 상태가 갱신되고 제어됩니다.
    4. 예약 동작: 밤에 일정 시간 후 꺼지도록 스케줄을 걸어두는 용도로 유용하게 활용할 수 있습니다.

    💡 마치며

    ESP32-C3의 작은 폼팩터와 MicroPython의 강력한 라이브러리 ecosystem 덕분에 단순한 USB 선풍기를 완성도 높은 IoT 스마트 가전으로 업그레이드할 수 있었습니다.

  • [MicroPython] ESP32 기반 스마트 홈 온습도 통합 모니터링 디스플레이 제작기 (ST7789 + uasyncio)

    [MicroPython] ESP32 기반 스마트 홈 온습도 통합 모니터링 디스플레이 제작기 (ST7789 + uasyncio)

    집안 여러 공간(거실, 안방, 아이방, 베란다 등)에 배치된 센서 노드들의 온습도 데이터를 매번 개별 앱이나 웹으로 확인하는 것이 번거로워, 한눈에 모든 방의 상태를 파악할 수 있는 전용 모니터링 디스플레이를 제작했습니다.

    이번 프로젝트는 ESP32와 ST7789 TFT LCD, 그리고 uasyncio 비동기 처리를 결합하여 화면이 끊김 없이 부드럽게 갱신되도록 설계했습니다.

    🛠️ 주요 핵심 기능

    1. 멀티 노드 비동기 데이터 수집 (uasyncio)
      • 총 8~9개 센서 노드(거실, 주방, 안방, 서브룸, 드레스룸, 베란다, 야외 등)의 HTTP API를 non-blocking(비동기) 방식으로 순회 조회합니다.
      • 특정 노드의 응답이 늦어지더라도 시계나 전체 UI가 멈추지 않고 매끄럽게 동작합니다.
    2. 동적 스케일링 기반 UI 가시성 극대화
      • 측정된 집안 전체의 최저/최고 온습도 범위를 실시간 계산하여, 수치가 텍스트 박스 형태의 상대적인 가로 위치(x좌표)로 표현되도록 구현했습니다.
      • 단순 숫자가 아닌, 각 방의 상대적인 온도/습도 위치를 직관적으로 파악할 수 있습니다.
    3. 스마트 전원 관리 및 인터렉티브 경고 시스템
      • 터치 센서를 통한 화면 켜기/끄기 및 일정 시간 후 자동 절전(Auto Sleep) 모드를 지원합니다.
      • 자동 종료 10초 전 또는 터치 버튼을 1초 이상 길게 누르고 있을 때 우측 상단에 OFF 배지가 빨간색 반전으로 깜빡이며 종료 예고 신호를 줍니다.
    4. BLK 핀 부재 극복: 디스플레이 직접 전원 제어 방식 적용
      • 사용한 ST7789 LCD 모듈은 별도의 백라이트(BLK) 핀이 없는 타입입니다.
      • 단순히 백라이트만 끄는 방식이 불가능하므로, PowerManager를 통해 절전 모드 진입 시 액정 전원(VCC)을 직접 차단하거나 Sleep 명령을 제어하여 절전 모드 시 소비 전력을 최소화했습니다.

    📐 시스템 구조 및 핀 맵 (Pinout)

    • MCU: ESP32 / ESP32-S3 계열
    • Display: ST7789 2.4″ / 2.0″ IPS TFT LCD (240×320)
    • Touch Sensor: TTP223 정전식 터치 모듈
    ST7789 PinESP32 GPIO비고
    SCKGPIO 4SPI1 Clock
    MOSIGPIO 6SPI1 Master Out
    RESETGPIO 3Reset
    DCGPIO 2Data/Command
    CSGPIO 7Chip Select
    BLK(부재)GPIO 10Backlight PWM / On-Off
    TOUCHGPIO 1터치 입력 (Active High)

    💡 핵심 코드 설계 파트

    1. 비동기 HTTP 센서 데이터 수집기

    asyncio.open_connection을 사용하여 네트워크 지연으로 인한 UI 병목 현상을 방지했습니다.

    Python

    2. 동적 수치 계산 및 위치 맵핑

    현재 수집된 모든 방의 최저/최고 온습도를 기준 삼아, 해당 수치가 차지하는 영역 내 x좌표 위치를 계산하여 텍스트를 출력합니다.

    Python

    3. 터치 버튼 롱프레스 & 자동 종료 깜빡임 알림

    10초 전 자동 종료 알림과 1초 이상 터치 버튼 누름 동작을 실시간으로 감지하여 화면 상단에 OFF 배지를 깜빡이게 처리했습니다.

    Python

    🎬 완성된 동작 모습 및 소감

    • 실시간 시계 & 상태 배지: 매초 정확하게 시간을 업데이트하며, 각 방의 데이터 수집 시 노드 이름이 회색으로 강조된 후 수집이 완료되면 원복됩니다.
    • 통신 장애 대응: 특정 센서의 IP 통신이 차단되거나 수신에 실패하더라도 전체 시스템이 멈추지 않고 다음 노드로 넘어가 안전하게 작동합니다.
    • 메모리 관리: MicroPython 특성상 소켓 통신 반복 시 힙 메모리 파편화가 발생할 수 있어, 각 통신 직후 gc.collect()를 명시적으로 실행해 주어 한 달 이상 연속 동작에도 안정성을 확보했습니다.
  • 스마트홈 온습도 모니터링 New UI & 장치

    스마트홈 온습도 모니터링 New UI & 장치

    방 7곳, 베란다, 외부기온 2 소스

  • IRLZ44N, LR7843, SI2302, AO3400 부품 실제 측정값

    IRLZ44N, LR7843, SI2302, AO3400 부품 실제 측정값

    AO3400 

    사진 속 테스터기 화면은 N-채널 인핸스먼트형 MOSFET(N-E-MOS)의 측정 결과입니다. 각 측정 항목이 의미하는 바는 다음과 같습니다.

    JPG

    1. 측정 화면의 항목별 설명

    • N-E-MOS: N-Channel Enhancement MOSFET (도체 채널이 기본적으로 열려있지 않고, 게이트 전압을 가해야 전류가 흐르는 N채널 모스펫) JPG
    • 핀 번호 (1: Source, 2: Drain, 3: Gate): 테스터기 소켓의 1, 2, 3번에 각각 S, D, G 단자가 연결되어 있음을 보여줍니다. JPG
    • Vt​=968mV (VGS(th)​, 문턱 전압): 드레인과 소스 사이에 전류가 흐르기 시작하는 게이트-소스 최소 전압입니다 (약 0.97V). $3.3\text{V}$나 5V 로직(ESP32, 아두이노 등)으로 직접 제어하기 매우 수월한 값입니다. JPG
    • 680mV (VF​, 내장 바디 다이오드 순방향 전압): D(드레인)와 S(소스) 사이에 역방향으로 들어있는 체내(Body) 다이오드의 순방향 전압 강하입니다. JPG
    • Cg​=260pF (Ciss​, 게이트 커패시턴스): 게이트 충전에 필요한 용량입니다. 이 값이 작을수록 MCU GPIO 핀에 부담을 주지 않고 빠른 속도(PWM)로 스위칭할 수 있습니다. JPG
    • RDS​=0.2Ω (RDS(on)​, 도통 저항): 게이트가 열렸을 때 드레인-소스 간의 내부 저항입니다. 테스트기 자체의 미세 전압/전류로 측정한 값이라 데이터시트의 공식 스펙보다는 높게 측정되는 편입니다. JPG

    2. 요청하신 부품 4종 주요 데이터시트 스펙 비교

    MCU(3.3V/5V) 제어 편의성, 전력 용량, 패키지 형태로 구분한 비교표입니다.

    부품명패키지최대 전압 (VDS​)최대 전류 (ID​)문턱 전압 (VGS(th)​)게이트 용량 (Ciss​)도통 저항 (RDS(on)​ @ VGS​)
    IRLZ44NTO-220 (삽입형)55V47A1.0V∼2.0V≈1700pF22mΩ @ 10V / 28mΩ @ 5V
    LR7843TO-252 (DPAK SMD)30V161A (실효 30∼50A)1.0V∼2.3V≈4300pF3.3mΩ @ 10V / 4.5mΩ @ 4.5V
    SI2302SOT-23 (소형 SMD)20V2.8∼3A0.5V∼1.0V≈240pF60mΩ @ 4.5V / 115mΩ @ 2.5V
    AO3400SOT-23 (소형 SMD)30V5.7∼5.8A0.65V∼1.45V≈630pF28mΩ @ 10V / 33mΩ @ 4.5V / 52mΩ @ 2.5V

    3. 용도별 선별 팁

    1. 대전류 스위칭 (히터, 큰 DC 모터 등)
      • LR7843: $R_{DS(on)}$이 3.3mΩ 수준으로 매우 낮아 고전류 구동 시 발열이 매우 적습니다.
      • IRLZ44N: 브레드보드나 만능기판 실험용/고전압(50V 부근) 구동 시 가장 쓰기 편한 딥(Through-hole) 타입입니다.
    2. 소형 PCB 회로 / MCU 제어 스위칭 (팬, LED, 중소형 소자)
      • AO3400: SOT-23 소형 칩 크기 대비 전용 수용 전류(5.8A)가 높고 2.5V 로직 전압에서도 완전 도통이 가능해, 3.3V MCU(ESP32 등) 제어용 소형 스위치로 가장 만능에 가깝습니다. (측정값 Cg​=260pF 및 $V_t=0.96\text{V}$를 볼 때 사진 속 제품은 AO3400 또는 SI2302 계열일 가능성이 큽니다). JPG
      • SI2302: Ci​ss 용량이 낮아 고속 PWM 제어에 부담이 적지만, 전류 용량은 AO3400보다 한 단계 낮습니다.

    IRLZ44N

    새로 올려주신 측정 화면을 보면 확실히 이전 소형 칩(AO3400/SI2302)과 차이가 큽니다.

    • 문턱 전압 ($V_t = 2.23\text{V}$): 이전 $0.96\text{V}$에 비해 확연히 높습니다. 데이터시트상 IRLZ44N의 $V_{GS(th)}$ 기준($1.0\text{V} \sim 2.0\text{V}$)보다 살짝 높게 측정되었거나 테스터기 오차 범위 상단에 걸쳐 있습니다.
    • 게이트 용량 ($C_g = 2.13\text{nF} = 2130\text{pF}$): 이전 소형 MOSFET($260\text{pF}$)보다 8배 이상 큽니다. 데이터시트의 입력 용량($C_{iss} \approx 1700\text{pF}$)과 매우 유사한 수치입니다.

    이 측정값이 실무 회로에 의미하는 점

    1. 3.3V MCU(ESP32 등) 직결 구동 시 주의
      • 문턱 전압($V_t$)이 $2.23\text{V}$이면 $3.3\text{V}$ Signal을 넣었을 때 MOSFET이 살짝 열리기 시작하는 단계일 뿐, 완전 도통(Full On) 상태가 되지 못합니다.
      • 이 상태에서 전류를 많이 흘리면 $R_{DS}$가 매우 높아져 발열이 극심해지거나 원하는 출력이 안 나올 수 있습니다. 최소 $5\text{V}$ 이상(권장 $10\text{V}$)으로 게이트를 쳐줘야 제 성능($R_{DS(on)} = 22\sim 28\text{m}\Omega$)이 나옵니다.
    2. PWM 스위칭 시 주의
      • $C_g$가 $2.13\text{nF}$ 수준으로 크기 때문에, MCU GPIO 핀에서 곧바로 high/low 스위칭을 시키면 게이트를 충·방전하느라 순간 전류가 크게 찍힙니다.
      • 높은 주파수의 PWM 제어를 하려면 MCU 직결보다는 트랜지스터(NPN/PNP) 조합 또는 MOSFET 드라이버 IC를 중간에 두고 $10\text{V}$ 정도 전압으로 세게 쳐주는 것이 훨씬 안전하고 효율적입니다.

    LR7843

    문턱 전압(Vt​) 부분에서 데이터시트 명세 대비 상단 경계에 걸쳐 있거나 높게 찍힌 것이 맞습니다. 반대로 게이트 용량(Cg​)은 데이터시트 값보다 작게 측정되었습니다.

    JPG+ 1

    데이터시트 수치와 하나씩 비교해 보면 다음과 같습니다.

    1. 문턱 전압 (Vt​=2.19V)

    • 데이터시트 스펙 (VGS(th)​): Min 1.0V ~ Max 2.3V (Typ 1.8V 수준)
    • 측정 결과: $2.19\text{V}$로 상한선(2.3V)에 거의 바짝 붙어 있습니다. JPG
    • 의미: 데이터시트 규격 범위 내이긴 하지만 기대치(약 1.5∼1.8V)보다 높은 편입니다. 따라서 3.3V MCU(ESP32 등)로 직접 게이트를 치면 채널이 충분히 열리지 않아 온저항(RDS​)이 높아지고 발열이 심해질 수 있습니다. 최소 5V 이상, 안정적으로는 10V 이상의 게이트 전압을 줘야 제 성능(3.3mΩ)을 냅니다.

    2. 게이트 용량 (Cg​=1.16nF=1160pF)

    • 데이터시트 스펙 (Ciss​): 약 4300pF (4.3nF)
    • 측정 결과: $1.16\text{nF}$로 데이터시트 기준치보다 오히려 훨씬 낮게 측정되었습니다. JPG
    • 이유: T7 같은 간이 LCR/소자 테스터는 VDS​=0V 근처의 특정 고정 주파수/신호 전압에서 게이트 용량을 대략 측정합니다. 데이터시트의 Ciss​(Ciss​=Cgs​+Cgd​)는 드레인-소스 전압 조건(VDS​=15V 등)에 따라 크게 달라지므로 테스터기의 정전용량 측정이 실제 데이터시트 Ciss​ 규격보다 작게 나오는 현상은 정상입니다.

    3. 결론 및 실무 팁

    • LR7843은 초저저항(3.3mΩ) 대전류용 모스펫이지만, 방금 측정된 $V_t(2.19\text{V})$를 고려하면 3.3V 로직 직결용으로는 위험하며 5V 이상의 게이트 드라이버/트랜지스터 구동 회로와 함께 사용하는 것이 안전합니다. JPG

    SI2302

    측정치(Vt​=914mV, Cg​=225pF)는 SI2302 데이터시트 사양서 규격과 정확히 잘 일치합니다.

    JPG

    데이터시트 스펙과 측정값을 항목별로 비교해보면 다음과 같습니다.

    1. 문턱 전압 (Vt​=914mV=0.914V)

    • 데이터시트 스펙 (VGS(th)​): 0.65V∼1.2V (Typical 약 0.9V)
    • 측정 결과: $0.914\text{V}$로 데이터시트의 대표값(Typical) 수치에 거의 정확히 일치합니다. JPG
    • 실무적 의미: 1V 미만으로 낮기 때문에 3.3V MCU(ESP32, STM32 등) GPIO 신호로 직접 게이트를 쳐도 완전히 도통(Full On)시킬 수 있습니다. 드레인-소스 온저항(RDS(on)​)이 최소화되는 조건에 잘 도달합니다.

    2. 게이트 용량 (Cg​=225pF)

    • 데이터시트 스펙 (Ciss​): 약 200pF∼250pF (Typical 240pF)
    • 측정 결과: $225\text{pF}$로 데이터시트 공표치 범위 안에 완벽하게 들어옵니다. JPG
    • 실무적 의미: 게이트 용량이 매우 작아 MCU GPIO 핀에 가해지는 충·방전 전류 부담이 적습니다. 따라서 별도의 트랜지스터 드라이버 회로 없이 MCU 핀 직결로 고속 PWM 제어(팬 속도 조절, LED 밝기 제어 등)를 수행하기에 아주 적합합니다.

    3. 총평 및 비교 Summary

    앞서 측정하신 대형/중형 모스펫(IRLZ44N, LR7843)들이 Vt​가 2.2V 안팎으로 찍혀 3.3V 제어 시 약간 아슬아슬했던 것과 달리, SI2302는 데이터시트 특성 그대로 3.3V 로직 제어에 완벽하게 최적화된 상태임을 보여줍니다.

    JPG+ 2


    AO3400 

    AO3400의 측정치(Vt​=968mV, Cg​=260pF) 역시 데이터시트 규격 범위 내에 매우 정확하게 들어맞으며 이상적인 수치를 보여줍니다.

    JPG

    1. 문턱 전압 (Vt​=968mV=0.968V)

    • 데이터시트 스펙 (VGS(th)​): Min 0.65V ~ Max 1.45V (Typical 약 1.0V)
    • 측정 결과: $0.968\text{V}$로 데이터시트의 대표값(Typical 1.0V)에 매우 가깝습니다. JPG
    • 실무적 의미: 1V 미만이므로 3.3V 로직 레벨(ESP32, 아두이노 등)의 GPIO 전압으로도 충분히 도통됩니다. 게이트 전압 2.5V 정도만 가해져도 이미 저항이 충분히 낮아지므로 3.3V MCU 직결 구동 시 안정적으로 동작합니다.

    2. 게이트 용량 (Cg​=260pF)

    • 데이터시트 스펙 (Ciss​): 약 500∼630pF (Typical 630pF @ VDS​=15V)
    • 측정 결과: $260\text{pF}$로 데이터시트 공표치보다 작게 측정됩니다. JPG
    • 이유 및 의미: 전압 조건 없이 소신호로 제어하는 간이 테스터기 특성상 Ciss​ 스펙보다 작게 표시되는 것은 정상 현상입니다 (앞서 본 SI2302의 $225\text{pF}$보다 약간 더 높게 나온 것도 실제 AO3400의 $C_{iss}$가 더 크다는 경향과 일치합니다). 260pF 수준이면 여전히 게이트 충·방전 전류가 매우 적어 MCU 핀 직결로 고속 PWM을 스위칭하기에 충분히 가벼운 스펙입니다. JPG+ 2

    3. SI2302 vs AO3400 비교 총평

    • 공통점: 둘 다 Vt​가 1V 미만이라 3.3V MCU Direct 제어에 가장 적합합니다. JPG+ 1
    • 차이점: AO3400이 SI2302에 비해 허용 전류($5.7\text{A}$급 vs $2.8\text{A}$급)가 2배 가량 커서, 중소형 DC 모터나 소형 히터, 고용량 LED 릴레이 등 전류 사용량이 조금 더 큰 회로를 다룰 때 발열 면에서 유리한 선택이 됩니다.


    문턱전압이 2.23v 인데 왜 3.3 v에 완전히 열리지 않나?

    문턱전압(VGS(th)​)은 모스펫이 ‘완전히 열리는 전압’이 아니라 ‘겨우 켜지기 시작하는 전압’이기 때문입니다.

    JPG

    데이터시트에서 정의하는 문턱전압의 실제 물리적 의미를 보면 이유를 바로 이해할 수 있습니다.

    1. 문턱전압(VGS(th)​=2.23V)의 진짜 의미

    • 데이터시트 정의: 제조사에서 $V_{GS(th)}$를 측정할 때 기준 조건은 보통 드레인 전류(ID​)가 겨우 250μA (0.00025A) 흐를 때의 게이트 전압입니다.
    • 즉, $2.23\text{V}$는 모스펫 채널이 완전히 열린 상태가 아니라, 전류가 마이크로암페어 단위로 “겨우 새어나오기 시작하는 지점”입니다. JPG

    2. 게이트 여유 전압(VGS​−VGS(th)​)의 부족

    모스펫 내부의 도통 저항(RDS​)을 최소화하여 완전히 열려면(Full-ON), 게이트 전압이 문턱전압보다 훨씬 높게 들어가야 채널이 넓게 형성됩니다.

    • ESP32 3.3V 인가 시 여유 전압:VGS​−VGS(th)​=3.3V−2.23V=1.07V
    • 게이트 전압 압력(1.07V)이 너무 낮아 내부 채널이 아주 얇고 좁게만 만들어집니다.
    • 결과적으로 내부 저항(RDS​)이 스펙상의 22mΩ 수준으로 떨어지지 못하고, 수 Ω∼ 수십 Ω의 높은 저항 상태(선형 영역)에 머무르게 됩니다.

    3. 수도꼭지에 비유하면

    • VGS(th)​=2.23V: 꽉 잠긴 수도꼭지를 손으로 살짝 건드려 물이 한 방울 뚝 떨어지기 시작하는 순간 JPG
    • VGS​=3.3V: 수도꼭지 손잡이를 살짝 건드려 겨우 졸졸 흐르게 만든 상태 (병목 현상으로 수압 손실 및 마찰열 발생)
    • VGS​=5V∼10V: 수도꼭지를 끝까지 꽉 돌려 완전히 다 연 상태 (저항 없이 시원하게 통과)

    4. 결론 및 대안

    IRLZ44N 데이터시트에서 표기하는 최소 도통 저항(22∼28mΩ) 기준 전압은 VGS​=5V 또는 10V입니다.

    3.3V 로직 신호로 완전 도통을 원하신다면:

    1. $V_{GS(th)}$가 0.9V 미만이라 3.3V 전압으로도 여유 전압이 충분히 확보되는 AO3400이나 SI2302로 교체하거나 JPG+ 1
    2. IRLZ44N 앞단에 소형 NPN 트랜지스터(또는 드라이버)를 하나 두어 게이트로 들어가는 전압을 $5\text{V} \sim 10\text{V}$로 승압시켜 제어하셔야 합니다.

    IRLZ44N 문턱전압이 2.23 v 로 측정되는데 esp32-c3 3.3 v로 완전히 열리기 힘들다고? 그리고 게이트에 100옴정도를 연결해서 쓰면 3.3 v 도 안되지 않나?

    1. IRLZ44N을 ESP32-C3(3.3V)에 바로 연결하면 완전히 열리지 않나요?

    네, 완전히 열리지(Full-ON) 못합니다.

    • 문턱 전압 의미: 측정된 $V_t = 2.23\text{V}는모스펫이전류를겨우\mu\text{A}$단위로 통과시키기 시작하는 전압입니다. JPG
    • 3.3V 구동 시 상태: ESP32-C3에서 3.3V 신호를 주더라도, 게이트-소스 간 여유 전압(VGS​−Vt​)이 약 $1.0\text{V}$에 불과합니다. 이 상태는 데이터시트의 정격 온저항(RDS(on)​=22∼28mΩ) 영역이 아니라 선형(비포화) 영역에 머물게 됩니다.
    • 결과:
      • 소전류(몇백 mA 이하) 스위칭은 가능하지만, 전류가 늘어나면 드레인-소스 간 전압 강하가 커집니다.
      • Internal Resistance(RDS​)가 급격히 높아져 모스펫에서 엄청난 발열이 발생하며, 부하(모터, 히터 등)에는 전압이 제대로 전달되지 않습니다.

    2. 게이트에 100Ω 저항을 직렬 연결하면 전압이 깎여서 더 안 되나요?

    아닙니다. 직렬 저항 때문에 게이트 “전압” 자체가 줄어들지는 않습니다.

    • MOSFET 게이트의 전기적 특성: 게이트(Gate) 단자는 내부적으로 아주 얇은 산화막 절연체로 되어 있어 DC 전류가 거의 흐르지 않는 구조(입력 임피던스 무한대에 가까움)입니다.
    • 전압 강하 없음: 전류(I)가 흐르지 않으므로 V=I×R 법칙에 따라 100Ω 저항 양단에 전압 강하가 생기지 않습니다. 즉, 충전이 완료되면 게이트에 가해지는 최종 DC 전압은 동일하게 3.3V가 됩니다.
    • 100Ω 저항의 진짜 목적:
      1. MCU 핀 보호: 게이트 용량(Cg​≈2.13nF)을 순간 충전할 때 생기는 피크 전류(Inrush Current)를 제한하여 ESP32-C3 GPIO 핀 파손을 막아줍니다. JPG
      2. 링잉(Ringing) 방지: 스위칭 시 발생하는 고주파 노이즈 및 기생 신호 진동을 억제합니다.

    해결 방안 (어떻게 해야 할까?)

    1. 소형 MOSFET으로 교체 (추천)
      • 부하 전류가 2∼4A 이나라면, 앞서 측정한 AO3400이나 SI2302로 교체하는 것이 가장 간단합니다. (Vt​가 0.9V 수준이라 3.3V 로직으로 완전히 다 열립니다.) JPG+ 3
    2. 드라이버 회로 추가 (IRLZ44N을 꼭 써야 할 때)
      • 소형 NPN 트랜지스터(2N2222, C1815 등)나 전용 MOSFET 드라이버 IC, 또는 옵토커플러를 중간에 두고, 게이트 전압을 5V 이상(권장 10V)으로 승압하여 제어해야 IRLZ44N의 본래 스펙대로 구동 가능합니다.


    결론: 3.3v로 작동하는 MCU esp32-c3 등은 SI2302, AO3400 을 쓰는게 낫다.

    ESP32-C3의 3.3V GPIO 핀으로 직접 제어하실 목적이라면 AO3400이나 SI2302를 사용하는 것이 가장 깔끔하고 확실한 선택입니다.

    질문하신 두 가지 상황에 대해 정리해 드립니다.

    1. ESP32-C3 3.3V 직결 시 AO3400 / SI2302 추천 이유

    • 두 소자 모두 문턱전압(Vt​)이 0.9V 부근이라 3.3V 신호만 들어가도 채널이 100% 완전히 열립니다. JPG+ 1
    • 게이트 용량(Cg​)도 200∼260pF 수준으로 작아서 ESP32-C3의 GPIO 핀에 전류 부담을 주지 않고 PWM 제어를 돌리기에도 안전합니다. JPG+ 1
    • 선택 팁: 전류 2A 미만의 아주 소형 부하는 SI2302, 2∼4A 수준의 소형 모터/히터/팬 등은 허용 전류가 더 큰 AO3400을 쓰시면 됩니다. JPG+ 1

    2. IRLZ44N / LR7843을 3.3V 제어로 10W 안쪽 부하에 쓴다면?

    결론부터 말씀드리면 “어거지로 작동은 가능하지만, 부하 전압에 따라 발열 및 전압 강하 위험이 있습니다.”

    10W 전력이라는 것은 사용 전압에 따라 흐르는 전류가 달라집니다.

    • 12V / 10W 부하인 경우 (전류 I≈0.83A)
      • 전류가 1A 미만으로 적기 때문에, $V_{GS} = 3.3\text{V}$로 완전 도통이 안 되어 내부 저항(RDS​)이 0.2∼0.5Ω 정도로 살짝 높게 잡히더라도 손실 전력(I2R)은 0.2∼0.3W 수준입니다.
      • 이 정도는 방열판 없이도 약간 미지근한 정도라 12V 10W 부하에는 어느 정도 쓸 수 있습니다.
    • 5V / 10W 부하인 경우 (전류 I=2A)
      • 전류가 $2\text{A}$로 늘어나면 내부 저항이 0.3Ω만 되어도 모스펫 자체에서 1.2W 이상의 손실(I2R=22×0.3)이 발생합니다.
      • TO-220(IRLZ44N)이나 TO-252(LR7843)라도 방열판이 없으면 꽤 뜨거워지며, 부하 측에 들어가야 할 5V 전압 중 약 0.6V 이상이 모스펫에서 깎여 나가 부하가 제 성능을 내지 못합니다. JPG+ 1

    3. 두 대형 모스펫 간의 비교 (굳이 쓰셔야 한다면)

    • LR7843 (상대적 우수): LR7843은 초저저항 트렌치 공정 소자라 3.3V 게이트 전압에서도 IRLZ44N보다 채널이 더 많이 열립니다. 10W 부하 정도라면 IRLZ44N보다는 LR7843이 발열도 적고 훨씬 안정적으로 버텨줍니다.
    • IRLZ44N: Vt​가 $2.23\text{V}$로 높아서 ESP32-C3의 3.3V 신호(부하 시 MCU 출력 전압이 $3.1\sim3.2\text{V}$로 떨어질 수 있음)와 격차가 1V 미만입니다. 오차나 온도 변화에 따라 전압 효율이 크게 떨어질 수 있습니다. JPG+ 1

    요약

    회로 구성의 안정성과 효율을 생각한다면 AO3400을 기본으로 사용하는 것이 가장 좋으며, 부득이하게 부품 재고 문제로 대형 모스펫을 써야 한다면 LR7843을 사용하시되 12V 10W 이하 소전류 부하에 우선 활용하시는 것을 권장합니다.

    JPG+ 1


    1. 문턱전압 차이(VGS​−Vt​)가 몇 V 이상이어야 완전히 열리는가?

    일반적으로 여유 전압(VGS​−Vt​)이 최소 3V∼4V 이상 확보되어야 내부 채널이 완전히 형성되어 최소 온저항(RDS(on)​) 영역에 진입합니다.

    • VGS​=5V 구동 기준 (권장 조건)
      • Vt​=1.0V 일 때: VGS​−Vt​=4.0V → 채널 완전 형성 (Full-ON)
      • Vt​=2.23V 일 때: VGS​−Vt​=2.77V → 채널이 꽤 열리지만 여전히 온저항이 살짝 남음 JPG
    • ESP32-C3 (3.3V) 구동 기준
      • Vt​=2.23V 일 때: VGS​−Vt​=1.07V → 턱없이 부족함 (반쯤 열린 상태) JPG
      • Vt​=0.9V 일 때 (AO3400, SI2302): VGS​−Vt​=2.40V → 소형 모스펫 특성상 2.4V 정도의 차이만으로도 채널이 95% 이상 완전히 열림 JPG+ 1

    결론적으로 3.3V MCU 핀으로 직결하려면 Vt​가 1.0V 미만(권장 0.6∼0.9V)이어야 여유 전압이 2.3V 이상 확보되어 안심하고 쓸 수 있습니다.

    JPG+ 1

    2. 테스터기에서 RDS​=0.2Ω로 측정되는 것은 실제 도통 저항이 큰 것인가?

    아닙니다. 실제 온저항이 0.2Ω으로 높은 것이 아니라, 테스터기의 측정 한계 때문입니다.

    1. 소켓 접촉 저항 및 해상도 한계
      • T7 같은 간이 멀티 테스터기 소켓 단자와 모스펫 다리 사이의 접촉 저항만 해도 약 0.1∼0.2Ω에 달합니다.
      • 또한 테스터기 내부 회로의 저항 측정 최소 해상도가 0.1Ω∼0.2Ω 수준이기 때문에, 정상적인 모스펫을 꽂으면 대부분 0.2Ω으로 고정 표시됩니다. JPG+ 4
    2. 실제 데이터시트상의 온저항(RDS(on)​)
      • 테스터기에 표시되는 0.2Ω(200mΩ)과 달리, 모스펫이 완전 도통되었을 때의 실제 내부 저항은 모두 밀리옴(mΩ) 단위로 훨씬 낮습니다.
        • LR7843: 3.3mΩ (0.0033Ω)
        • IRLZ44N: 22mΩ (0.022Ω)
        • AO3400: 33mΩ (0.033Ω)
        • SI2302: 60mΩ (0.060Ω)

    따라서 테스터기 화면의 RDS​=0.2Ω 표시는 “소자가 파손되지 않고 켜지기는 한다” 정도를 확인하는 참고용일 뿐, 실제 모스펫의 정격 온저항 스펙 수치가 아닙니다.

    JPG+ 4


    LR7843, IRLZ44N 을 ESP32-C3랑 쓰려면 커플러로 분리하고 게이트 전압으로 5V 이상을 넣어야 한다.

    이 방법이 대형 전력 모스펫을 사용할 때 가장 표준적이고 안전한 정석 회로 구성입니다.

    ESP32-C3와 IRLZ44N, LR7843 사이에 옵토커플러(PC817 등)나 레벨 시프터 트랜지스터를 두고 게이트 전압을 5V~12V로 승압하여 제어하면 다음과 같은 확실한 장점이 생깁니다.

    1. 이렇게 구성했을 때의 장점

    1. 최저 온저항(RDS(on)​) 달성으로 발열 해결
      • 게이트 전압으로 5V~12V를 가해주면 VGS​−Vt​ 여유 전압이 3V∼10V 이상 확보됩니다.
      • 이에 따라 LR7843(3.3mΩ), IRLZ44N(22mΩ) 본래 데이터시트상의 스펙대로 완전 도통되어 대전류를 흘려도 발열이 극적으로 줄어듭니다.
    2. ESP32-C3 MCU의 안전한 보호 및 절연
      • 고전력 부하(모터, 대형 히터, 솔레노이드 등)에서 발생하는 역기전력이나 스파이크 노이즈가 MCU의 3.3V 라인으로 넘어오는 것을 완전히 차단합니다.
      • 게이트 용량(Cg​=1∼2nF) 충·방전 전류가 ESP32의 GPIO 핀에 직접 부담을 주지 않습니다.

    2. 회로 구성 시 주의할 실무 팁 3가지

    ① 옵토커플러(PC817 등) 사용 시 신호 반전(Invert)

    • 보편적인 옵토커플러 풀업 회로(Common Emitter) 구성 시:
      • ESP32 GPIO HIGH → 옵토커플러 켜짐 → 게이트 전압이 GND로 내려감 → MOSFET OFF
      • ESP32 GPIO LOW → 옵토커플러 꺼짐 → 게이트 전압이 5V/12V로 올려짐 → MOSFET ON
    • 따라서 코드 상에서 High/Low 로직이 반대로 동작할 수 있으므로, 소프트웨어 제어 시 이를 고려하거나 풀다운 방식/NPN 트랜지스터 구동 회로로 설계하시면 됩니다.

    ② PWM 주파수 선택 (스위칭 속도)

    • PC817 같은 범용 옵토커플러: 반응 속도(Rise/Fall Time)가 약 수~십 μs 정도입니다.
      • 단순 ON/OFF 제어나 저주파 PWM(수십~수백 Hz, 예: 히터 제어)에는 매우 잘 동작합니다.
      • 다만 고속 PWM(수 kHz 이상, 예: 모터 속도 제어)을 걸면 옵토커플러의 반응 속도가 못 따라가서 모스펫이 ‘반쯤 열린 구간’에 머무르는 시간이 길어져 발열이 날 수 있습니다. 고속 PWM이 필요하다면 소형 NPN 트랜지스터(2N2222, C1815) 레벨 시프터나 고속 게이트 드라이버 IC(TC4427 등)를 쓰시는 것이 좋습니다.

    ③ 부팅 초기 플로팅 방지 (Pull-up / Pull-down)

    • ESP32-C3가 리셋되거나 부팅되는 순간에는 GPIO 핀이 고임피던스(Floating) 상태가 됩니다.
    • 이때 부하가 원치 않게 오작동하는 것을 막기 위해 게이트 단자 끝에 10kΩ 저항을 달아 초기 상태를 확실하게 잡아주는 것이 안전합니다.

  • P-채널 모스펫(P-Channel MOSFET) 완벽 정리: 하이 사이드 스위칭부터 역전압 방지 회로까지

    P-채널 모스펫(P-Channel MOSFET) 완벽 정리: 하이 사이드 스위칭부터 역전압 방지 회로까지

    지난번 릴레이, 모스펫, 트랜지스터 비교 글에 이어 오늘은 모스펫 중에서도 실전 회로 설계에서 정말 자주 쓰이는 P-채널 모스펫(P-Channel MOSFET)을 집중적으로 파헤쳐 보겠습니다.

    “N-채널이 효율도 좋고 대전류 제어에 좋다는데, P-채널은 대체 왜 쓸까?”

    “센서 전원을 완전히 끄고 싶은데 GND를 끊으니 통신이 먹통이 돼요!”

    이런 고민을 해보셨다면 P-채널 모스펫이 해결책입니다. 동작 원리부터 대표적인 활용 사례 4가지까지 알기 쉽게 정리해 드립니다.

    1. P-채널 모스펫의 핵심: 하이 사이드 스위칭 (High-side Switching)

    P-채널 모스펫의 존재 이유는 한 문장으로 요약할 수 있습니다. 바로 “전원 공급선(+)을 직접 제어하기 위해서”입니다.

    전자 회로에서 스위치를 배치하는 위치는 두 가지가 있습니다.

    • 로우 사이드 스위칭 (Low-side): 부하(Load)와 GND 사이에 스위치를 둡니다 (주로 N-채널 사용).
    • 하이 사이드 스위칭 (High-side): 전원(+)과 부하 사이에 스위치를 둡니다 (주로 P-채널 사용).

    왜 N-채널 대신 P-채널을 쓸까요?

    N-채널 모스펫을 하이 사이드(전원+)에 넣으려면 게이트(Gate) 전압이 제어하려는 전원 전압($V_{CC}$)보다 더 높아져야 동작합니다 (보통 $V_{CC}$ + 5V 이상). 이를 위해 승압 회로(Charge Pump)나 전용 게이트 드라이버가 필요한데, 회로가 매우 복잡해집니다.

    반면 P-채널 모스펫은 게이트 전압을 GND로 낮추기만 하면(LOW 신호) 스위치가 켜집니다.

    (주의: 단, 제어하려는 전원 $V_{CC}$와 MCU의 전압이 같을 때만 GPIO로 직접 제어가 가능합니다. 만약 12V 전원을 3.3V ESP32로 제어한다면, GPIO HIGH(3.3V) 상태에서도 모스펫이 완전히 꺼지지 않으므로 중간에 작은 N-채널 모스펫이나 TR을 하나 거쳐 게이트 전압을 제어해야 합니다.)

    2. P-채널 모스펫이 꼭 필요한 4가지 실전 상황

    ① 센서 및 모듈 전원 완전 차단 (초저전력 슬립 모드)

    배터리로 작동하는 IoT 기기에서는 쓰지 않는 센서나 통신 모듈(Wi-Fi, Bluetooth 등)의 전원을 끌 때 P-채널을 사용합니다.

    • GND만 끊는 N-채널의 문제점: GND를 끊어도 센서의 데이터 선(I2C, SPI, UART)을 통해 MCU 쪽으로 미세한 전류가 새어 들어가는 기생 전원(Parasitic Powering) 현상이 발생합니다. 이 때문에 슬립 모드에서도 배터리가 빨리 닳게 됩니다.
    • P-채널 해결책: 전원(+) 선을 직접 완전히 차단해 버리므로 누설 전류를 100% 방지할 수 있습니다.

    ② 역전압 방지 회로 (Reverse Polarity Protection)

    배터리나 전원 어댑터를 실수로 반대로 꽂았을 때 메인 회로가 타버리는 것을 막아줍니다.

    일반 다이오드로 방지하면 약 0.3V~0.7V의 전압 강하가 발생하고 열이 많이 납니다. 하지만 P-채널 모스펫을 이용하면, 전원이 정상 연결되었을 때 모스펫의 내부 저항($R_{DS(on)}$)이 극도로 낮아져 전압 손실과 발열 거의 없이 안전하게 역전압을 차단할 수 있습니다.

    ③ 이중 전원 자동 전환 회로 (Power Path Management)

    USB 전원과 외부 배터리를 동시에 사용하는 기기에서 주로 사용합니다.

    USB 전원이 연결되면 P-채널 모스펫의 게이트에 HIGH 전압이 들어가 배터리 라인을 자동으로 차단하고, USB 전원으로만 작동하도록 깔끔하게 전환해 줍니다.

    ④ 공통 그라운드(Common GND) 공유 회로

    여러 기판이나 센서가 동일한 GND 기준을 공유해야 하는 프로젝트에서는 스위칭을 위해 GND를 끊어버리면 안 됩니다. GND 기준이 흔들리거나 끊기면 즉각적인 통신 에러가 발생하기 때문입니다. 이럴 때는 반드시 P-채널을 이용해 (+) 전원 라인을 제어해야 시스템 안정성이 유지됩니다.

    3. N-채널 vs P-채널 한눈에 비교하기

    구분N-채널 모스펫 (N-Channel)P-채널 모스펫 (P-Channel)
    스위치 위치로우 사이드 (부하 ↔ GND)하이 사이드 (전원+ ↔ 부하)
    스위치 ON 조건Gate에 HIGH 신호 ($V_{GS} > 0$)Gate에 LOW 신호 ($V_{GS} < 0$)
    주요 장점전자 이동도가 높아 켜짐 저항이 낮고 대전류에 유리별도 승압 회로 없이 (+) 전원 제어가 직관적이고 쉬움
    대표 활용DC 모터 PWM 제어, 대용량 LED 제어센서 전원 차단, 역전압 보호, 전원 선택 회로

    Summary

    • 대전류/고속 PWM 제어가 필요하다 👉 N-채널 모스펫 (로우 사이드)
    • 전원(+) 자체를 끊거나 통신이 포함된 안전한 회로를 만든다 👉 P-채널 모스펫 (하이 사이드)

    단순히 N-채널이 더 대중적이라고 해서 모든 곳에 N-채널만 쓸 수는 없습니다. 회로의 안전성, 통신 신호의 기준(GND), 초저전력 설계가 중요한 프로젝트라면 P-채널 모스펫을 적재적소에 활용해 보세요!

  • 릴레이 vs 모스펫 vs 트랜지스터 (차이점, 장단점, 상황별 선택법)

    릴레이 vs 모스펫 vs 트랜지스터 (차이점, 장단점, 상황별 선택법)

    DIY 전자작작이나 임베디드 회로 설계(Arduino, ESP32 등)를 시작할 때 가장 흔히 접하면서도 헷갈리는 부품이 있습니다. 바로 전기적 스위치 역할을 하는 릴레이(Relay), 모스펫(MOSFET), 그리고 트랜지스터(BJT)입니다.

    “모두 전기를 켜고 끄는 스위치 같은데, 그냥 아무거나 쓰면 안 되나?” “모스펫이 제일 좋다던데 트랜지스터나 릴레이는 왜 아직도 쓸까?”

    이 글에서는 회로 초보자부터 리액트/임베디드 개발자까지 한눈에 이해할 수 있도록 3가지 부품의 핵심 동작 원리, 장단점 비교, 그리고 상황별 선택 기준을 깔끔하게 정리해 드립니다.

    1. 부품별 핵심 개념 한 줄 요약

    • 트랜지스터 (BJT): 미세한 전류로 더 큰 전류를 제어하는 “신호 증폭기 겸 소형 스위치”
    • 모스펫 (MOSFET): 전압으로 대용량 전력을 손실 없이 빠르게 켜고 끄는 “고속 전력 스위치”
    • 릴레이 (Relay): 자석의 힘으로 물리적 접점을 붙였다 떼는 “완전 절연 기계식 스위치”

    2. 핵심 사양 및 특징 비교

    3가지 부품은 동작 방식부터 제어할 수 있는 전력의 크기, 스위칭 속도까지 큰 차이가 있습니다.

    구분트랜지스터 (BJT)모스펫 (MOSFET)릴레이 (Relay)
    제어 방식전류 제어 (Base 전류)전압 제어 (Gate 전압)전류 제어 (Coil 자력)
    스위칭 속도빠름 (kHz ~ MHz)매우 빠름 (MHz 이상)느림 (몇 Hz 이하)
    주요 용도소전류 스위칭, 신호 증폭대전류 스위칭, PWM 제어AC 220V 고전압, 대전류 절연 제어
    절연성회로 공유 (비절연)회로 공유 (비절연)완전 절연 (물리적 Separated)
    발열 및 효율중~상 (전류 손실 존재)매우 적음 (낮은 RDS(on)​)적음 (코일 자체 발열만 존재)
    작동 소음없음 (무소음)없음 (무소음)딸깍 소리 발생
    가격매우 저렴 (몇십 원)저렴~보통 (수백 원)상대적 높음 (수천 원)

    3. 각 부품의 장단점 상세 분석

    ① 트랜지스터 (BJT – NPN/PNP)

    가장 역사가 오래되고 기본이 되는 반도체 소자입니다.

    • 장점: 가격이 매우 저렴하며 구하기 쉽습니다. 입력 전류에 비례하여 출력 전류가 정밀하게 늘어나기 때문에 아날로그 센서 신호 증폭에 탁월합니다.
    • 단점: 전류로 전류를 제어하는 방식이라 스위치 ON 상태에서도 지속적인 전류 소비가 발생하며, 대전류를 흘릴 경우 발열이 심합니다.

    ② 모스펫 (MOSFET – N-Channel/P-Channel)

    현대 전력 전자 회로의 핵심 부품입니다.

    • 장점: 전압(Gate)만 가해주면 스위치가 켜지므로 제어 전력 소비가 거의 없습니다. 내부 저항이 극도로 낮아 몇 A~수십 A의 대전류를 흘려도 발열이 매우 적습니다. 또한 PWM 제어를 통해 LED 밝기 조절이나 모터 속도 제어에 필수적입니다.
    • 단점: 게이트를 완전히 열기 위해 일정 수준 이상의 전압(보통 5V~10V 이상)이 필요하며, 정전기(ESD)에 민감해 파손되기 쉽습니다.

    ③ 릴레이 (Relay – Mechanical/SSR)

    전자석을 이용해 내부의 금속 스위치를 직접 움직이는 부품입니다.

    • 장점: 제어 회로(MCU)와 부하 회로(AC 220V 등)가 물리적으로 완전히 분리(절연)되어 있어 안전합니다. AC/DC 구분 없이 사용할 수 있습니다.
    • 단점: 기계식으로 움직이므로 스위칭 속도가 느리고, 켜고 끌 때 “딸깍” 하는 소음이 납니다. 내부 코일을 작동시키는 데 최소 70~100mA 이상의 전류가 필요해 MCU 핀으로 직접 구동할 수 없습니다.

    4. 상황별 선택 가이드: 무엇을 써야 할까?

    실제 프로젝트 회로를 구성할 때 아래 기준에 따라 선택하시면 실패하지 않습니다.

    1. 220V 가전제품이나 AC 전원을 제어해야 할 때 → 릴레이 (Relay) 선택 (보안 및 완전 절연 필수)
    2. DC 모터 속도 제어(PWM), LED 밝기 제어, 대용량 히터 제어를 할 때 → 모스펫 (MOSFET) 선택 (고속 스위칭 및 발열 최소화)
    3. 작은 센서 신호를 증폭하거나, 소형 부저/LED 등 가벼운 제어를 할 때 → 트랜지스터 (BJT) 선택 (가성비 및 회로 간소화)
    4. MCU(ESP32, 아두이노)에서 릴레이를 켜고 싶을 때 → MCU → 트랜지스터/소형 모스펫 → 릴레이 형태로 보완 조합하여 사용

    Summary

    • 소전류/신호 증폭 = 트랜지스터
    • 대전류/고속 PWM 제어 = 모스펫
    • AC 고전압/안전 절연 = 릴레이

    세 부품은 경쟁 관계가 아니라 서로의 단점을 보완하는 관계입니다. 회로의 전압, 전류, 스위칭 속도 요구조건에 맞춰 적절한 소자를 선택해 보세요!

  • [ESP32-C3] TCRT5000 적외선 센서 완전 파헤치기: 차분 측정부터 uasyncio 비동기 LED 제어까지

    [ESP32-C3] TCRT5000 적외선 센서 완전 파헤치기: 차분 측정부터 uasyncio 비동기 LED 제어까지

    IoT 프로젝트나 시제품 제작 시 물체 감지, 라인 트레이싱, 엔코더 회전수 측정 등에 가장 흔히 사용되는 센서 중 하나가 바로 TCRT5000 반사형 광센서입니다.

    하지만 TCRT5000을 단순 상시 발광 방식으로 사용하면 형광등이나 햇빛 같은 주변 환경광 노이즈 때문에 센서 값이 튀거나, 감지 거리가 생각보다 짧아(2cm 안팎) 애를 먹는 경우가 많습니다.

    이번 포스팅에서는 ESP32-C3 및 MicroPython 환경에서 외부 빛 노이즈를 완전 제거하는 ‘차분 측정 방식’과 uasyncio를 활용한 10초 타이머 비동기 제어 코드, 그리고 감지 거리를 늘리는 하드웨어 팁까지 한 번에 정리해보겠습니다.

    1. TCRT5000 기본 동작 원리 및 핀 구조

    TCRT5000은 하나의 패키지 안에 적외선 발광 다이오드(IR LED)와 광 트랜지스터(Photo-transistor)가 같이 들어있는 구조입니다.

    • 적외선 LED (발광부): 적외선 빛을 방출합니다.
    • 광 트랜지스터 (수광부): 반사되어 들어오는 적외선 양에 따라 트랜지스터가 켜지며 전류가 흐릅니다.

    주의: 10kΩ 풀업 회로 기준, 반사광이 강하면(물체 가까움/흰색) 수광부 트랜지스터가 켜지면서 ADC 값이 0V(GND) 방향으로 떨어집니다. 반대로 반사광이 없으면 ADC 값이 3.3V(VCC) 방향으로 올라갑니다.

    2. 형광등 노이즈를 완벽히 지우는 ‘차분 측정(Differential Measurement)’ 기법

    형광등이나 백열등은 상당한 양의 적외선을 포함하고 있습니다. 이를 단순히 ADC로 읽으면 조명 밝기에 따라 오작동이 발생합니다.

    이를 해결하는 가장 스마트한 방법은 IR LED를 껐을 때(환경광)와 켰을 때(환경광 + 반사광)의 차이만 계산하는 차분 측정입니다.

    Raw Diff=ADCLED OFF (환경광)​−ADCLED ON (환경광 + 반사광)​

    이렇게 계산하면 주변 환경광 값이 서로 상쇄되어 오직 TCRT5000 IR LED에서 나와 반사된 순수 적외선 신호만 남게 됩니다.

    3. 회로 연결 구성 (ESP32-C3 기준)

    ESP32-C3의 GPIO 전압 한계(3.3V) 및 PIN 출력 특성을 고려한 결선입니다.

    • 발광부 (IR LED): GPIO 1 → 100Ω∼220Ω 제한 저항 → IR LED Anode (+) / Cathode (−) → GND
    • 수광부 (Photo-TR): 3.3V → 10kΩ 풀업 저항 → Collector (+) / Emitter (−) → GND
    • 신호선: 10kΩ 저항과 Collector가 만나는 지점 → ESP32-C3 GPIO 0 (ADC1_CH0)
    • 출력 표시용 LED: GPIO 2 → 220Ω 저항 → LED (+) / (−) → GND

    4. MicroPython 비동기(uasyncio) 제어 코드

    물체가 감지되면 GPIO 2번 LED를 켜고, 켜진 시점부터 5초간 상태를 유지(Retriggerable)하는 전체 코드입니다. uasyncio를 사용하여 센서 감지와 타이머 루프가 서로를 방해하지 않고 독립적으로 작동합니다.

    Python

    5. 감지 거리가 늘리는 팁

    TCRT5000 데이터시트상 최적 거리는 2.5mm 정도로 극단적인 근접 센서입니다. 기본 회로에서 2cm 정도 잡히는 것은 지극히 정상입니다.

    만약 감지 거리를 5cm 이상으로 확장하고 싶다면 아래 3가지 하드웨어 개조를 추천합니다.

    1. 발광부 전원 5V + TR 스위칭 구성:
      • GPIO 핀의 직접 출력 전압(3.3V) 대신, NPN 트랜지스터(C1815 등)를 스위치로 사용하고 IR LED를 5V 전원에 68Ω∼100Ω 저항과 연결해 적외선 투사 광량을 대폭 늘립니다.
    2. 수광부 풀업 저항값 변경 (10kΩ→47kΩ∼100kΩ):
      • 풀업 저항을 높여주면 먼 거리에서 들어오는 아주 미세한 반사광 전류 변화에도 전압 변화폭이 대폭 커져 먼 거리 감도가 급격히 상승합니다.
    3. 수축 튜브로 직진성 확보:
      • IR LED와 수광부 각각의 머리 부분에 검은색 열수축 튜브를 가림막처럼 씌워주면 직사광/빛 퍼짐이 방지되어 직진성과 먼 거리 감도가 좋아집니다.

    마치며

    TCRT5000을 단순 아날로그 읽기로 사용하면 환경 노이즈 때문에 사용하기 까다롭지만, 소프트웨어 차분 측정과 비동기 타이머 패턴을 결합하면 매우 안정적이고 신뢰성 높은 센서 모듈로 탈바꿈합니다.

  • 마이크로컨트롤러 프로젝트를 위한 로직 레벨 MOSFET 4종 비교 (IRLZ44N vs LR7843 vs SI2302 vs AO3400)

    마이크로컨트롤러 프로젝트를 위한 로직 레벨 MOSFET 4종 비교 (IRLZ44N vs LR7843 vs SI2302 vs AO3400)

    네 가지 소자는 모두 3.3V/5V MCU(ESP32, STM32, 아두이노 등)의 로직 신호로 direct 스위칭이 가능한 Logic-Level N-채널 MOSFET입니다.

    그러나 허용 전압, 연속 전류 용량, 패키지(크기)에 따라 체급과 용도가 완전히 다릅니다.

    주요 사양 비교표

    주요 사양IRLZ44NLR7843 (IRLR7843)SI2302AO3400
    패키지 형태TO-220 (스루홀/대형)TO-252 (DPAK) / 모듈SOT-23 (초소형 SMD)SOT-23 (초소형 SMD)
    드레인-소스 전압 (VDS​)55V ~ 60V (고전압)30V20V30V
    최대 연속 전류 (ID​)47A ~ 50A161A (실제 방열 한계 ~20~30A)2.8A ~ 3A5.8A
    온 resistance (RDS(on)​ @ 4.5V)~39 mΩ~4.0 mΩ (최상급)~85 mΩ~33 mΩ
    온 resistance (RDS(on)​ @ 10V)~28 mΩ~3.3 mΩ-(4.5V 최대)~28 mΩ
    게이트 문턱 전압 (VGS(th)​)1.0V ~ 2.0V1.4V ~ 2.3V0.7V ~ 1.2V0.7V ~ 1.4V
    주요 특징높은 내압 (24V~48V에 적합)극도로 낮은 발열, 고전류 PWM초소형, 저전력 스위칭SOT-23 중 대류용 (가성비)

    소자별 핵심 특징 및 용도

    1. IRLZ44N (대형 스루홀 / 고전압용) Ovaga Technologies

    • 특징: 네 소자 중 허용 전압(VDS​ 55~60V)이 가장 높습니다. Ovaga Technologies
    • 단점: 크기가 크고, 3.3V~5V 구동 시 온 저항(RDS(on)​)이 LR7843보다는 높아 대전류를 흘릴 때 발열판(Heat sink)이 필요합니다. iFuture Technology
    • 추천 용도: 24V, 36V, 48V 등 전압이 높은 DC 모터, 릴레이, 산업용 액추에이터 제어나 브레드보드 만능기판 DIY 작업.

    2. LR7843 (대전류 / 최강 성능)

    • 특징: 온 저항이 약 3.3~4.0 mΩ 수준으로 매우 낮아, 동일 전류 대비 발열이 가장 적고 스위칭 효율이 뛰어납니다. iFuture Technology
    • 단점: SMD(TO-252) 형태라 직접 납땜은 까다로우나, 시중에 MOSFET 스위치 모듈 형태로 많이 판매되어 사용이 편합니다.
    • 추천 용도: 12V 대용량 DC 모터(PWM 제어), 부화기/3D 프린터 히터, 고출력 LED 스트립 등 5A~20A 이상의 고전력 제어.

    3. SI2302 (초소형 SMD / 저전력)

    • 특징: 손가락 손톱보다 훨씬 작은 SOT-23 패키지로 PCB 공간을 극도로 아낄 수 있습니다. iFuture Technology
    • 단점: 내압이 20V로 낮고 온 저항이 상대적으로 높아, 연속 전류 1.5A 이상에서는 발열이 생깁니다. iFuture Technology
    • 추천 용도: 5V/12V 소형 팬, 소형 릴레이, 센서 전원 온/오프, 통신 신호 수위 변환(Level Shifter). Scribd

    4. AO3400 (초소형 SMD / 중전력 가성비)

    • 특징: SI2302와 같은 SOT-23 크기지만, 내압(30V)과 허용 전류(5.8A), 온 저항(~33 mΩ) 성능이 SI2302보다 월등히 뛰어납니다. iFuture Technology
    • 단점: SOT-23 패키지 특성상 방열 면적이 적어 실제 지속 전류는 3A 내외로 사용하는 것이 안전합니다.
    • 추천 용도: PCB에 직접 설계하는 소형 IoT 기기, 소형 솔레노이드, 2~3A급 LED 드라이버.

    한눈에 보는 선택 가이드

    • 24V 이상 높은 전압을 써야 한다: → IRLZ44N
    • 12V/5V 이하에서 5A~20A 대전류/히터/모터를 제어한다: → LR7843 LCSC Electronics
    • PCB 부품을 직접 설계하며 2~3A 내외 소형 부하를 제어한다: → AO3400
    • 신호 스위칭이나 1A 미만 극소형 부하를 제어한다: → SI2302
  • 마이크로컨트롤러 프로젝트를 위한 로직 레벨 MOSFET 3종 비교 (IRLZ44N vs LR7843 vs SI2302)

    마이크로컨트롤러 프로젝트를 위한 로직 레벨 MOSFET 3종 비교 (IRLZ44N vs LR7843 vs SI2302)

    아두이노나 ESP32 같은 마이크로컨트롤러(MCU)의 GPIO 출력만으로는 모터, 릴레이, 고전력 LED 같은 부하를 직접 제어하기 어려워 MOSFET 스위칭 회로가 필수적입니다. 동작 전압(3.3V/5V), 부하 전류, 패키지 형태에 따라 가장 널리 쓰이는 N-채널 로직 레벨 MOSFET 3종의 핵심 제원과 활용 팁을 정리했습니다.

    주요 항목IRLZ44NLR7843SI2302 (A2SHB)
    패키지 형태TO-220 (Thru-hole)SO-8 / 모듈 타입SOT-23 (초소형 SMD)
    드레인-소스 전압 (Vds)55V30V20V
    연속 드레인 전류 (Id)47A최대 161A (실사용 20~30A)2.8A ~ 3A
    도통 저항 (Rds(on))~22mΩ (@ Vgs 5V)~3.3mΩ (@ Vgs 4.5V)~55mΩ (@ Vgs 2.5V)
    게이트 문턱 전압 (Vgs(th))1.0V ~ 2.0V1.4V ~ 2.3V0.65V ~ 1.2V
    권장 구동 로직 전압5V (3.3V 구동 시 발열 주의)3.3V / 5V 모두 우수2.5V / 3.3V / 5V
    주요 용도브레드보드 시제품, 고전압 DC 모터PWM 고전력 부하, ESP32 스위칭소형 PCB, 소형 팬/릴레이 제어

    1. IRLZ44N: 브레드보드 작업과 고전압 부하의 표준

    일반적인 IRF540N이나 IRFZ44N과 달리, 품명 중간의 ‘L’이 의미하듯 로직 레벨(Logic-Level) 전용으로 설계된 스루홀(Thru-hole) MOSFET입니다.

    • 장점: TO-220 패키지로 브레드보드나 만능기판 작업이 편리하며, 방열판을 쉽게 장착할 수 있습니다. 최대 내압이 55V로 24V/36V DC 모터나 솔레노이드 제어 시 마진이 넉넉합니다.
    • 주의점: 5V 로직(아두이노 UNO 등)에서는 게이트가 충분히 열려 낮은 저항을 유지하지만, 3.3V 로직(ESP32, RP2040)으로 직접 구동 시 부하 전류가 커지면 Rds(on) 상승으로 인해 발열이 발생할 수 있습니다.

    2. LR7843: 3.3V MCU와 PWM 제어에 최적화된 고효율 모듈

    3.3V 마이크로컨트롤러 환경에서 고전류 스위칭을 구현할 때 가장 많이 추천되는 소자입니다. (알리익스프레스나 DIY 부품몰의 ‘LR7843 MOS 모듈’로 널리 알려져 있습니다.)

    • 장점: 3.3V 게이트 전압(Vgs) 환경에서도 도통 저항(Rds(on))이 약 3.3mΩ 수준으로 극히 낮습니다. 게이트 전하량(Qg)이 적어 3.3V MCU에서 PWM 고속 스위칭(모터 속도 제어, LED 밝기 제어)을 수행할 때 스위칭 손실과 발열이 거의 없습니다.
    • 주의점: 드레인-소스 내압이 30V이므로 12V~24V 시스템 제어에 적합하며, 30V를 초과하는 고전압 회로에는 사용할 수 없습니다.

    3. SI2302 (A2SHB): 초소형 PCB 커스텀 제작을 위한 필수품

    실크스크린에 A2SHB 마킹으로 표기되는 SOT-23 표면실장(SMD) 타입의 소형 N-채널 MOSFET입니다.

    • 장점: 손가락 손톱보다 훨씬 작은 크기로 커스텀 PCB 제작 시 공간을 극적으로 아껴줍니다. 게이트 문턱 전압(Vgs(th))이 0.65V~1.2V로 매우 낮아 2.5V 이하의 저전압 로직에서도 완전히 열립니다.
    • 주의점: 허용 전류가 약 3A 내외이므로 소형 쿨링팬, 5V/12V 소형 릴레이, 센서 전원 온/오프 스위칭 등 소전력 부하 제어용입니다. 대형 모터나 히터 제어에는 부적합합니다.

    상황별 선택 가이드

    • 브레드보드 시제품 및 24V 이상 고전압 DC 모터 제어 → IRLZ44N
    • ESP32 / RP2040 (3.3V 로직) 기반 12V/24V 고전류 PWM 제어 → LR7843
    • 초소형 자작 PCB 제작 및 소형 팬/릴레이/센서 스위칭 → SI2302

  • ESP32-C3로 12V 모터 제어하기: PC817 포토커플러와 IRLZ44N을 활용한 완벽 절연 회로 설계

    ESP32-C3로 12V 모터 제어하기: PC817 포토커플러와 IRLZ44N을 활용한 완벽 절연 회로 설계

    DIY 프로젝트를 진행할 때 ESP32나 아두이노 같은 MCU에 12V 이상의 유도성 부하(모터, Solenoid 등)를 직접 연결하면, 역기전력(Back-EMF) 스파이크나 돌입 전류로 인해 MCU가 리셋되거나 파손되는 문제가 자주 발생합니다.

    이 문제를 근본적으로 해결하기 위해 PC817 포토커플러를 사용해 제어부(3.3V)와 구동부(12V)의 GND까지 완전히 분리(Galvanic Isolation)하는 안전한 모터 제어 회로를 구성해 보았습니다.

    1. 부품 구성 및 핵심 역할

    • ESP32-C3: 3.3V 로직 제어기 (PWM 제어 신호 출력)
    • PC817 포토커플러: MCU와 12V 회로 사이를 빛(Opto)으로 전달하여 전기적으로 완벽히 격리
    • IRLZ44N N-Ch MOSFET: 12V 2A급 모터 전류를 스위칭하는 Power FET
    • 1N5822 (쇼트키 다이오드): 모터 OFF 시 발생하는 고전압 역기전력을 흡수하는 플라이백(Flyback) 다이오드
    • 저항: 220Ω (LED 전류 제한), 1kΩ (포토커플러 수광부 풀업), 10kΩ (게이트 풀다운)

    2. 왜 포토커플러(PC817)를 추가해야 할까?

    IRLZ44N은 Logic-Level MOSFET이라 ESP32의 3.3V GPIO로도 직결 구동은 가능합니다. 하지만 다음 두 가지 이유로 포토커플러 추가를 강력히 권장합니다.

    1. 전기적 격리 (MCU 보호): 모터 동작 시 발생하는 스파이크 노이즈가 ESP32의 GND로 흘러 들어가지 않아 MCU 튕김 현상을 100% 방지합니다.
    2. 게이트 전압 확보 (VGS​=12V): ESP32의 3.3V 대신 12V 전원을 직접 MOSFET 게이트에 인가할 수 있어, MOSFET이 완전 턴온(Turn-On) 상태가 됩니다. 결과적으로 온저항(RDS(on)​)이 최소화되어 발열이 획기적으로 줄어듭니다.

    3. 전체 회로도 (Schematic)

    아래 회로도처럼 MCU 영역(3.3V GND)과 모터 영역(12V GND)을 절대 서로 묶지 않고 독립적으로 유지하는 것이 핵심입니다.

    4. 핀 연결 가이드 (Pin-to-Pin)

    • PC817 1번 핀 (Anode): ESP32 GPIO 8 → 220Ω 저항 거쳐서 연결
    • PC817 2번 핀 (Cathode): ESP32 GND에 연결
    • PC817 3번 핀 (Emitter): 12V GND에 연결
    • PC817 4번 핀 (Collector): +12V에서 1kΩ 저항을 거친 후 연결 + IRLZ44N 1번 핀 (Gate)으로 연결
    • IRLZ44N Gate (1번 핀): 12V GND 사이에 10kΩ 풀다운 저항 병렬 연결
    • IRLZ44N Drain (2번 핀): 모터 (-) 단자 및 1N5822 다이오드 애노드(A) 연결
    • IRLZ44N Source (3번 핀): 12V GND에 연결
    • 모터 (+) 단자: +12V 및 1N5822 다이오드 캐소드(K, 띠 있는 쪽) 연결

    5. 소프트웨어 설정 시 주의사항

    PC817과 같은 광학 포토커플러는 턴온/턴오프 응답 속도에 한계가 있습니다. 따라서 ESP32-C3에서 PWM 제어를 적용할 때 주파수를 1kHz ~ 2kHz 수준으로 설정해야 합니다. PWM 주파수가 10kHz 이상으로 너무 높으면 포토커플러가 신호를 제대로 정형화하지 못해 MOSFET 발열이 심해질 수 있습니다.


    PC817 포토커플러와 IRLZ44N MOSFET을 활용한 ESP32-C3 기반 12V 2A 안마기 모터 제어 회로의 상세 배선도 및 핀 번호 가이드입니다.

    이 회로는 3.3V 제어 전원(ESP32)과 12V 구동 전원(모터)의 GND까지 완벽하게 분리(절연)하여 모터 역기전력 및 스파이크 노이즈가 ESP32-C3로 넘어오는 것을 근본적으로 차단합니다.

    1. 주요 부품 및 핀 맵 (Pin-out)

    • PC817 (4핀 딥 타입):
      • 1번 핀 (Anode): 내부 LED (+)
      • 2번 핀 (Cathode): 내부 LED (-)
      • 3번 핀 (Emitter): 내부 트랜지스터 에미터 (Output GND)
      • 4번 핀 (Collector): 내부 트랜지스터 컬렉터 (Output Signal)
    • IRLZ44N (TO-220 패키지, 글자가 보이는 전면 기준):
      • 1번 핀 (Gate): 제어 신호 입력
      • 2번 핀 (Drain): 모터 (-) 연결
      • 3번 핀 (Source): 12V 전원 GND 연결
    • 쇼트키 다이오드 (1N5822 / SS34 등):
      • 띠가 있는 쪽 (K, Cathode): +12V 전원
      • 띠가 없는 쪽 (A, Anode): MOSFET Drain (모터 – 핀)

    2. 상세 핀-투-핀 배선 표 (Pin-to-Pin Wiring)

    [절연 영역 A: ESP32-C3 제어부 (3.3V 전원)]

    출발지연결 대상사용 저항 / 비고
    ESP32-C3 GPIO 핀 (예: GPIO 8)PC817 1번 핀 (Anode)220Ω 직렬 저항 거쳐서 연결
    ESP32-C3 GND 핀PC817 2번 핀 (Cathode)직접 연결 (3.3V GND)

    [절연 영역 B: 모터 및 MOSFET 구동부 (12V 전원)]

    출발지연결 대상사용 저항 / 비고
    +12V 파워 Supply (+)PC817 4번 핀 (Collector)1kΩ 직렬 저항 거쳐서 연결
    +12V 파워 Supply (+)안마기 모터 (+) 단자직접 연결
    +12V 파워 Supply (+)다이오드 Cathode (띠 있는 쪽)역기전력 방지용 다이오드
    PC817 4번 핀 (Collector)IRLZ44N 1번 핀 (Gate)1kΩ 저항 뒷단에서 MOSFET Gate로 직접 연결
    IRLZ44N 1번 핀 (Gate)12V 파워 GND (-)10kΩ 풀다운 저항 연결
    PC817 3번 핀 (Emitter)12V 파워 GND (-)직접 연결 (12V GND)
    IRLZ44N 3번 핀 (Source)12V 파워 GND (-)직접 연결
    안마기 모터 (-) 단자IRLZ44N 2번 핀 (Drain)직접 연결
    안마기 모터 (-) 단자다이오드 Anode (띠 없는 쪽)MOSFET Drain과 함께 연결

    ★ 가장 중요한 핵심: ESP32-C3의 GND와 12V 전원의 GND는 절대로 서로 묶지 않고 완전히 분리해 두어야 포토커플러 절연 효과를 얻을 수 있습니다.

    3. ESP32-C3 소프트웨어(PWM) 설정 가이드

    PC817 포토커플러는 반응 속도(Rise/Fall Time) 제한이 있으므로, ESP32-C3에서 PWM 제어 시 주파수 설정을 너무 높게 잡지 않아야 합니다.

    • 권장 PWM 주파수:1kHz ~ 2kHz (1,000Hz ~ 2,000Hz)
      • 주파수가 10kHz 이상으로 너무 높으면 포토커플러가 신호를 제때 끄고 켜지 못해 MOSFET이 중간 온(Linear Area) 상태에 머물면서 발열이 급격히 증가합니다.
    • 로직 반전 주의: 위 구성은 포토커플러 특성상 GPIO가 HIGH일 때 MOSFET 게이트에 12V가 인가되어 모터가 ON되는 정방향 동작 회로이므로, 일반적인 Duty Cycle 값을 그대로 적용하시면 됩니다. (0% = 정지, 100% = 최대 속도)