Skip to content
TUWLAB.com
TUW
조회 수 1376 댓글 0
Atachment
첨부 '8'

이 글에서는 임베디드 시스템 등에서 적외선 통신을 구현하려고 할 때 필요한 기초지식에 대해서 중점적으로 다룹니다. 적외선 송수신 소자와 기본적인 적외선 송수신 회로 구성법에 대해 다룹니다.

적외선(Infrared Rays; IR)은 파장이 약 780nm~1mm의 범주에 들어있는 전자기파를 지칭하며, 스펙트럼 위치상 가시광선 영역에서 파장이 가장 긴 적색(赤)의 밖(外)에 위치하므로 우리말로는 '적외선(赤外線)'이라 일컫습니다. 이 적외선보다 파장이 긴(>1mm) 바로 옆 영역은 블루투스나 WiFi통신에서 사용하는 마이크로파(Microwave)가 위치하고 있습니다. 적외선은 다시 파장이 길어지는 순서로 근적외선-중적외선-원적외선으로 나뉘며, 이 중 대부분의 영역은 '열선'이라 불리는 원적외선(4㎛~1mm)이 차지하고 있습니다.

이 글에서 중점적으로 다루는 적외선은 780nm~2000nm영역에 속하는 '근적외선' 입니다. 가시광선보다 파장이 길어서 회절이 잘 일어나고 사람의 눈으로 인지할 수 없으며, 원적외선과 달리 열을 발생시키지 않으므로 근거리 통신 목적으로 사용하기에 적합하다고 할 수 있습니다

주변에서 흔히 볼 수 있는 가전제품의 원격 제어에 사용되는 리모컨이 (비록 단방향이기는 하지만) 바로 이 적외선을 사용하는 통신의 대표격이라 할 수 있습니다. 양방향 통신이 가능하며, 국제 표준으로 지정된 적외선 통신은 오늘날 널리 보급된 스마트폰에 내장되어 있는 IrDA를 들 수 있습니다. IrDA는 주로 근거리에서 스마트폰간 간단한 데이터를 교환할 때 유용하게 사용할 수 있습니다.


적외선 송수신 소자

적외선 송광 다이오드 (Infrared Rays Emitting Diode; IRED)

적외선 송광 다이오드는 외형은 LED처럼 생겼지만, 가시광선이 아닌 적외선을 발생시킵니다. 일부 고휘도 LED의 경우 IRED와 외형이 같아서 혼동을 유발할 수 있으므로 IRED는 부품 보관시 별도로 표기를 해 두는 것이 좋습니다.

IRED.jpg
▲ IRED

IRED 부품 모델에 따라 발산되는 적외선의 파장이 약간씩 다릅니다. 모두 근적외선 대역에 속해있으며, 보통 900nm 전후 영역에 분포하고 있습니다. 정확히는 IRED에서 발산되는 적외선의 파장은 대역(범위)으로 분포하며, 제품마다 그 중앙 파장(Peak Wavelength)과 대역폭(Bandwidth)이 다릅니다.

IRED - Datasheet.png
▲ IRED 데이터시트 예시 (CL-1L5R)

예를 들어, 위의 예시와 같이 Peak Wavelength가 880nm이고 Bandwidth가 50nm이면 발산되는 적외선은 855nm ~ 905nm가 됩니다. 물론, 모든 전자부품이 그렇듯이 이 범위 밖의 적외선이 '전혀' 발산되지 않는다는 것은 아닙니다. 이 대역폭을 주로 사용하는것이 좋지만, 그 범위를 약간 벗어나더라도 수신측에서 감도가 약간 떨어질 뿐 통신이 전혀 불가능해지지는 않습니다.

참고로, 리모컨 통신에서는 Peak Wavelength = 940nm 부근의 적외선을 주로 사용합니다. 하지만 직접 실험해 본 결과, Peak Wavelength = 880nm인 IRED를 사용해서도 일반 가전제품을 문제 없이 제어할 수 있었습니다. 이는 적외선 수신부에서 커버하는 적외선의 대역폭이 IRED에 비해 대체로 넓기 때문입니다.

[TIP] IRED 사망 판별

LED는 불이 켜지는지를 봐서 부품이 사망했는지 여부를 판별할 수 있지만, 적외선은 눈에 보이지 않기 때문에 IRED가 죽었는지 살았는지 확인을 하려면 애로사항이 꽃피는 경우가 종종 있습니다. 멀티미터로 찍어서 확인해도 되지만, 전원을 연결한 뒤 휴대폰 카메라 등을 통해 확인하는 방법이 더욱 확실합니다.

단, 오늘날 판매되는 대부분의 휴대폰 카메라에는 적외선 필터가 장착되어 있어서 대강 비춰봐서는 판별이 어려우므로, 전원을 연결한 IRED를 카메라 렌즈에 최대한 밀착시켜서 보라색 불빛이 보이는지 여부를 살펴보면 됩니다.

적외선 수광 트랜지스터 (Phototransistor)

적외선 수광 트랜지스터(포토트랜지스터)도 역시 외형은 LED와 비슷하게 생겼지만, 표면에 검은색으로 된 가시광선 필터가 발라져 있습니다. 간혹 이 필터 없이 IRED처럼 투명한 수광 트랜지스터도 있는데, 이 경우 가시광선으로 인한 간섭이 발생할 수 있으므로 유의해야 합니다.

Phototransistor.jpg
▲ Phototransistor

신호를 수신하는 센서이고, 그 동작도 LED/IRED와 반대인 만큼 다리 극성도 그와 반대입니다. 즉, 전류는 짧은 다리에서 긴 다리 방향으로 흐릅니다. 시커먼 필터때문에 속이 보이지 않아서 부품을 실장하고 다리를 잘라내면 구분이 어려워지므로 이에 유의하도록 합니다. (이 경우 원통 하단의 잘린 귀퉁이를 보고 극성을 판별할 수 있습니다. 잘린 귀퉁이가 짧은 다리이며, 이는 LED/IRED에서도 동일하게 적용됩니다.)

정확하게는 긴 다리는 NPN형 TR의 Emitter에 해당하고, 짧은 다리는 Collector에 해당합니다. 즉, 포토트랜지스터는 NPN형 트랜지스터에서 Base가 광수신부로 대체된 것이라고 이해하면 됩니다. 수신되는 적외선 광량에 따라 Collector에서 Emitter로 흐르는 전류의 양이 변동합니다.

포토트랜지스터도 역시 수신하는 적외선의 대역폭이 정해져 있습니다. 다만, IRED에 비해 그 대역폭이 광범위하기때문에 서로 다른 Peak Wavelength와 대역폭을 갖는 여러 IRED들을 커버할 수 있습니다.

적외선 수광 모듈

적외선은 IRED에서만 발산되는 것이 아니라 태양광이나 형광등에도 함께 섞여서 발산되기 때문에 이를 활용해 통신하기 위해서는 잡음(Noise)을 제거하는 것이 중요합니다. 따라서 통상 적외선 통신에서는 데이터를 보낼 때 그냥 보내지 않고, 특정 주파수를 갖는 Modulation Carrier에 싣는 과정을 거쳐서 전송합니다. (물론, 이는 전파를 사용하는 일반 통신에서도 마찬가지입니다.)

Modulation Carrier란 0과 1이 반복되는 일종의 PWM 출력신호입니다. Duty Ratio(한 Cycle에서 1과 0의 시간 비율)는 크게 중요하지 않고, 단지 수신부와 동기화된 Carrier Frequency가 중요합니다.

이렇게 Modulation된 신호를 수신측에서 송신측이 의도한 본래 신호로 되돌리려면 포토트랜지스터로 수신한 신호를 Band Pass Filter(BPF)에 통과시켜서 Demodulation하는 과정을 거쳐야 합니다.

적외선 수광 모듈은 포토트랜지스터와 특정 Center Frequency의 BPF를 결합하여 사용하기 편리하도록 하나의 부품으로 패키징해 제작한 부품입니다.

IR Receiver.jpg
▲ 적외선 수광 모듈 (KSM-603LM)

쉽게 말해서, 이 적외선 수광 모듈은 수신되는 적외선 신호 중에서 특정 주파수의 적외선 신호만 분리해서 출력핀으로 내보내는 역할을 합니다. 적외선 통신에서 많이 사용되는 Modulation Frequency는 32.7kHz, 36.7kHz, 37.9kHz, 40.0kHz, 56.9kHz 등이 있습니다.

다음은 송신부에서 보내는 신호(Transmitter output)와 이를 수신한 KSM-603LM 적외선 수광 모듈에서 내보내는 신호(Remocon output pulse)의 예시를 나타낸 것입니다. 이 수광 모듈에서는 신호가 없을 때 Logical '1'을 출력하고, Carrier 신호가 수신될 때 Logical '0'을 출력합니다.

이 신호를 그대로 MCU로 입력받아 Decoding을 수행하면 송신측에서 보낸 데이터를 알아낼 수 있습니다. 포토다이오드를 MCU에 직결하지 않고 수광 모듈을 사용하는 이유는 MCU의 수신 신호 처리 부하를 줄이기 위함입니다. MCU에서 37.9kHz의 Carrier신호를 직접 수신해서 해석하려면 펌웨어 코딩도 여간 귀찮은 일이 아니겠지만, 무엇보다도 인터럽트를 통해 수신 신호를 처리하는 데 많은 양의 연산량이 요구되기 때문입니다.

IR receiver output.png
▲ 적외선 수광 모듈의 동작

여담이지만, 얼마 전에 LG 에어컨의 리모컨 신호를 분석하기 위해 구글링을 했는데, 한 사이트에서 이 적외선 수광 모듈에서 나오는 신호를 캡처한 사진을 올려 놓고 '이것이 LG에어컨 리모컨에서 나오는 적외선 신호다.'라고 해 놓아서 한참 삽질을 했던 적이 있습니다. 사이트에서 기술해 놓은 파형 그대로 IRED를 깜박여봤지만, 에어컨은 묵묵부답이었다는 후문입니다.[...]

다시 강조하지만, 적외선 수광 모듈에서 나온 출력 신호는 송신부에서 보낸 신호(IRED의 깜박임)와 전혀 다르다는 점을 반드시 인지하고 있어야 합니다. 게다가, 송신 신호를 그대로 반전시킨것도 아닙니다. 굳이 언급하자면, 송신부에서 보낸 신호의 Carrier를 모두 뭉개서 평평하게 만든 뒤 뒤집은 것(?)이라고 할 수 있습니다.


적외선 송수신 회로

적외선 송신 회로

적외선 신호를 보내기 위한 송신 회로는 다음과 같이 IRED를 켜고 끄기 위한 회로만 갖추면 됩니다. MCU의 PWM출력 핀을 IR_Tx에 연결한 뒤, PWM Frequency를 사용할 Carrier Frequency에 맞추고 PWM 출력을 통신 프로토콜에 따라 ON/OFF만 해 주면 됩니다.(참 쉽죠-?)

IR Transmitter.png
▲ 적외선 송신 회로

적외선 수신 회로 (포토트랜지스터 활용)

포토트랜지스터는 적외선 신호가 들어오지 않을 때는 Collector-Emitter간 저항이 1㏁가까이 되지만, 적외선 신호가 들어오면 1㏀정도까지 떨어집니다. 포토트랜지스터는 Base가 광수신부로 대체된 NPN트랜지스터라는 사실을 되새겨보면, 다음과 같은 간단한 수신 회로를 구성할 수 있습니다.

IR Receive Circuit - Photo Transistor.png
▲ 적외선 수신 회로

IR_Rx핀은 평상시에는 5.0V로 풀업되어 있다가 적외선이 수신되면 0V(정확히는 수백 mV)로 떨어집니다. 이 회로를 통해서 수신한 신호에는 Modulation Carrier까지 그대로 포함되어 있으므로 이를 MCU에서 처리해 주어야 합니다.

적외선 수신 회로 (적외선 수광 모듈 활용)

적외선 수광 모듈은 적외선 수신과 Demoulation을 위한 BPF가 모두 패키징 되어 있으므로 전원을 연결하고 출력핀을 MCU에 바로 직결해서 사용하면 됩니다.

IR Receive Circuit - 603LM.png
▲ 적외선 수광 모듈(KSM-603LM)을 활용한 수신 회로

이 회로의 출력 신호인 #IR_Rx는 Demoulation된 신호가 반전되어 출력되므로 이에 유의하도록 합니다.


다음 글에서는 IR 리모컨에서 사용하는 적외선 통신 프로토콜에 대해 다루도록 하겠습니다.


연관글
  1. [2016/07/25] [적외선 통신] IR 리모컨 신호 분석 (1358)
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
50 일반 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 TUW 2017.02.26 85
49 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 file TUW 2017.02.26 99
48 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2017.03.20 104
47 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2017.03.20 130
46 일반 [적외선 통신] IR 리모컨 신호 분석 file TUW 2016.07.25 1358
» 일반 [적외선 통신] IR 송수신 소자, IR 송수신 회로 file TUW 2016.07.25 1376
44 일반 GitLab 코드리뷰 페이지 탭 크기(Tab Size) 4칸으로 바꾸기 file TUW 2016.07.05 683
43 일반 Linux에서 Code Composer Studio (CCS) - Ti ARM 개발환경 구축하기 file TUW 2016.06.26 742
42 일반 [GIT] Submodule (Nested Repository) 사용하기 file TUW 2016.07.26 1978
41 일반 정규식(Regular Expression)에 대한 소개와 입문, 튜토리얼 file TUW 2015.09.17 11918
40 일반 [C++] Template Class의 정의(Definition)와 구현(Implementation)은 한 파일 안에 있어야 한다. TUW 2015.11.26 4505
39 일반 [GIT] Patch 만들기 및 적용하기: format-patch, am TUW 2015.01.10 12492
38 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2015.09.24 17764
37 일반 [GIT] 임시 저장소 사용하기: stash TUW 2015.11.27 3255
36 일반 [GIT] 병합하고 Commit 재정렬하기: cherry-pick, rebase, merge file TUW 2015.11.27 10745
35 일반 [GIT] Branch 관리하기: branch, checkout, push, pull TUW 2015.01.10 4233
목록
Board Pagination Prev 1 2 3 4 Next
/ 4

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5