목차

PWM 출력 (아날로그 출력)

Pwm

Pwm port, freq, duty_percent

파라미터 설명
freq 출력할 주파수 (단위: Hz)
duty_percent 듀티 사이클 (0 ~ 10000 → 0.00% ~ 100.00%)

지정된 출력 포트에 설정된 주파수와 듀티 비로 PWM 파형을 출력합니다. 명령어 실행 즉시 출력이 시작되며, Pwmoff 명령을 호출하기 전까지 출력을 유지합니다.

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
  1. PWM 주파수는 50Hz로 설정해야 합니다.
  2. 듀티 범위:
    • 500 → 약 1.0ms (최소 위치)
    • 750 → 약 1.5ms (중앙)
    • 1000 → 약 2.0ms (최대 위치)
  3. 각도(0~180)를 듀티(500~1000)로 선형 변환합니다.

← CUBLOC2 목차로 돌아가기