PWM 출력 (아날로그 출력)
Pwm
Pwm port, freq, duty_percent
| 파라미터 | 설명 |
|---|---|
freq | 출력할 주파수 (단위: Hz) |
duty_percent | 듀티 사이클 (0 ~ 10000 → 0.00% ~ 100.00%) |
지정된 출력 포트에 설정된 주파수와 듀티 비로 PWM 파형을 출력합니다.
명령어 실행 즉시 출력이 시작되며, Pwmoff 명령을 호출하기 전까지 출력을 유지합니다.
- 소유권 확보: 사용 전 반드시
Freepin명령으로 해당 포트의 소유권을 확보해야 합니다. - 사용 가능 포트: 모든 출력 전용 포트(Q포트)와 P포트(양방향 포트)에서 사용할 수 있습니다.
Freepin 12 Pwm 12, 1000, 5000 ' 50.00% 듀티 Pwm 12, 1000, 7500 ' 75.00% 듀티 Pwm 12, 50, 750 ' 7.50% 듀티 (RC 서보 중앙 위치)
참고
듀티 값은 10000 기준으로 계산됩니다. 예: 500 → 5.00% 750 → 7.50% 1000 → 10.00% 5000 → 50.00% 10000 → 100.00%
PWM 포트 사용 시 주의사항
GPIO 포트는 짝수/홀수 한 쌍(예: 10-11, 12-13, 14-15 ...)으로 하나의 PWM 자원을 공유합니다. 따라서 같은 쌍에 속한 포트는 PWM 주파수를 각각 다르게 설정할 수 없으며, 반드시 동일한 주파수를 사용해야 합니다. 예: - 10번과 11번 → 같은 주파수 - 12번과 13번 → 같은 주파수 ※ 듀티비(Duty)는 각각 독립적으로 설정할 수 있습니다.
Pwmoff
Pwmoff port
지정 포트에 출력 중인 PWM 출력을 정지합니다.
Pwmoff 12
예제 프로그램 1
A/D 입력을 받아 PWM에 반영하고, 4번 입력이 HIGH일 경우 출력을 정지합니다.
Dim i1 As Integer Freepin 12 Do i1 = Adin(0) * 10000 / 4095 ' 0~10000 변환 If In(4) = 1 Then Pwmoff 12 Else Pwm 12, 1000, i1 End If Wait 500 Loop
예제 프로그램 2 : RC 서보 제어 예제
RC 서보는 50Hz(20ms 주기)에서 약 5.0% ~ 10.0% 듀티를 사용합니다. (10000 기준 → 500 ~ 1000)
Dim angle As Integer Dim duty As Integer Freepin 10 Pwm 10, 50, 750 ' 중앙 (7.5%) Do For angle = 0 To 180 Step 5 duty = 500 + angle * 500 / 180 ' 500~1000 Pwm 10, 50, duty Debug Dec duty, " ", Dec angle, Cr Wait 200 Next For angle = 180 To 0 Step -5 duty = 500 + angle * 500 / 180 Pwm 10, 50, duty Debug Dec duty, " ", Dec angle, Cr Wait 200 Next Loop
- PWM 주파수는 50Hz로 설정해야 합니다.
- 듀티 범위:
- 500 → 약 1.0ms (최소 위치)
- 750 → 약 1.5ms (중앙)
- 1000 → 약 2.0ms (최대 위치)
- 각도(0~180)를 듀티(500~1000)로 선형 변환합니다.
