질문게시판 > 초음파 센서 거리측정 스코프 측정 & 소스이해

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

초음파 센서 거리측정 스코프 측정 & 소스이해

페이지 정보

작성자 정기린 작성일18-12-19 18:24 조회9,604회 댓글3건

본문

현재 도와주신 부분을 이해하려 노력하고 책을 뒤적거리며 공부를 하고 있습니다. 

(도움 항상 감사합니다)

 

현재 KUT-128키트의 PC0, PC1   LED두개로 

5cm거리 이상일때 LED0번 점등

미만일때 LED1번 점등

PCA0 - 트리거 PCA1-에코

 

구현을 목적으로 진행중입니다. range값을 5,10,15,30,60cm로 했을때

얼추 맞습니다. 자를 대봤을때 0.5cm~1cm정도를 못맞춘것 같습니다.

 

초음파 센서 트리거와 에코 제가 제대로 파형을 측정하고 있는지

그것과 소스 부분에서의 이해가 부족합니다.

DDRx를  while문 이전에 주면 led가 설정해둔 값 모두 켜져있더군요.

특정 거리가 될때만 키고 싶어서 if문 안에 집어넣어봤습니다.

 

파형 측정과 소스에 대해 조언 부탁드립니다!

거리 측정하는 것 자체를 완벽하게 이해하고 싶습니다.

6f17acd39cd693940eafa095364956f5_1545210766_4066.jpg
6f17acd39cd693940eafa095364956f5_1545210766_4803.jpg
6f17acd39cd693940eafa095364956f5_1545210766_5516.jpg 
 

트리거는 10us의 값이 나옵니다.

HC-SR04가 58us당 1cm로 알고있습니다. 에코 쪽 파형을 측정할때

5cm에 위치해 있을때  윗부분 파형이 290us이 나와야 올바른 것인가요?

 

 

 

현재 코드비전 소스입니다.

 

 

 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include //현재 사용하는 칩(ATMEGA128) 레지스터 불러오기위한 헤더파일
#include 
#include //delay사용하기 위해 사용

#define Trig PORTA.0      //HC-SR04의 트리거 포트A 0번에 연결되어 있음.
#define Echo PINA.1       //에코 포트A의 1번에 연결




/* range의 변수에 측정된 에코값을 58x2= 116 으로 나누어 cm를 계산해주는 함수
*/
unsigned int getEcho(void){
  unsigned int  range;  //펄스 길이값 저장변수
  while(!Echo);         //high가 될때까지 대기
  TCNT1=0; TCCR1B=2;    // 카운터 시작, 8분주 = 0.5us
  while( Echo);         //low가 될때까지 대기
  TCCR1B=0;            //카운터 정지
  range=TCNT1/116; //Cm로 변경
  return(range);
}


/*DDRx 레지스터의 각 비트값(DDxn)은 해당비트(핀)의 입출력 방향을 설정하며,  
  1이면 출력이고 0이면 입력으로 설정된다.
*/

/*PORTxn이 입력핀으로 설정되고 SFIOR 레지스터의 PUD비트가 0인 경우 이 핀에 1을 출력하면
  풀업 저항이 활성화된다. 풀업 저항이 동작하지 않도록 하기 위해서는 PORTxn에 0을 출력하거나
  또는 이 핀이 출력방향으로 설정되어 있어야 한다.
*/


void main(void)
{
     unsigned int range;   //에코에서 측정한cm값 변수
     //DDRC=0b00000011; // LED PC0,PC1
     DDRA=1; // TRIG PCA0
     //PORTC=0x00;
  
    while(1)
    {
    Trig=1; delay_us(10); Trig=0; //10us  
    range=getEcho();  //에코함수 호출
     
    
    /* 5cm초과일 경우 맨끝LED0번 [PC0] 점등
    */
    if(range>5)
    { 
    DDRC=0b00000001;
    PORTC=0b0000001;
    }  
    /* 그렇지 않을경우 LED1번 [PC1]점등*/
    else       
    {   
    DDRC=0b00000010;
    PORTC=0b0000010;
    }
    
    //delay_ms(100);
    PORTC=0; 
    }
}

 

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 3

조회수 : 9,604

master님의 댓글

master 작성일

//delay_ms(100);
딜레이 삭제하면 안됩니다.
에코 신호 측정 후 최소 10ms 이상 주어야하며
50ms 이상으로 인터벌을 줘야지 가끔 이상한 값이 나오는 것이 발생하지 않는 것 같았습니다.
딜레이가 없으면 늦게 반사되는 신호 때문에 오동작합니다.

정기린님의 댓글

정기린 댓글의 댓글작성일

hc-sr04의 데이터시트를 다시 보니 말씀해주신 내용이 있었네요!
꼼꼼히 확인하지 않고 질문올려서 죄송합니다ㅜㅜ 도움 정말 감사합니다.

master님의 댓글

master 작성일

https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo13&wr_id=46
https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo13&wr_id=75
위 두 개의 글 참고하세요

초음파의 전파속도는 음파와 같은데
공기 밀도의 영향을 많이 받습니다.
공기 밀도는 온도의 영향을 받으므로 온도를 매개변수로 사용해서 거리를 측정하면 좀 더 정확한 값을 얻습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 Atmega IO핀 출력 상태 질문이요.. 댓글[3] chelsea 새글 22-07-06
답변 답변 : Atmega IO핀 출력 상태 질문이요.. 댓글[6] master 새글 22-07-06
질문 아두이노 센서 쉴드 v5.0 과 음성인식 모듈(V2)통… 댓글[6] 첨부파일AutoSun  22-07-05
질문 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니… 첨부파일뉴비에오  22-07-04
답변 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질… 댓글[2] master  22-07-05
질문 아두이노 Sensor Shield 5.0 시리얼 통신 … 댓글[2] AutoSun  22-07-04
질문 Atmega 코드 좀 봐주세요. 댓글[1] 첨부파일chelsea  22-07-04
질문 아두이노 while문 탈출 질문 yhj2644  22-07-01
답변 답변 : 아두이노 while문 탈출 질문 댓글[8] master  22-07-01
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의… 댓글[3] cansad  22-06-30
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의 댓글[3] cansad  22-06-30
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[2] 첨부파일오소로롯  22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 412904  22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전