2011년9월14일_ARM_AT91SAM7S256 MCU PIOA로 SRF05모듈에 주기적인 트리거를 주고 Echo Output핀의 파형을 오실로스코프로 측정해보자. (펄스만 발생가능하면 어떤 MCU나 기기라도 관계없음)
실험장비의 세팅의 상기와 같이 단순하다.
필요한 부품은 USB케이블로 부터 전원을 공급받아 동작하는 AT91SAM7S256 MCU와 SRF05초음파센서모듈이 전부이다.
AT91SAM7S256 MCU에는 PA31포트로 아래와 같은 규칙적인 파형이 발생하도록 프로그래밍되어 있다.
실측을 해보니 for문에 10만의 값을 넣으면 60ms정도이고 1만을 넣으면 6ms정도이다.
100만을 넣었을 때 0.5초보다 길게 느껴졌는데 확실히 20%정도 더 길었다.
실험을 끝내고 보고서를 쓰려고 보니 남긴 사진에 입력파형(상기코드)의 정보를 얻을 수 있는 것이 없었다.
나도 참 왜 사진을 남기지 않았는지 모르겠네...
다시 집에 가서 파형에 대한 기록을 남겨야겠다.
실험방법은 AT91SAM7S256 MCU에서 발생한 파형을,
우선 측정해 이상이 없나 확인하고 SRF05센서의 트리거입력에 연결한다. 트리거입력핀을 오실로스코프의 ch1에 연결한다.
그리고 센서의 에코출력은 오실로스코프의 ch2에 연결한다.
상기의 코드를 봐도 알겠지만 신호의 주기가 너무 길다.
디지털스토리지오실로스코프라면 쉽게 측정이 가능하겠으나...
내가 가진건 아날로그 오실로스코프이다.
그래서 동기를 맞추는데 많이 힘들었다.
보다 경험이 많은 전문가라면 이런 파형을 쉽게 측정하는 방법을 알고 있을 것이나 나는 아마츄어라서 ㅠㅠ
상기 왼쪽사진은 time = 2ms/DIV, ch1과 ch2 모두 2V/DIV에 맞추고 측정한 것이다. (싱크를 맞추느라 고생했다 ㅠㅠ)
오른쪽 사진은 time = 1ms/DIV에 *10을 하여 확대한 것이다.
http://sumanaki.tistory.com/202 (SRF05를 사용한 거리측정)
프로그래밍을 하면서 생긴 의문이 트리거입력과 에코출력 사이의 시간에 에코출력이 하나 더 있지 않나 했었다.
그래서 인터럽트루틴안에 발생한 인터럽트를 한 번은 무시하도록 하여 성공적인 결과를 얻었으나..
다시 데이터시트를 봐도 그런 이야기가 없다. 이는 뭔가 잘 못 된 것이다.
그래서 생각한 것이 SRF05센서의 출력을 전문장비로 측정하여 확실하게 하는 것이다.
일종의 검증단계라고 보면 된다.
상기의 결과를 보면 알겠지만 내 생각이 틀렸다. 센서의 출력은 데이터시트대로 나온다.
CM샘과 세선의 힌트를 받아 보니..
인터럽트 초기화가 잘 못 되었다는 것이다. 예전에 점퍼선으로 입력받을 때도 이상하게 동작하더니..
아직 AT91SAM7S256 MCU에 대한 이해가 완벽하지 않아 이런 실수를 범하게 되었다. 반성하자...
이에 대한 문제해결법과 코드는 다음 포스트에 남기겠다. (왜? 포스트수가 늘어나니까!)
아래는 실험과정 동영상...센서에 손을 가까이 갔다대면 ch2의 펄스폭이 줄어들고 멀리하면 늘어난다.
급변하는 것은 손을 피해 천장에 반사된 것이다.