블로그 이미지
래머
오늘도 열심히 개발하는 개발자입니다.

calendar

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

Notice

2015. 2. 9. 22:00 아두이노

스마트폰과아두이노를 연결시키는 가장손쉬운 방법은 블루투스 모듈사용인듯하다.

굉장히 유명한 놈이니 어떻게 사용하는지는 조금만 검색해봐도 자료들이 널려 있다.

소프트웨어 시리얼을 사용하는 방법과 하드웨어 시리얼을 사용하는 방법이 있는데,

흔히들 소프트웨어 시리얼을 이용해서 많이 사용하는듯하다.

나도 소프트 웨어 시리얼형태로 이용을 했었는데,

블루투스 통신때 서보모터가 틱틱 튀는 현상이 발생해서 몇일 고생하다가 하드웨어시리얼로 바꾸고 나서 문제가 사라졌다.

몇일 고생해가며 소프트웨어 시리얼 라이브러리 서보모터 제어 라이브러리 분석을 해보고나서 내린결론은 다음과 같다.

 

소프트웨어 시리얼과 서보제어 라이브러리는 둘다 인터럽트를 통해서 제어를 수행한다.

소프트웨어 시리얼 라이브러리 소스를 보면 데이터를 전송할때 전역 인터럽트 플래그를 켰다 껏다하게 된다. 만일 전역인터럽트 마스크가 클리어된다면 클리어된 시간동안은 다른 인터럽트가 수행될 수 없게 된다. 서보라이브러리는 타이머 인터럽트를 통해서 서보모터 제어 신호를 생성하는데

소프트웨어 시리얼이 write를 수행하면서 인터럽트를 꺼버리면 서보라이브러리의 타이머 인터럽트가 수행될 수 없게 되고, 결과적으로 서보라이브러리가 생성하는 서보모터 제어 PWM신호가 늘어지게 되고 서보모터가 튀는 형태로 나타나게 된다. 서보 모터가 튀는 현상을 관찰해보면 서보모터의 각도가 증가 하는 방향으로 튀는 현상을 볼 수 있는데, 역시 제때 PWM신호를 컨트롤 하지 못해서 PWM신호가 늘어졌다는것을 간접적으로 확인해주는것이다.

해결방법은 소프트웨어 시리얼과 서보모터 제어 라이브러리를 같이 쓰지 않는것이다.

 

posted by 래머