슬라이드 1 - 동서대학교kowon.dongseo.ac.kr/~seewhy/elec_phys/… · ppt file · web...

17
2015 년 2 년년 - DSU 년년년년년년 년년년년년 - PULSE 4 년년년년년년 11 년년 – 년년년 년년 년년 년년

Upload: trinhdang

Post on 30-Mar-2018

215 views

Category:

Documents


2 download

TRANSCRIPT

2015 년 2 학기

- DSU 메카트로닉스 융합공학부 -

PULSE 4전자물리실험11 주차 – 초음파 거리 측정 실험

2

1. 실험 주제 아두이노와 초음파 센서를 이용한 거리 측정 초음파 센서의 Echo 펄스를 오실로스코프로 측정하여 거리

계산 초음파센서를 이용한 거리측정에서 10cm 마다 다른 소리를

내고 LED 가 켜지는 실험

3

2. 기초이론2.1 초음파 사람이 들을 수 있는 소리의 주파수 ( 가청 주파수 ) 는 16~20,000Hz 이다 . 초음파 (ultrasonic sound) 는 주파수가 20 kHz 이상으로 사람의 귀로

들을 수 없는 음파이다 . 초음파의 고유한 성질은 가청 범위의 음파와 같다 . 그러나 주파수가 높고 파장이 짧기 때문에 상당히 강한 진동이 발생되는

특징을 지니고 있다 . 응용 : 비파괴검사 기기 , 어군탐지기 , 세척기 수중 소나 (SONAR): sound navigation and ranging 유량 측정 , 질병 진단과 치료 , 모터 , 용접

4

2.2 초음파의 특징 파장이 짧아서 지향성 , 직진성이 높다 . 주파수가 높을수록 빔의 분산각은 줄어든다 . 주파수가 낮을수록 투과력은 높아지고 멀리 전파한다 . 전파속도가 일정하다 . ( 공기중 340m/s, 고체중 5000m/s 이상 ) 투과매질이 다양하다 . ( 기체 , 액체 , 고체 , 투명체 , 불투명체 ) 액체와 고체의 경계면에서 반사 , 굴절 , 회절 성질을 가진다 . 철사 , 로프 , 체인 , 가느다란 돌출봉 등 음파가 반사될 수 없는 가는 물체나 솜 ,

스펀지 , 섬유 , 눈 등 음파를 흡수하는 물체는 초음파로 감지할 수 없다 .

5

2.4 초음파 발생 원리 초음파를 전자기적으로 발생시키고 이를 감지하기 위해 압전효과를 이용 압전소자는 응력에 의해 전기적 분극을 일으키는 압전현상과 전압에 의해 기계적 변형을 일으키는

역압전현상을 갖는다 . 초음파 센서는 송신부에서 발생한 음파가 물체에 반사되어 수신부로 되돌아오는 원리를 사용한다 . 초음파을 보낼 때는 역압전현상을 이용하고 , 초음파을 받을 때는 정압전현상을 이용한다 . 역압전현상은 압전소자에 전압 +, - 를 짧은 시간 동안 교차시켜서 진동을 만드는 것이다 . 함수발생기에서 교류전압과 같이 전압 +, - 를 짧은 시간 동안 교차하여 걸어주면 압전소자의

변형과 원형이 교대로 일어나고 이것이 진동에너지가 되어 초음파를 발생시킨다 . 정압전 현상은 진동자에서 파동을 받을 때 전압이 발생하는 것이다 .

6

[ 그림 ] 초음파 센서를 이용한 거리측정의 원리

7

2.5 초음파 센서를 이용한 거리 측정의 원리

대부분의 거리 측정용 초음파센서는 40kHz 의 초음파를 발생

음파가 물체에 부딪쳐 되돌아올 때까지의 시간을 측정함으로써 물체까지의 거리를

측정한다 . 음파는 15℃ 에서 초당 약 340m/s 의 속도를 가지며 거리 측정시 반드시 속도에

대한 정보가 필요하다 . 초음파 속도 ( 이론치 ) V (m/s) = 331.5 + 0.6×T (oC)

일반적으로 Δt 초 동안 발신된 주파수가 물체에 부딪쳐 다시 수신되기까지의

거리는 V(340m/s)×Δt(s) 이지만 이 거리는 초음파를 발신해 수신된

왕복거리이므로 이것을 2 로 나눈 다음 값이 이 물체까지의 거리가 된다 .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 대

컴퓨터 1 대

오실로스코프 1 대

부품

초음파 센서 HC-SR04 1 개

LED 3 개

저항 220Ω( 혹은 330) 3 개

압전 부저 (Piezo

Buzzer)KPX-1205 ( 입력전압 : 5Vdc) 1 개

자 거리 측정용 1 개

13

실험 2. 초음파 센서의 Echo 신호 폭 측정을 통한 거리계산 ( 오실로스코프 이용 )

실험 1. 아두이노 우노 보드를 이용한 거리측정 ( 아두이노 , 초음파센서 등 )

실험 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(50); // 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

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(LED1,HIGH);digitalWrite(LED2,HIGH);Serial.println("D sound");}else if ((distance > 20) && (distance <= 30)) { // 거 리 가 20cm 보 다 크 고 30cm 이내이면 ' 미 ' 소리가 나고 LED1, LED2, LED3 이 켜짐tone(speakerPin, E);digitalWrite(LED1,HIGH);digitalWrite(LED2,HIGH);digitalWrite(LED3,HIGH);Serial.println("E sound");}delay(50); // 500msec 시간 지연ledoff();}