1. 거리 측정기
거리를 측정하는 방법에는 여러가지가 있습니다.
일전에 laser 모듈을 이용하여 측정하는 방법을 구현해 봤습니다.
* Hardware | VL53L0X 레이저 거리 측정 센서 사용해 보기
- http://chocoball.tistory.com/entry/Hardware-VL53L0X-laser-ranging-sensor
다만, 두개의 눈같이 생긴 센서가 자꾸 눈에 들어 옵니다.
로보트를 만든 사람들은 누구나 사용하는 센서인 듯 보이고, Arduino Starter Kit 에도 꼭 포함되어 있는 센서 입니다.
사용해 보지 않을 이유가 없습니다.
궂이 필요성은 없지만 서도...
AliExpress 에서 검색하니 그냥 나옵니다. 흠흠.
* 5Pin HY-SRF05 SRF05 Ultrasonic Distance Sensor Module For Arduino Replace SR04 Electronic Brick Compatible Interface DC 5V
지금까지 구입하지 않고 오래 지났으니, 이제 구입할 시기라고 정당화 하면서 바로 구입합니다.
2. 도착
그리 오래 걸리지 않고 도착했습니다.
한 2주 정도?
뽁뽁이로 잘 쌓여 있고요.
아니 이게... WTF.
왜 너는 pin 들이 죄다 구부러져 있니?
너무 이쁘게 구부러져 있어서 원래 그런거라고 자답 위안을 삼아 봅니다.
3. 외형
앞모습 입니다. 두개의 눈처럼 생겼습니다.
뒷모습.
HC-SR04 버전과 비교해 보면, 조금 더 component 들이 더 많이 있음을 알 수 있습니다.
또한, SRF04 의 업그레이드 버전인 SRF08 도 있습니다.
SRF04 > SRF05 (좀더 정확해짐) > SRF08 (거리가 늘어나고 낮은 ampere)
- http://www.f15ijp.com/2012/09/arduino-ultrasonic-sensor-hc-sr04-or-hy-srf05/
- http://www.junun.org/MarkIII/Info.jsp?item=32
SRF08 은 photoresistor 까지 달려 있네요.
사실은 Ultrasonic 거리 측정기는 제품 넘버링 만큼 많이 있습니다.
- https://www.robot-r-us.com/vmchk/sensor-ultrasonic.html
4. Layout
Pin 연결들은 다음과 같습니다.
HY-SRF05 | Arduino Nano --------------------------- Vcc | 5V Trig | D13 Echo | D12 OUT | GND | GND --------------------------- SSD1306 | Arduino Nano --------------------------- GND | GND VDD | 3.3V SCK | A5 SDA | A4 ---------------------------
회로도는 다음과 같습니다.
짜잔~ 전체 사진입니다.
5. Sketch
소스는 아래 link 를 참조하였습니다.
* Distance Measurement with an Ultrasonic Sensor HY-SRF05
#include "Adafruit_SSD1306.h" Adafruit_SSD1306 display = Adafruit_SSD1306(); const unsigned int TRIG_PIN=13; const unsigned int ECHO_PIN=12; const unsigned int BAUD_RATE=9600; void setup() { pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); Serial.begin(BAUD_RATE); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) // init done display.display(); display.setTextSize(2); display.setTextColor(WHITE); } void loop() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); const unsigned long duration= pulseIn(ECHO_PIN, HIGH); int distance= duration/29/2; if(duration==0) { Serial.println("Warning: no pulse from sensor"); } else { display.clearDisplay(); display.setCursor(0,0); display.print(distance); display.print(" Cm"); display.display(); } delay(500); }
수정한 부분은 output 을 Serical Monitor 가 아닌, OLED 로 표시하는 부분 뿐입니다.
6. 측정
구성을 하고 몇가지 측정해 봤습니다.
오차가 좀 있지만, 조정만 하면 정확한 계측용으로 사용이 가능할 것 같습니다.
20Cm 정도 떨어트린 곳에서 측정해보면 20Cm 정도 나오는 장면입니다.
동영상으로도 찍어 봤습니다.
40Cm > 30Cm > 20Cm > 10Cm > 0 순으로 해봤습니다.
센서 바로 앞은 논리적으로 0Cm 이지만 이상한 값을 뿌려줍니다.
이는 Ultrasonic 을 보내고 받을 수 있는 공간이 나오지 않아서 그런것 같아요.
7. 추가
뜬금없이 사용 전류량을 알고 싶어졌습니다.
전류 측정은 직렬로 연결해야 알 수 있으므로, sensor 의 ground 부분을 멀티미터 +/- 를 통하게 만들어서 측정해 봤습니다.
대략 5.36 mA 가 나오네요.
스펙상으로는 2mA 이하라고 나오는데, 어느쪽이 잘못된건지 모르겠습니다.
측정할 수 있는 최대 거리를 보고자 10m 정도 앞을 비추었더니, 아래와 같이 38m 값이 나옵니다.
유효한 거리는 대략 4m 정도로 보입니다. (스펙에도 4.5 m 로 표기되어 있슴)
오실로스코프를 이용하여 Ultrasonic sound 와 반사파를 측정하는 동영상이 있습니다.
* #40 Ultrasonic Distance Sensors Arduino Tutorial and Comparison for HC-SR04, HY-SRF05, US-015
- https://www.youtube.com/watch?v=aLkkAsrSibo
거리에 따라 Response 값이 변하는 것을 알 수 있습니다.
그치만, 저의 DIY 오실로스코프는 측정하지 못합니다.
DC 에 200 us 이 필요한데, 제가 만든 DIY 오실로스코프는 10us 가 최대치 입니다.
* Hardware | DSO150 Oscilloscope
- http://chocoball.tistory.com/entry/HardwareDSO150Oscilloscope
처음으로 좀더 좋은 Oscilloscope 를 갖고싶다는 생각을 했습니다.
FIN
로보트 등에 많이 사용되는 센서인데, 구동이나 사용법은 간단한것 같습니다.
Ultrasonic 이라서, 귀에 들리지 않는다는 것이 좀 아쉽고 궁금하군요.
(아니 당연한 것을...)
'Hardware' 카테고리의 다른 글
Hardware | Flight Feeder 를 신청해 보자 (15) | 2018.01.19 |
---|---|
Hardware | SSD1309 128x64 1.54" yellow OLED (2) | 2018.01.12 |
Hardware | AliExpress 에서 Ceramic Condenser 를 구입해 보자 (0) | 2017.12.26 |
Hardware | Heating Gun 을 만들어 보자 - 1 (0) | 2017.12.14 |
Hardware | DSO150 firmware update (0) | 2017.12.11 |