[PID제어]:: PID제어로 온도 제어하기

DONE_WALLE
Research Team — DAWN
5 min readSep 28, 2021

--

PID 제어

비례-적분-미분 제어기(Proportional-Integral-Differential controller) 또는 PID 제어(PID control)는 피드백을 통해 제어를 하는 구조입니다.

제어하고자 하는 대상의 출력값을 측정하여 이를 원하고자 하는 참조값 혹은 설정값과 비교하여 오차를 계산하고, 이 오차값을통해 제어에 필요한 제어값을 계산합니다.

표준적인 형태의 PID 제어기는 아래의 세개의 항을 더하여 제어값(MV : Manipulated Variable)을 계산하도록 구성이 되어 있습니다.

이 항들은 각각 오차값, 오차값의 적분, 오차값의 미분에 비례합니다.

  • 비례항 : 현재 상태에서의 오차값의 크기에 비례한 제어작용을 합니다.
  • 적분항 : 정상상태 오차를 없애는 작용을 합니다.
  • 미분항 : 출력값의 급격한 변화에 제동을 걸어 오버슛을 줄이고 안정성을 향상시킵니다.

STEP 1: P — 비례 제어

Kp(s)=KpKp​(s)=Kp
목표값과 현재값의 차이 만큼 제어입력을 넣는 것입니다.

난방을 예로 들면 10도 에서 20도로 가열할 때는 10을 가열을 하고, 15도에서 20도로 가열할 때는 5를 가열을 하는 것입니다. 하지만 차이가 적어질수록 목표값에 도달하는 것이 어려워져 잔류편차가 생기는 단점이 있습니다.

STEP 2: PI — 비례 적분 제어

Kpi(s)=Kp+Kis=Kp(1+1sTi)Kpi​(s)=Kp​+sKi​​=Kp​(1+sTi​1​)
앞서 말한 P제어의 단점을 극복한 방법입니다.

난방이 19도에서 유지되는 경우 1단위의 제어를 시간에 따라서 계속 더해주는 제어 방법입니다. 그러면 결과적으로 제어 입력이 증가하여 일정하게 유지됩니다. 하지만 목표값을 넘어도 멈추지않고 증가와 감소를 반복하며 20도에 이르게 된다는 단점과 가중치에따라 버그가 발생할 확률도 있습니다.

STEP 3: PID — 비례 적분 미분 제어

Kpid(s)=Kp+Kis+sKd=Kp(1+1sTi+sTd)Kpid​(s)=Kp​+sKi​​+sKd​=Kp​(1+sTi​1​+sTd​)

위의 단점을 보완한 방법입니다. 제어 성능은 좀 느려지지만, Overshoot을 억제하여 시스템의 상태가 좀더 안정적으로 목표값에 수렴하게 됩니다.

나무위키에 말을 인용하면, 어딘가 모자란 P 제어를 I 제어가 보충해주고 이 폭주기관차 I 제어를 D 제어가 억누르는 개념입니다.

온도제어

사용 라이브러리 깃헙링크 올려놓겠습니다.

  • INPUT : 현재 온도
  • OUTPUT : 결과값
  • Setpoint : 목표값
  • Kp: 비례 제어 값
  • Ki: 적분 제어 값
  • Kd: 미분 제어 값
  • ControllerDirection: 출력이동방향

각각의 값들을 Test 해가며 가장 시스템에 잘 맞는 값을 찾는 과정이 필요합니다.

PID 1.5, 0.01, 0.6으로 설정하여 온도를 제어해보았습니다. 1분당 5도씩 올리는데, 부드럽게 제어하기위해 1/6로 쪼개어 10초당 상승할 수 있도록 하였습니다.

Heater ON/Off, 현재온도, PID제어 결과값, 목표값, (P, I, D)

참고https://ko.wikipedia.org/wiki/PID_%EC%A0%9C%EC%96%B4%EA%B8%B0

--

--