<목표>
아두이노를 사용함에 있어서 적외선 근접센서는 정말 손쉽게 접할 수 있는 센서이다.
쉽게 접할 수 있지만, 사용방법을 모르면 문제가 많은 센서이기도 하다.
LED 이므로 +극과 -극을 정확하게 이해하고 사용해야 하며,
LED 이고 적외선이기에 전압이 많이 흘러버리면 한순간에 타버려 고장나기 일수다.
- 적외선 근접센서 TCRT5000 사용법을 정확하게 이해하고 사용하자.
<센서 원리>
원리는 정말 간단하다.
적외선 LED에서는 항상 적외선 신호를 발사해주고,
물체가 가깝다면 그 적외선 불빛의 반사량을 측정해서
가까운 정도를 측정하는 것이다.
약간 다른 식으로 사용한다면
검은색을 구분하는 센서로 사용하기도 한다.
검은색은 하약색에 비해서 빛을 반사하는 정도가 적기 때문이다.
예를 들면, 라인 트레이싱에 사용되는 것이 대표적이다.
데이터 시트에서 보면 원리를 그림으로 쉽게 이해할 수 있다.
데이터 시트는 위에 있으니, 필요하다면 다운받으시길~!
좌측이 적외선 발광부이고,
우측이 적외선 수신부이다.
수신부는 약간의 트랜지스터 역할을 한다.
적외선이 감지되면
전류를 많이 흘려보낼 수 있게 하는 원리이다.
이 센서를 사용할 때 주의해야할 사항이 있다.
바로 외부의 적외선 신호를 주의해야한다.
요즘 삼성 핸드폰에는 다시 빠졌지만
홍채인식이 되는 기종이라면 핸드폰에 아주 강력한 적외선 LED가 탑재되어 있기에
센서 근처에서 핸드폰을 한다면 노이즈로 잡힐 수 있기 때문이다.
홍채인식 적외선 LED 말고도, 적외선 카메라가 있는 곳이라던지
TV 또는 에어컨 리모컨을 사용하는 환경이라면 주의해서 사용해야 한다.
다른 적외선 신호를 가지고 노이즈로 판단하여 예상치 못한 문제가 생길 수 있다.
차폐를 확실히 하거나
외부 적외선 노이즈를 걸러주는 코드를 작성해야 할 것이다.
<준비물>
- 아두이노(나노, 우노, 메가), 시리얼 통신 케이블, 점퍼선, 브레드보드, LED(없어도 됨), TCRT5000, 저항 (220옴, 10K 옴)
<회로도>
센서가 중국산에서 넘어와서 그런지,,,
데이터 시트에 있는 것과 구성이 좀 달라서 적외선 센서를 몇 개 날려먹었다...
그리고 다리 길이가 다 같아서 어디가 + 인지 명확하지 않은 문제가 있었다...
본 포스트에서는 좀 더 명확히 알려주도록 하겠다.
회로1.
- 데이터 시트에서 소개하고 있는 방법을 이용한 회로;
TCRT5000 의 각진 부분이 바로 적외선 LED 인데,
위에서 본 모습에서 위 회로도와 방향을 같게 한다면
위쪽이 +극이 된다.
기본적으로 발광부와 수광부의 +극 위치는 동일하다.
200 옴을 사용해도 되고,
220 옴을 사용해도 된다.
위의 두개도 없다면 300옴 까지도 괜찮을 수 있다.(테스트는 안 해봄)
200 옴 보다 낮은 저항을 사용하면 발광 LED가 탈 수도 있다.
(필자는 이미 두 개 태워먹었다...ㅠㅠ)
회로2.
- 내가 구매한 TCRT5000의 경우의 회로...
완전 데이터시트와 반대이다.
회로1 방법으로 안 된다면 회로2 방법을 해보면 된다.
실제 회로는 이런식으로 짤 수 있다.
수광과 발광은 5V로 동일하게 연결해주고,
각 저항들을 GND 에 꽂으면 간단하고 쉽게 테스트를 해볼 수 있다.
TCRT5000 의 -극 쪽을 잘 보면
살짝 휘어서 브레드 보드의 다른 열에 꽂히게 하면 된다.
그냥 LED는 작동 테스트 확인을 위해 넣었으므로, 굳이 필요 없고
LED_BUILTIN(=digital pin 13) 을 사용하면 된다.
백색 LED를 사용하려면 적어도 220옴을 연결해주면 된다.
220 옴 보다 더 높은 저항을 사용해주면 된다.
<코드>
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(10);
if(sensorValue>800)
{
digitalWrite(LED_BUILTIN, HIGH);
}
else
digitalWrite(LED_BUILTIN, LOW);
}
sensorValue 값으로 반사되어 입력되는 적외선량이 800 이상이면
백색 LED를 점등시키는 코드이다.
<실행 결과>
작동되는 것을 보면 정말 빠릿빠릿하게 작동하는 모습을 볼 수 있다.
※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!
'코딩 > 아두이노' 카테고리의 다른 글
모스펫으로 DC모터 제어하는 방법 ( IRFZ44N ) (6) | 2020.09.14 |
---|---|
아두이노에서 서보모터 SG-90 사용하는 방법 (0) | 2020.09.14 |
피에조부저 수동, 능동 원리와 아두이노에서의 사용방법 (0) | 2020.05.07 |
초음파센서 HC-SR04 원리와 아두이노에서의 사용방법 (0) | 2020.05.06 |
아두이노 업로딩이 안 된다면! 아두이노 호환보드 CH340&CH341 드라이버 설치! (0) | 2020.05.06 |
댓글