아틱보드에서 PWM을 이용한 SG90 모터 제어
본 튜토리얼의 전체 PDF는 다음의 링크에서 참고하실 수 있습니다.
https://goo.gl/JVMp9q
SG90이라는 서보모터는 PWM을 통해서 원하는 각도로 모터의 축을 회전하는
기능을 합니다. 이 때, 사용하는 PWM은 Pulse Width Modulation으로 1.5V, 3.1V와 같은 전압을 빠르게 0과 5V를 일정한 비율로 빠르게 조정하면서 아날로그와 비슷한 신호를 디지털 신호로 만드는 역할을 합니다.
우리가 사용하는 아틱 보드 및 마이크로컨트롤러가 디지털 장비이기 때문에 출력을 논리적으로는 0과
1, 전기적으로는 0V와 3.3V
혹은 0V와 5V로 발생하게 되는데, PWM 기능으로 인해 아날로그 출력을 하게 됩니다.
이러한 PWM을 이용하게 되면, SG90 뿐만
아니라, LED의 밝기를 점점 희미하게 혹은 밝게 만드는 디밍 (dimming)
기능도 구현할 수 있습니다.
SG90는 Duty Cycle에 따라서 다음과 같은 회전을 하게 됩니다.
먼저, PuTTY에 접속해서 리눅스 명령어로 회전하는 것을 확인해보도록 하겠습니다.
그 전에, PWM과 관련된 시스템 파일을 보겠습니다.
위의 폴더를 보면 pwm2라는 폴더가 있습니다.
다시, pwm2 폴더로 이동합니다.
그리고 PWM을 사용하기로 설정합니다. (echo 1
> enable)
서보모터를 제어하기 위해서 주기는 20,000,000ns, 즉, 20ms이고 (echo 20000000 > period), 1~2ms의
duty_cycle로 0도에서 180도로 회전하는 것으로 데이터시트에 표기되어 있습니다 (echo 1000000
> duty_cycle).
위와 같이 실행시, 0~180도로 회전하는 것을 확인할 수 있습니다.