로봇제작 - 아두이노 PWM 충돌 문제
기존에 합치는 작업으로 테스트 중이었는데 문제가 발생했다.
바로 서보모터 작동 후 DC모터의 한쪽이 멈추는 것이다. 일단 서보모터 작동 후에 반드시 이 오류가 발생한다.
처음에는 초기화가 잘못된 줄 알고 코드만 열심히 고쳐가며 테스트를 했는데 뭔 짓을 해도 같은 오류가 발생하여 난감하였다. DC모터 쪽만 PWM을 주고 나머지 서보모터는 일반 디지털포트만 할당했음에도 문제가 발생했다.
또한 작동 이후 다시 서보모터를 동작시키면 서보 모터쪽도 부르르 떨면서 오작동 된다....;;;;
이에 여러 검색을 해도 잘 안나와서 해외 아두이노 포럼에서 정답을 찾았다.
Problem using both a dc motor and servo
Forget the 9V PP3 block battery. They won't last for more than a few minutes with a motor, if they work at all. A 6xAA battery pack will work fine with the L298, but not with the servo.
forum.arduino.cc
원인은 PWM 타이머 1을 같은 포트에서 사용된다고 한다. 즉, 내가 사용한 9번 10번이 같은 타이머를 사용한다고 한다. 따라서 다른 포트로 겹치지 않게 다시 할당하였다.
다음과 같이 디지털 포트를 변경하였다.
- 서보모터 11번 포트 > 4번 포트
- DC모터 10번 포트 > 11번 포트
그런데 여기서 궁금한 사항이 생기는데 같은 타이머를 써서 문제가 된다고 하는데 왜 PWM을 쓰지 않는 서보모터 사용 후 그 문제가 발생하냐는 것이다.
서보모터를 사용하지 않고 DC모터만 사용했을 때는 문제가 발생하지 않았다..
아직 그 이유는 굳이 찾아보진 않았다.
이제 이부분을 일단은 마무리하고 앱에서 버튼으로 제어하는 것으로 넘어가야겠다.
> 추가 : 동작 하나가 말썽이다... 왜 안되는거지..;;;