Analog out 거리 센서 (3종)
거리 잴 때 초음파 센서 많이 사용하시죠? 저도 거리 측정용 센서는 초음파 센서 뿐입니다만, 이 외에도 쉽게 사용할 수 있는 센서들이 있습니다. 특히 여기 소개할 거리 센서들은 측정값을 Analog out 핀으로 출력해주므로 아두이노의 analog 핀으로 읽어서 쉽게 거리로 변환할 수 있기 때문에 다루기 편리한 센서들입니다.
새롭게 소개할 거리측정 센서들은 다음과 같습니다.
- Maxbotix LV-EZ0 Ultrasonic Range Finder
- Sharp GP2Y0A21YK Infrared Proximity Sensor
- QRD1114 infrared emitter / Phototransistor combo
1. LV-EZ0
LV-EZ0 센서는 초음파를 이용한 거리측정 센서입니다. 측정된 물체의 거리에 따라 전압(voltage out) 값이 선형적으로 변하기 때문에 analogRead()로 읽은 값을 쉽게 거리로 변환할 수 있습니다.
다만 이 센서는 측정 거리가 길수록 대상 물체의 사이즈가 커야하는 단점이 있습니다. 예를 들어 8ft 거리에선 손가락 크기 이상, 20ft 이상에서는 A4 사이즈 이상이 되어야 하는 것 같습니다. 센서의 측정 범위는 0 ~ 255 inches (0 to 6.45m)이고 1 inch 의 해상도(측정 단위)를 가지고 있습니다. 그리고 초당 20회 측정합니다.
이 센서는 측정 거리, 해상도에 따라 다양한 버전이 존재하므로 아래 링크를 참고해서 선택하면 되겟습니다.
http://www.sparkfun.com/search/results?term=Maxbotix&what=products
2. Sharp GP2Y0A21YK 초음파 근접 센서
이 센서는 적외선을 쏘았을 때 반사되어 들어오는 양을 측정해서 알려주는 센서입니다. 핀이 JST 소켓 타입으로 되어 있어서 아두이노에 쓰기 불편한 면이 있습니다.
센서 앞에 물체가 없거나 3ft(약 91.44cm) 이상 떨어진 경우 analog 출력이 0V가 됩니다. 그리고 물체가 다가오면 값이 점점 커집니다. 4inch(10cm)에서 약 630의 값이 읽힐 겁니다.
이 센서는 저렴하고 연결도 간단하지만 반면에 analog 출력이 거리에 따라 선형적으로 변하질 않습니다. 그리고 TV 리모컨 등에 의해 영향을 받으며, 4inch 이내로 물체가 다가오면 오동작하는 경우가 발생한다고 합니다. 이 센서도 측정 거리에 따라 여러가지 버전이 존재합니다. (단거리, 중거리, 장거리 3종류가 있는듯)
3. QRD1114 적외선 송수신기
적외선 LED와 포토트랜지스터로 이루어진 간단한 모듈입니다. 너무 간단한 나머지… 연결할 때 저항 2개를 사용해줘야 합니다. 아래 링크에서 연결 방법을 확인하세요.
http://bildr.org/2011/03/various-proximity-sensors-arduino/
측정 거리도 짧아서 0~3cm 근접 거리만 측정합니다. 아두이노에서 analog 핀으로 읽으면 600~1024 값이 나옵니다. 이 센서는 앞선 샤프 센서처럼 정확한 거리를 측정하기 위한 센서가 아니라 물체가 매우 근접했는지 정도만 확인하는데 쓰입니다.
그리고 이 센서는 근접 상태에서 적외선 반사량으로 white-black을 구분할 수 있기 때문에 Line-tracer 와 같은 장치를 만들 때 쓰이기도 합니다. 이런 목적으로는 형제 모듈인 QRE1113 모듈을 사용하세요. https://www.sparkfun.com/products/9453
이 센서는 야외나 조명과 같이 적외선 측정량에 영향을 주는 환경에서는 사용하기 힘들지만 손가락 움직임을 측정하는 터치 버튼등을 만들 때 유용하기도 합니다.
4. 소스코드 (스케치)
아두이노의 analog 핀 값을 읽어서 센서의 종류에 따라 적절히 거리로 변환해 사용하시면 됩니다. 기본이 되는 코드는 아래와 같습니다.
int sensorPin = 0; // A0 pin void setup(){ Serial.begin(9600); } void loop(){ int val = analogRead(sensorPin); Serial.println(val); delay(100); // 센서에 따라 측정 가능한 간격이 있는 경우 delay 사용 }
샤프 GP2Y0A21YK0F, GP2Y0A41SK 센서의 경우 analog 측정값을 거리로 환산할 때 아래 라이브러리를 사용하시면 됩니다.
https://github.com/jeroendoggen/Arduino-distance-sensor-library