void pwm ( u8 pwmChannel, u16 pwmDuty, u16 pwmWidth)
pwmChannel : PWM 채널번호 (0 ~ 7) |
pwmDuty : 듀티비 (1 에서 주기값 사이의 값) |
pwmWidth : 주기값 (1 에서 65535 사이값) |
PWM 출력포트에는 5V 의 PWM 파형이 출력하는 함수입니다. 원하는 채널에 듀티비, 주기값등을 정해주면, 해당 듀티비를 가진 PWM 파형이 출력됩니다. 주기값은 최대 65535 까지 사용할 수 있으며, 이 범위 내에서 듀티비를 설정할 수 있습니다.
pwm 은 백그라운드에서 출력되도록 되어있으므로, 한번 발생된 pwm 파형은 pwmoff 함수가 수행되기 전까지 계속 출력됩니다. MOACON 에는 총 8 개의 PWM 채널이 있으며, 이중 0 부터 3 까지는 주기값이 같아야 합니다. 마찬가지로 4 부터 7 까지도 주기값이 같아야 합니다. 즉, 두개의 PWM 그룹이 존재합니다. 하나의 그룹에서는 하나의 주기값만 사용가능합니다.
PWM 파형의 주파수는 주기값(pwmwidth)에 의해서 결정됩니다. 주기값으로 부터 다음공식에 의해 실제주파수를 계산할 수 있습니다.
만약 주기값을 65535 로 했다면 1098Hz 의 파형이 출력됩니다.
Pwm (0, 30000, 65535 ) ; // 1098Hz 의 pwm 파형이 출력됩니다.
주기값을 100 으로 했다면 720000 Hz 즉 720KHz 의 파형이 출력되어야 하지만, 실제로는 713KHz 정도가 출력됩니다. 주파수가 빠를수록 약간의 오차율을 가지고 있으므로 위의 공식으로 대략의 값을 알아낸뒤, 실제 정확한 주파수는 주파수측정기로 측정한뒤 사용하시기 바랍니다.
5V 의 PWM 출력으로는 매우 작은 전류만 흘릴 수 있기 때문에, 큰 전류를 소비하는 부하를 직접 구동하는 것은 불가능합니다. 아래 그림처럼 NPN TR 을 부착하면 큰 구동전류를 필요로하는 DC 모터나 팬모터의 속도를 제어할 수 있습니다.
이 때, TR 은 모터의 용량을 감당할 수 있는 용량의 POWER TR (또는 MOSFET)을 사용해주어야 합니다. 만약 TR 에 발열이 있을 경우에 방열판을 부착하여야 과열로 인한 파손을 막을 수 있습니다.