PID 제어 기능을 사용하여 목표값(SetValue)과 현재값(InputValue)의 차이를 기반으로 출력값을 계산할 수 있습니다.
PidConfig pidno, kp, ki, kd, outmin, outmax
| 파라미터 | 설명 |
|---|---|
pidno | PID 채널 번호 (0 ~ 7) |
kp | 비례 게인 (×100 스케일 정수, 예: 150 → 1.50) |
ki | 적분 게인 (×100 스케일 정수, 예: 10 → 0.10) |
kd | 미분 게인 (×100 스케일 정수, 예: 5 → 0.05) |
outmin | 출력 최소값 (일반적으로 0) |
outmax | 출력 최대값 (예: PWM 사용 시 10000) |
지정한 PID 채널의 제어 파라미터를 설정합니다. 8개의 채널이 있으며 각 채널은 독립적으로 동작합니다.
kp, ki, kd는 정수(integer) 값으로 입력합니다. 내부적으로는 실수로 변환되어 연산되며, 입력 값은 100을 기준으로 스케일된 값입니다. 예: 150 → 1.50 10 → 0.10 5 → 0.05
output = PidRun(pidno, setvalue, inputvalue)
| 파라미터 | 설명 |
|---|---|
output | 계산된 출력값 (반환값, outmin~outmax 범위) |
pidno | PID 채널 번호 |
setvalue | 목표값 (제어하려는 기준 값) |
inputvalue | 현재 측정값 (센서 또는 입력 값) |
PID 연산을 수행하고 계산된 출력값을 반환합니다.
Dim temp As Integer Dim output As Integer Dim setpoint As Integer setpoint = 800 Freepin 12 Pidconfig 0, 100, 0, 0, 0, 1000 Do temp = Tadin(0) output = Pidrun(0, setpoint, temp) Pwm 12, 1000, output Print "in:", Dec temp, " out:", Dec output, Cr Wait 100 Loop
단순히 ON/OFF만 사용하는 제어는 목표값 근처에서 계속 흔들리거나(진동), 목표값에 정확히 도달하지 못하는 경우가 많습니다. 예를 들어 히터를 사용하여 온도를 50°C로 유지한다고 가정해봅시다.
단순 ON/OFF 방식은:
이런 방식으로 반복되어 온도가 계속 오르내리게 됩니다. PID 제어는 현재 오차(Error)를 계산하여, 출력 세기를 자동으로 조절합니다.
예를 들어:
이렇게 동작하여 목표값에 더 빠르고 안정적으로 도달할 수 있습니다. PID는 다음과 같은 곳에 많이 사용됩니다.
PID는 다음 3가지 요소를 조합합니다.
처음에는 아래처럼 시작하는 것을 권장합니다.
kp = 100 ki = 0 kd = 0
즉, P 제어만 먼저 동작시켜보고, 목표값 근처에서 흔들리거나 오차가 남는 경우에만 ki 와 kd 를 조금씩 추가하는 방식이 가장 쉽고 안정적입니다.