로그인회원가입

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

코멘트

답글 남기기