2015년 4월 27일 월요일

[00100] 아두이노 두에(Due) 의 PWM 주파수 바꾸기

  아두이노 Due의 PWM 주파수는 1KHz 로 정해져 있다. 그런데 응용 분야에 따라서 이 주파수를 변경해 주어야 하는 경우가 있다. 하지만 아두이노에서 PWM의 주파수를 바꿔주는 공식 API 는 없어서 무척이나 불편하다. 그래도 AVR 계열의 아두이노에서는 이런 불편을 해소하기 위해서 사용자가 작성한 라이브러리 (PWM.h)라도 있는 것 같은데 Due의 경우에는 아직까지 그런 라이브러리는 없는 것 같다.

  구글링을 해본 결과 아주 방법이 없는 것은 아니었다. 일단 다음의 헤더 파일을 연다.(윈도의 경우)

Program Files > Arduino > hardware > arduino > sam > variants > arduino_due_x > variant.h

64비트 윈도라면 Program Files(x86) 폴더 밑을 뒤져야 한다. 이 파일을 열면 다음과 같이 정의된 부분이 나온다.

-------------------------------------------------
/*
* PWM
*/
#define PWM_INTERFACE PWM
#define PWM_INTERFACE_ID ID_PWM
#define PWM_FREQUENCY 1000
#define PWM_MAX_DUTY_CYCLE 255
#define PWM_MIN_DUTY_CYCLE 0
#define PWM_RESOLUTION 8
-------------------------------------------------

이 상수값들을 변경하면 PWM의 주파수나 기본 분해능을 설정할 수 있다고 한다. 예를 들어서 주파수를 10KHz로 변경하고 싶다면 PWM_FREQUENCY 를 10000 으로 바꾸면 된다.

  조그만 장난감 모터는 1KHz 로도 충분하다. 내가 가지고 있는 모터는 조금 용량이 큰데 (12V/12.9W) 이 정도만 되도 주파수를 조금 키워야 한다. 몇 번 실험해보니 12KHz 정도가 적당한 것 같다.

(2V 이상 인가되어야 회전이 시작됨)
[#00100]

댓글 없음:

댓글 쓰기