728x90
반응형

이번에 내용은 초음파센서를 이용한 거리측정입니다.

초음파는 20khz이상(가청주파수 위) 주파수를 이용한 센서이며, 보통 거리나 앞에 장애물을 인식하는 센서로 이용됩니다.

 

사용할 초음파센서에 전기적인 특성부터 확인.

-전원 : 5V

-측정각도 : 15도

-트리거에 입력 받는 펄스 시간 : 10uS

-거리 계산식 : (high level time×velocity of sound (340M/S) / 2

구성도

코딩

int trig = 3;

int echo = 4;

void setup() {

pinMode(trig, OUTPUT);

pinMode(13, OUTPUT);

pinMode(12, OUTPUT);

pinMode(11, OUTPUT);

pinMode(10, OUTPUT);

pinMode(9, OUTPUT);

pinMode(8, OUTPUT);

pinMode(7, OUTPUT);

pinMode(6, OUTPUT);

pinMode(echo, INPUT);

Serial.begin(9600);// 9600bps 초당 비트 전송 속도

}

void loop() {

digitalWrite(trig, HIGH);

delayMicroseconds(10);

digitalWrite(trig, LOW);

int distance=pulseIn(echo, HIGH)/58; //거리=속도x시간 , 초음파는 초당 340m로 반응 340mx1s=340m/s

//1cm(0.01m)=340m/초 ,T=D/S, T=0.01/340 29.42us 즉 1cm에 29.42us이다.

//340m/s -> cm/us로 변환 -> 34000cm/s -> 34000*10^-6 -> 0.034cm/us

if(distance>13)

digitalWrite(13, HIGH);

else

digitalWrite(13, LOW);

if(distance>12)

digitalWrite(12, HIGH);

else

digitalWrite(12, LOW);

if(distance>11)

digitalWrite(11, HIGH);

else

digitalWrite(11, LOW);

if(distance>10)

digitalWrite(10, HIGH);

else

digitalWrite(10, LOW);

if(distance>9)

digitalWrite(9, HIGH);

else

digitalWrite(9, LOW);

if(distance>8)

digitalWrite(8, HIGH);

else

digitalWrite(8, LOW);

if(distance>7)

digitalWrite(7, HIGH);

else

digitalWrite(7, LOW);

if(distance>6)

digitalWrite(6, HIGH);

else

digitalWrite(6, LOW);

delay(100);

}

초음파데이터 사양서를 보게되면 에코는 트리거에서 나가고 반사되는 하이레벨을 읽는 것입니다.

주석으로 시간을 구하는 방법과 속도로 변환하는 방법 2가지를 남겨 두었습니다.

트리거 신호가 us이기때문에 에코도 us로 변환해서 계산하시면됩니다.

 

 

아두이노 초음파 거리 측정

 

반응형

+ Recent posts