임베디드시스템개론 : Arduino 활용 Lecture #8: IR Sensor 활용 2014. 5. 7 by 김영주
강의목차 Photodiode & Phototransistor 적외선을이용한이동체검출실험 적외선을이용한검은띠검출실험 IR Remote 원리 IR Remote 실험 2
3 1. Photodiode & Phototransistor
Photodiode & Phototransistor (1) 포토다이오드 (Photodiode) 특성 SI3311-H(EL-7L) 예시 50[mA] 전류가흐를때 1.3[V] 전압강하, 25[mcd] 광도 파장 950nm 적외선에서상대광도가높음 ( 적외선발광 ) 4
Photodiode & Phototransistor (2) 포토트랜지스터 (Phototransistor) 특성 : ST3811(ST-7L) 베이스에광원이입사되면, 단위면적당빛의세기에비례하여전압및전류특성이변함 그림 (b) 는광원에따른컬렉터 - 이미터전압 (V CE ) 및컬렉터에서이미터로흐르는전류 (I CEL ) 특성을보여줌 적외선영역인약 870[nm] 파장의빛이상대적으로크게반응 620~780[nm] 주파수의적색에반응하므로조명등과자연광에도유의 collect base emit 5
Photodiode & Phototransistor (3) 적외선감지회로 물체움직임감지등많은영역에서적외선감지방법을적용 적외선감지회로 : A 형 컬렉터에흐르는전류 (I CEL ) 은베이스에입사하는조도 (lx) 와비례하는 cm 2 당전력에의해증가적외선이많이들어오면, I CEL 이증가 30[KΩ] 저항의전압강하가커짐 VO 전압은감소 6
Photodiode & Phototransistor (4) 적외선감지회로 적외선감지회로 : B 형 컬렉터에흐르는전류 ICEL은베이스에입사하는조도 (lx) 와비례하는 cm 2 당전력에의해증가적외선이많이들어오면, ICEL이증가 30[KΩ] 저항의전압강하가커짐 VO 전압은증가 VO 전압변화 적외선입사 HIGH 전압 적외선차단 LOW 전압 7
Photodiode & Phototransistor (5) 적외선감지회로사례 : 적외선차단감지회로 Photodiode B/D Phototransister B/D LED Holder 조립모듈 8
Photodiode & Phototransistor (6) 적외선감지회로사례 : 적외선반사감지회로 포토다이오드모듈과포토트랜지스터모듈을 1.25cm 간격으로병렬배치 9
적외선을이용한이동체검출실험 (1) 실험개요 포토다이오드와포토트랜지스터를이용하여이동체의유무를감지하는회로를구성하고테스트한다. 이동체가감지되면 LED 를켜고부저를울리도록한다. 사전요구사항 포토다이오드와포토트랜지스터의특성을이해하여야한다. 아두이노의아날로그입력처리방법을이해하여야한다. LED와 Piezzo Puzzer 제어방법을이해하여야한다. 10
적외선을이용한이동체검출실험 (2) 회로도및회로구성 회로도 RED Led & 330Ω 11 Phototransistor & 33kΩ Photodiode & 330Ω
적외선을이용한이동체검출실험 (3) 회로도및회로구성 회로구성 5 cm 12
적외선을이용한이동체검출실험 (4) 아두이노프로그램 : 이동체검출프로그램 #define NOTE_C4 291 #define THRESHOLD 100 const int ledpin = 2; const int buzzerpin = 11; const irpin = A0; void setup() { pinmode(ledpin, OUTPUT); } void loop() { if (analogread(irpin) < THRESOLD) { digitalwrite(ledpin, HIGH); tone(buzzerpin, NOTE_C4, 250); delay(250); notone(buzzerpin); } else { digitalwrite(ledpin, LOW); } } 13
적외선을이용한이동체검출실험 (5) 실험결과및검토사항 Buzzer 울림을이동체가검출된동안계속되도록수정하여라. Phototransistor 출력에대한 THRESHOLD 값은어떤요인에의해영향을받는가? 14
적외선을이용한검은띠검출실험 (1) 실험개요 포토다이오드와포토트랜지스터의반사감지기능을이용하여검은띠를검출하는회로를구성하고테스트한다. 검은띠가감지되면 LED 를켜고부저를울리도록한다. 라인트레이서 (Linetracer) 의라인검출기능과동일 사전요구사항 포토다이오드와포토트랜지스터의특성을이해하여야한다. 포토트랜지스터가포토다이오드에서방출되는적외선이외의요소에의한영향을받지않도록 LED Holder 등을활용한다. 아두이노의아날로그입력처리방법을이해하여야한다. LED 와 Piezzo Puzzer 제어방법을이해하여야한다. 15
적외선을이용한검은띠검출실험 (2) 회로도및회로구성 회로도는앞의예제와동일함. 회로구성은다음과같이수정한다. 외부물체에의한반사영향을줄이고다른광원의적외선에영향을최소화하기위해수축튜브또는 LED Holder 등을이용하여각소자의외부노출을최소화하도록한다. 포토다이오드와포토트랜지스터는같은방향으로병렬배치한다포토다이오드와포토트랜지스터사이의간격은 1.25cm 정도두도록한다. 16
적외선을이용한검은띠검출실험 (3) 아두이노프로그램 : 검은띠검출프로그램 #define NOTE_C4 291 #define THRESHOLD 20 const int ledpin = 2; const int buzzerpin = 11; const irpin = A0; void setup() { pinmode(ledpin, OUTPUT); } void loop() { if (analogread(irpin) > THRESOLD) { digitalwrite(ledpin, HIGH); tone(buzzerpin, NOTE_C4, 250); delay(250); notone(buzzerpin); } else { digitalwrite(ledpin, LOW); } } 17
적외선을이용한검은띠검출실험 (4) 실험결과및검토사항 라인트레이서의기능을고려하여검은띠를검출하지못할경우에부저와 LED 가켜지도록하였다. 포토트랜지스터의입력전압에대한 THRESHOLD 값이앞의예제와비교하여작아진이유는? THRESHOLD 의정확도를높일수있는방법은? 18
19 2. IR Remote Control
IR Remote Control (1) 개요 가시영역에서원격으로장치를제어하는저비용의방법 가시광선영역아래의 950nm 파장의적외선을캐리어 (carrier) 로사용하여정보를전달하여장치를제어 적외선 (Infra-Red Light) 은장애물의영향을적게받음 IR LED 제작이용이하고저비용 주변에 IR 방출원이많아간섭문제가심함 별도의변조방법이필요 IR 원격제어방식 modulation demodulation 참고사이트 : 20 IR 발신부 IR 수신부 www.sbprojects.com/knowledge/ir/index.php www.righto.com/2009/08/multi-protocol-infrared-remote-library.html www.pjrc.com/teensy/td-libs-irremote.html
IR Remote Control (2) IR 변조 (IR Modulation) 잡음 (noise) 에강인하게신호를전송하기위해특정주파수에맞추어 IR light 소스의 on/off 를통해펄스를생성하여신호를전송 가전장비등에서는주로 30 KHz~ 60 KHz 주파수를사용 잡음제거에효율적 태양, 형광등등주변광에의한오차발생소지를줄임 변조된신호는 space 와 mark 로이루어짐 Space : 적외선신호를전송하지않는구간, 신호전송의시작또는끝등을의미 Mark : 전송주파수에맞추어적외선신호를 on/off 하여펄스신호로전송하는구간, 전달하고자하는정보를의미 21
IR Remote Control (3) IR Remote Control Protocol 전송주파수, 변조방식, 전송코드등의전송규약현재로는기업위주로프로토콜을정의하여사용 NEC, Philips RC5 & RC6, Sony, Sharp 등 NEC 코드전송규약 캐리어주파수 : 38KHz, 1/3 duty rate 전송신호구성 1 시작코드 9ms HIGH, 4.5ms LOW 신호 2 데이터코드열 bit1은2.25ms 폭의신호, bit 0는 1.125ms 폭의신호로송출, 보통 16 bit 데이터를순서대로전송한후에비트반전된정보를재전송 3 반복코드 동일코드를반복적으로전송해야될경우에 반복코드 를송출 22
IR Remote Control (4) IR Transmitter( 발신부 ) 회로 주로 IR 발광다이오드사용 850nm~950nm 파장의 IR LED 사용 실험용 IR LED 사양 직경 (mm) 파장 (nm) 정격전압 (V) 최대전압 (V) 순방향전류 화각 (deg) 5 940 1.36 1.7 100mA +-20 발신회로 원거리전송을위해 Transistor 를이용하여증폭 23
IR Remote Control (5) IR Receiver( 수신부 ) 회로 IR 수광모듈사용 발신부의캐리어주파수에적합하여야함. 주요동작 : 실험용 IR 수광모듈사양 940nm 파장적외선수광, 38KHz 주파수지원정격전압- 4.5~5.5V, 수신화각 - +-45 deg. 수신회로 24
IR Remote Control (6) Multi-Protocol IR Remote Library for Arduino 아두이노에서다양한프로토콜로 IR 코드를송수신할수있는라이브러리 지원프로토콜 : NEC, Sony SIRC, Philips RC5 & RC6, Raw Protocol 추가 protocol 은구현용이 하드웨어구성 발신동작은 PWM Timer 을활용 발광 IR LED 는 PWN pin3 에연결 참고사이트 http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html 25
IR Remote Control 발신 & 수신실험 (1) 실험개요 IR Remote Control Code 발신및수신회로를구성하고, 발신및수신테스트를진행한다. 아두이노 IR Remote Library 를사용한다. 사전요구사항 IR LED 및수신모듈의특성을이해한다. 아두이노 IR Remote Library의동작방식및제약조건을이해한다. IR Remote Control Protocol의종류및특징을이해한다. 26
IR Remote Control 발신 & 수신실험 (2) 회로도및회로구성 회로도 27
IR Remote Control 발신 & 수신실험 (3) 회로도및회로구성 회로구성 28
IR Remote Control 발신 & 수신실험 (4) Arduino IR Remote Library 설치및수정 IR Remote Library 설치 http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html 에서라이브러리프로그램을다운받는다. $HOME/schetchbook/libraries 디렉토리에서압축을해제한다. IR Remote Library 수정 (Arduino version 에유의 ) For Arduino version 1.0, in IRRemoteInt.h, change #include <WProgram.h> to #include <Arduino.h> For Arduino Mega or ADK, In IRremote.cpp, change at line 200, #if defined( AVR_ATmega1280 ) defined( AVR_ATmega2560 ) pinmode(9, OUTPUT); digitalwrite(9, LOW); // When not sending PWM, we want it low #else pinmode(3, OUTPUT); digitalwrite(3, LOW); // When not sending PWM, we want it low #endif Timer2A 사용에따라연결된 PWM pin 모드를변환 29
IR Remote Control 발신 & 수신실험 (5) 아두이노프로그램 : IR Remote Control Code 수신프로그램 #include <IRremote.h> int RECV_PIN = 3; IRrecv irrecv(recv_pin); decode_results results; void setup() { Serial.begin(115200); irrecv.enableirin(); } // pin connected to IR receiver module // Start the receiver void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } } 30
IR Remote Control 발신 & 수신실험 (6) 아두이노프로그램 : IR Remote Control Code 발신프로그램 #include <IRremote.h> IRsend irsend; void setup() { Serial.begin(115200); } void loop() { if (Serial.read()!= -1) { for (int i = 0; i < 3; i++) { irsend.sendsony(0xa90, 12); delay(100); } } } // Sony TV power code 31
IR Remote Control 발신 & 수신실험 (7) 실험결과및검토사항 IR Remoncon Code 수신및발신을동시에수행할수없기때문에다른팀과협력하여실험하여야한다. 발신프로그램에서 NEC code 를발신하도록수정하여라. 수신프로그램에서 NEC code 의 power-on 및 power-off 코드를수신하여 pin 13 에연결된 LED 를 on/off 하도록수정하여라. 32