본문 바로가기

소프트박스 코딩

소프트박스에서 초음파센서 데이터 확인하기

반응형

 

소프트박스에서 초음파센서 데이터 확인하기

 

초음파 거리센서는 초음파를 대상에게 발사하여 반사되어 오는 반사파를 받을 때까지의 시간을 확인하여 거리를 측정하는 센서다. 초음파 센서는 40KHz의 펄스 신호를 출력하여 반사되어 돌아오는 펄스의 시간을 측정하여 거리를 계산한다. 여기서는 HC-SR04 초음파 센서를 사용한다.

초음파 펄스를 피측정물을 향해 방사하여 물체에서 반사되어 오는 반사파를 받을 때까지의 시간을 계측하여 거리를 측정하는 센서. 초음파거리계는 고체, 액체, 기체 중 어느 것이나 이용할 수 있다. 이 센서의 응용에는 수심의 측정이나 수위의 측정, 기체로는 액면계(液面計)나 수위계, 고체로는 금속의 표면에서 내부결함까지의 거리와 두께의 측정 등이 있다.

 

초음파 센서 핀맵

 

아두이노 메가와 초음파센서 연결도

 

 

 위 그림은 센서의 작동원리를 설명해주는 그림이다. 우선 triger 핀에 10us 정도의 High 신호를 주면 초음파센서는 40khz 펄스를 자동적으로 8번을 발생시키고 펄스를 발생시킨 직후에 echo 핀은 high 되고 반사된 초음파가 감지 되었을때 echo 핀이 low 가 된다. 이 Echo 핀이 high 였다가 low 가 되는데 걸리는 시간을 측정하여서 그 시간을 초음파의 속도/2(즉 58)로 나누면 거리가 나온다. 초음파 센서를 구동하여 거리 데이터를 시리얼 모니터에 출력하는 소스코드이다. 입력을 하고 컴파일하고 업로딩을 하여 결과를 확인해 보자.

 

소프트박스에서 초음파센서의 위치

 

아두이노 스케치 코드
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int echoPin = 9;
int trigPin = 10;
 
void setup() {
    Serial.begin(9600);
    // trig를 출력모드로 설정, echo를 입력모드로 설정
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
}
 
void loop() 
{
    float duration, distance;
  
    // 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다.
    digitalWrite(trigPin, HIGH);
    delay(10);
    digitalWrite(trigPin, LOW);
  
    // echoPin 이 HIGH를 유지한 시간을 저장 한다.
    duration = pulseIn(echoPin, HIGH); 
    // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.
    distance = ((float)(340 * duration) / 10000/ 2;  
  
    Serial.print(distance);
    Serial.println("cm");
    // 수정한 값을 출력
    delay(500);
}
 
cs
 

 

 

반응형