Download presentation
Presentation is loading. Please wait.
Published byHadian Hartono Lesmana Modified 5년 전
1
2015년 2학기 PULSE 4 전자물리실험 11주차-초음파거리측정 실험 - DSU 메카트로닉스 융합공학부 -
2
1. 실험주제 • 아두이노 우노 보드와 초음파 센서를 이용한 거리측정 초음파 센서의 Echo 펄스를 오실로스코프로 측정하여 거리 계산 • 초음파센서를 이용한 거리측정에서 10cm 마다 다른 소리를 내고 LED가 켜지는 실험
3
2. 기초이론 2.1 초음파 사람이 들을 수 있는 소리의 주파수(가청 주파수)는 16~20,000 Hz이다.
초음파(ultrasonic sound)는 주파수가 20 kHz 이상으로 사람의 귀로 들을 수 없는 음파이다. 초음파의 고유한 성질은 가청범위의 음파와 같다. 그러나 주파수가 높고 파장이 짧기 때문에 상당히 강한 진동이 발생되는 특징을 지니고 있다. 초음파는 비파괴 검사 기기, 수중 소나, 어군탐지기 등과 같은 물체인식, 거리측정, 유량측정, 질병 진단과 치료 등 거리 정보에 기반한 응용과 세척기, 가습기, 용접, 모터 등에 많이 이용되고 있다.
4
2.2 초음파의 특징 ■ 파장이 짧아서 지향성, 직진성이 높다. ■ 주파수가 높을수록 빔의 분산각은 줄어든다. ■ 주파수가 낮을수록 투과력은 높아지고 멀리 전파한다. ■ 전파속도가 일정하다. (공기중 340m/s, 고체중 5000m/s 이상) ■ 투과매질이 다양하다. (기체, 액체, 고체, 투명체, 불투명체) ■ 액체와 고체의 경계면에서 반사, 굴절, 회절 성질을 가진다. ■ 철사 줄, 로프, 체인, 가느다란 돌출봉 등 음파가 반사될 수 없는 가는 물체나 솜, 스펀지, 섬유, 눈 등 음파를 흡수하는 물체는 초음파로 감지할 수 없다.
5
2.4 초음파 발생 원리 초음파를 전자기적으로 발생시키고 이를 감지하기 위해 압전효과를 이용
압전소자는 응력에 의해 전기적 분극을 일으키는 압전현상과 전압에 의해 기계적 변형을 일으키는 역압전현상을 갖는다. 초음파 센서는 송신부에서 발생한 음파가 물체에 반사되어 수신부로 되돌아오는 원리를 사용한다. 초음파을 보낼 때는 역압전현상을 이용하고, 초음파을 받을 때는 정압전현상을 이용한다. 역압전현상은 압전소자에 전압 +, -를 짧은 시간 동안 교차시켜서 진동을 만드는 것이다. 함수발생기에서 교류전압과 같이 전압 +, -를 짧은 시간 동안 교차하여 걸어주면 압전소자의 변형과 원형이 교대로 일어나고 이것이 진동에너지가 되어 초음파를 발생시킨다. 정압전 현상은 진동자에서 파동을 받을 때 전압이 발생하는 것이다.
6
[그림 ] 초음파 센서를 이용한 거리측정의 원리
7
2.5 초음파 센서를 이용한 거리 측정의 원리 대부분의 거리 측정용 초음파센서는 40kHz의 초음파를 발생
음파가 물체에 부딪쳐 되돌아올 때까지의 시간을 측정함으로써 물체까지의 거리를 측정한다. 음파는 15℃에서 초당 약 340m/s의 속도를 가지며 거리 측정시 반드시 속도에 대한 정보가 필요하다. 초음파 속도(이론치) V = ×T(oC) 일반적으로 Δt초 동안 발신된 주파수가 물체에 부딪쳐 다시 수신되기까지의 거리는 V(340m/s)×Δt(s) 이지만 이 거리는 초음파를 발신해 수신된 왕복거리이므로 이것을 ½한 L=V×Δt×½ 이 물체까지의 거리가 된다.
8
2.6 초음파 센서의 종류 2.6.1 개방형 초음파 센서 개방형 초음파 센서는 진동판의 압전 세라믹, 전극판이 샌드위치형으로 형성되어 콘형의 정진자를 결합한 복합 진동체를 실리콘 접착제에 의해 베이스에 탄성있게 고정시킨 후 케이스에 수납한 구조로 만들어진다.
9
2.6.2 밀폐형 초음파 센서 개방형 초음파 센서는 옥외에서 비에 의한 물방울 ,오염물질 먼지의 부착용 등에 문제가 있어 사용하기가 곤란하며 이 문제를 해결하기 위해서는 금속 케이스에 압전 세라믹을 부착하고 베이스에는 흡음재를 붙여 만든 것이 밀폐형 초음파 센서이다. 밀폐형 초음파 센서는 자동차의 범퍼에 내장한 거리계 등에 사용되고 있다.
10
2.7 HC-SR04 초음파 센서 HC-SR04 초음파 센서의 제원 - 입력 전압 : 5V DC
- 대기 상태에서의 전류 : < 2mA - 유효 측정 각도 : < 15o - 유효 측정 거리 : 20 ~ 5,000 mm - 측정 해상도 : 3 mm - 무게 : 15 g 크기 : 20 mm×43 mm×15 mm
11
동작원리 모듈에 DC 5V 전원을 인가한 후, Trig 핀을 통해 10us 의 펄스를 인가
초음파 센서는 8개의 40 kHz 펄스를 발생 측정된 거리에 따라 150us ~ 25ms의 펄스(펄스 폭은 방해물까지 왕복시간에 해당)를 Echo 핀을 통해 출력 - 초음파 센서 앞에 방해물이 없다면 38 ms의 펄스를 Echo 핀을 통해 발생 거리 L(cm) =V×Δt×½=340m/s×100cm*Δt(μs)*10^(-6)×½ = Echo 핀 출력 시간(μs) / 58
12
3. 실험 장비 및 부품 실험장비 아두이노 우노 1대 컴퓨터 오실로스코프 부품 초음파 센서 HC-SR04 1개 LED 3개
저항 220Ω(혹은 330) 압전 부저(Piezo Buzzer) KPX-1205 (입력전압: 5Vdc) 자 거리 측정용
13
실험에 대한 자세한 방법은 교재 참조 실험 1. 아두이노 우노 보드를 이용한 거리측정 (아두이노, 초음파센서 등)
실험 1. 아두이노 우노 보드를 이용한 거리측정 (아두이노, 초음파센서 등) 실험 2. 초음파 센서의 Echo 신호 폭 측정을 통한 거리계산 (오실로스코프 이용) 실험 3. 거리 10 cm 마다 다른 소리를 내고 LED가 켜지는 실험 (아두이노, 초음파센서 등) 실험에 대한 자세한 방법은 교재 참조
14
6.2 Ultrasonic_Sensor_Example.ino
#define trigPin 12 // 트리거 출력 포트 번호 #define echoPin 13 // 에코 입력 포트 번호 void setup() { Serial.begin (9600); // 시리얼 포트 9600 속도 초기화 pinMode (trigPin, OUTPUT); // 지정된 트리거 출력 포트 번호를 출력으로 설정 pinMode (echoPin, INPUT); // 지정된 에코 입력 포트 번호를 입력으로 설정 } void loop() { int duration, distance; // duration을 지속시간, distance를 거리 변수로 정의 // 트리거 신호를 발생 digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // pulsein() 함수는 지정된 포트가 HIGH가 될 때까지의 시간을 microsecond 단위로 반환해주며 이 값을 duration 변수에 저장함 distance = (duration/2) / 29; // 측정된 에코 신호를 이용하여 거리를 계산함 if (distance >= 200 || distance <= 0) { Serial.println("Out of range"); // distance 변수값이 0보다 작거나 200보다 크면 "out of range"를 시리얼모니터로 출력함 } else { Serial.print(distance); // 거리를 시리얼모니터로 출력 Serial.println(" cm"); delay(500); // 500msec 시간 지연
15
6.3 Ultrasonic_Sensor_LED_Buzzer_Example.ino
#define trigPin 12 // 트리거 출력 포트 번호 #define echoPin 13 // 에코 입력 포트 번호 #define speakerPin 2 // 압전 부저 출력 포트 번호 #define LED1 8 // LED1 출력 포트 번호 #define LED2 9 // LED2 출력 포트 번호 #define LED3 10 // LED3 출력 포트 번호 #define C 262 // '도' 주파수 #define D 294 // '레' 주파수 #define E 330 // '미' 주파수 void ledoff(void) // LED1, LED2, LED3을 모두 끄는 함수 { digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); } void setup() { Serial.begin (9600); // 시리얼 포트 9600 속도 초기화 pinMode (trigPin, OUTPUT); // 지정된 트리거 출력 포트 번호를 출력으로 설정 pinMode (echoPin, INPUT); // 지정된 에코 입력 포트 번호를 입력으로 설정 pinMode (speakerPin, OUTPUT); // 지정된 압전 부저 출력 포트 번호를 출력으로 설정 pinMode (LED1, OUTPUT); // 지정된 LED1 출력 포트 번호를 출력으로 설정 pinMode (LED2, OUTPUT); // 지정된 LED2 출력 포트 번호를 출력으로 설정 pinMode (LED3, OUTPUT); // 지정된 LED3 출력 포트 번호를 출력으로 설정
16
int duration, distance; // duration을 지속시간, distance를 거리 변수로 정의
void loop() { int duration, distance; // duration을 지속시간, distance를 거리 변수로 정의 // 트리거 신호를 발생 digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // pulsein() 함수는 지정된 포트가 HIGH가 될 때까지의 시간을 microsecond 단위로 반환해주며 이 값을 duration 변수에 저장함 distance = (duration/2) / 29; // 측정된 에코 신호를 이용하여 거리를 계산함 if (distance >= 200 || distance <= 0) { Serial.println("Out of range"); // distance 변수값이 0보다 작거나 200보다 크면 "out of range"를 시리얼모니터로 출력함 } else { Serial.print(distance); // 거리를 시리얼모니로 출력 Serial.println(" cm"); Serial.println(); if ((distance > 30) || (distance < 0)) { // 거리가 0보다 작거나 30cm보다 크면 소리가 안나고 LED가 안켜짐 noTone(speakerPin); Serial.println("no sound");
17
else if ((distance > 0) && (distance <= 10)) { // 거리가 10cm 이내이면 '도'소리가 나고 LED1이 켜짐
tone(speakerPin, C); digitalWrite(LED1,HIGH); Serial.println("C sound"); } else if ((distance > 10) && (distance <= 20)) { // 거리가 10cm보다 크고 20cm 이내이면 '레'소리가 나고 LED1과 LED2가 켜짐 tone(speakerPin, D); digitalWrite(LED2,HIGH); Serial.println("D sound"); else if ((distance > 20) && (distance <= 30)) { // 거리가 20cm보다 크고 30cm 이내이면 '미'소리가 나고 LED1, LED2, LED3이 켜짐 tone(speakerPin, E); digitalWrite(LED3,HIGH); Serial.println("E sound"); delay(500); // 500msec 시간 지연 ledoff();
Similar presentations