20140516 (초음파 모듈)

62일차









--------------------------

ATMega128 초음파 모듈

--------------------------



--- 초음파 모듈


물체와 거리를 구하는 LCD에 쏴주는 것 실습.



- 소스 구현



trigger 신호를 보내면 초음파 모듈이 작동을 시작해

초음파를 쏜다.

쏘기 시작한 시간부터

Echo output pin으로 H 신호를 보내기 시작하여

쐈던 초음파가 돌아왔을 때

Echo output Pin으로 L 신호를 보낸다.






- Pin 설정을 하고 타이머를 우선 시작해 둔다.

타이머 발동시 


이 함수가 실행되는데
1cm마다 이 함수를 부른다.




쏘기 시작한 시간부터 돌아온 시간까지

시간을 세어 음파을 속도와 관계하여

거리를 구할 수 있다.




음속이 1cm만큼 가는데 29.411 마이크로초 만큼 걸린다.

거리를 측정할 것이므로 왔다 갔다하니

1cm당 58.82... us 가 걸린다.


위에 그림에서 밑에 표는 58 us 시간 만큼 걸리는 clock 갯수와 오차이다.

당연히 분주비가 낮은게 오차가 적은데 클럭 개수가 너무 많아진다.

ATMega128의 MCU가 8bit 이므로 255값을 넘길 수가 없다.

따라서 제일 적합한 분주비 8로 설정한다.


- 분주비 8 설정, 걸리는 클록 갯수 118 설정 소스.




- 음파가 돌아온 porte가 int6과 같은 핀을 사용하므로

음파가 돌아왔을 때 int6도 발생한다.

이때 H -> L 로 변화하는 신호를 감지해야 하므로

falling 신호때 인터럽트 발생 설정하고,

인터럽트 시작 설정한다.




- trigger 신호 보내는 소스.

10us 만큼 유지해야 하는데

우선 그냥 그 이상만큼 시간을 줘도 무방하니 대충 준다.




- 이제 Int7 인터럽트가 발생하면

다음 함수를 실행한다.





- 전체 소스


Adc.c


Adc.h


Int.c


Int.h


Lcd.c


Lcd.h


main.c


Makefile


smart.h


Tc.c


Tc.h


Usart.c


Usart.h


Usonic.c


Usonic.h


'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글

20140520 (make, makefile 실습)  (0) 2014.05.20
20140519 (make, makefile)  (0) 2014.05.19
20140515 (초음파 모듈)  (0) 2014.05.15
20140514 (타이머/카운터 Reg)  (0) 2014.05.14
20140513 (타이머, 카운터)  (0) 2014.05.13

설정

트랙백

댓글