프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

PID제어로 공의 균형을 잡기 프로젝트(2. PID제어 알아보기)

2015-03-17 10:25:45

이번 글에서는 PID제어가 무엇인지 간단하게 적어보겠습니다.

 

먼저 인터넷에 들어가서 PID제어라고 검색하면 사전에는 이렇게 나옵니다.

 

 

읽어도 무슨소리인지 모를 만큼 복잡해 보입니다.(저도 마찬가지....)

일단 PID제어에서 중요한 말 중 하나는 피드백제어(Feedback Control)입니다.

 

 

피드백 제어란 위 사진처럼 Process를 거쳐 나온 Output이 다시 Input에게 영향을 미치는 Loop를 말합니다.

Output은 Input에게 목표값에 도달하기 위해 값을 줄이거나 늘리거나 하는 feedback의 역할을 합니다.

 

 

피드백 제어가 PID제어와 무슨 상관이 있냐고 물으실 분이 있을실 수도 있을텐데 

예를 들어 제가 만든 자동차를 시속 40km로 달리게 하고 싶어 합니다.

 

 

이때 스위치를 ON으로 주게되면 자동차는 계속 동력 에너지를 받아 속도가 계속 올라가게 됩니다! 

그래서 속력이 40km/h 넘게되면 어떻게 해야할까요? 당연히 스위치를 OFF시켜야겠죠. 이 과정은 아래와 같은 피드백 과정으로 설명 할 수 있습니다.

 

 

속력이 40km/h가 초과됐다는 결과가 스위치를 OFF시키라는 Feedback과정으로 변하게 됩니다.

그럼 계속적인 스위치 ON/OFF과정을 통해 자동차는 시속 40km/h 유지할 수 있을까요? 

 

답은 아니오 입니다. 

스위치를 계속 ON/OFF를 반복하게 되면 상태 변화는 아래 그래프처럼 보이게 됩니다.

조작량은 언제나 100%(ON)가 아니면 0%(OFF)상태 이기 때문에 제어값은 언제나 목표값의 위 아래로 끊임 없이 진동하게 됩니다.

이때 제어값을 목표값(시속40km/h) 빠르게 수렴시킬 필요한 제어가 PID제어입니다.

 

PID제어

 

위 식은 PID의 가장 기본적인 공식으로 식을 보게되면 우항에 차례대로 비례, 적분, 미분부분을 볼 수 있습니다.

PID제어에서 PID는 다음을 각각 뜻합니다.

P(Proportional) 비례

I(Integral) 적분

D(Derivative) 미분

위의 3가지 성분을 이용하여 유연하게 자동제어를 하는 방법을 말합니다.

위의 식에서 Kc, τi, τd를 볼 수 있는데 각각은 PID제어의 Gain값이라고 하여 이 제어값을 잘 조절하여 주는것이 PID제어의 요점입니다.

 

 

P제어

먼저 P제어를 알아보면 P는 비례 제어로 목표값과 현재 제어값의 오차에 비례하여 제어량을 변화시키는 방법입니다.

당연히 오차가 크면 제어량은 늘어나지만 오차가 점점 줄어들수록 제어량의 변화폭 또한 같이 줄어들게 됩니다.

 

 

그래프를 보듯이 시간이 지나면서 제어값이 목표값에 가까워지면 편차가 줄어들기 때문에 조작량 또한 점점 줄어들게 됩니다. 

하지만 줄어든다 해도 제어값 = 목표값은 되지 않아 항상 편차가 존재하게 됩니다. 

(어떤값의 90%씩을 감소하는 형태로 목표값에 다가간다고 할때 처음 100의 값이 들어오면 90이 줄어들어 10만 남고 다시 90%가 줄어들면 1이 남고 또 90%가 줄어들면 0.1만 남고 0.01, 0.001... 무한반복 입니다.)

그렇기 때문에 그래프는 목표값에 한없이 다가가는 형태로 그려지게 됩니다.

 

PI제어

P제어의 편차는 줄어줄지만 오차는 0이 되지 않는 문제를 해결하는 방법을 해결하는 방법으로 PI제어 방법을 사용하게 됩니다.

 

 

그래프를 보면 P제어는 실행되지만 I제어를 통해 오차를 0으로 만드려는 과정을 볼 수 있습니다.

P제어를 쓰면 오차가 항상 존재하는데 이 오차를 시간으로 적분시켜서 어떤 특정값 이상으로 모일 경우 P제어값-I제어값으로 오차를 최대한으로 줄어버리는 과정이 PI제어입니다.

 

PID제어

위에 PI제어에서 D제어를 포함시킨 제어가 PID제어입니다.

 

 

D제어는 미분 제어로 오차값의 변화량에 따라 조작량이 결정되는데 즉 오차값의 변화량(기울기)가 클 경우 조작량도 급격하게 늘어나고, 변화량이 줄어들면 조작량 또한 줄어들게 됩니다.

 

PID제어를 사용한 영상을 보게 되면 잘 균형잡고 있는데 사람이 손으로 힘을 어느쪽으로 주면 다시 반대쪽으로 힘이 쏠려 바로 균형을 잡는 영상을 볼 수 있습니다. 

그렇게 갑자기 어느 한 방향으로 급격히 힘이 쏠렸을 때 반대방향으로 그 힘을 상쇄하려는 제어를 추가한것이 PID제어 입니다.

 

제어기의 특성과 PID 요소들의 의미

 

A. Overshoot - 오버슈트
목표값을 기준으로 오차가 최고로 커지는 부분의 값을 말합니다.
이 값이 너무 커지면 시스템에 무리를 줄 수도 있습니다.
예를 들어 제어량이 전압이고 TR을 동작시키는데 오버슈트가 너무 커지면 TR의 동작 영역을 벗어나서 오동작을 하거나
TR이 과전압에 의해 손상될수 있는 상태입니다.

 

B. 목표값 도달 시간
제어는 어차피 완전히 100% 수렴할수는 없습니다. 그래서 목표값의 몇 %에 들어가면 제어가 완료된 것으로 보는데 그 범위안에 들어가서 제어가 완료되었다고 보는 시간을 말합니다.
그 시간이 짧을 수록 좋은 제어기입니다.

 

C. 정상상태 오차 
제어량이 목표량의 일정범위에 도달하여 제어는 끝났지만 없어지지 않고 남아있는 오차를 말합니다.

 

PID제어에서 각각의 요소는 다음과 같은 역할을 하게 됩니다.

P 제어 : 목표값 도달 시간(B)을 줄인다.       
I 제어 : 정상상태 오차(C)를 줄인다.
D 제어 : 오버슈트(현재치의 급변이나 외란-A)을 억제한다.

 

요약 

위에서 길게 PID제어가 무엇인지 나열했지만 결국에는 짧게 설명하면 PID각각의 파라미터 값을 제어하여 변수를 제어하는 제어식을 말합니다.

이 변수값을 잘 만 제어하면 빠른시간 내에 원하는 목표값에 도달할 수 있고, 각각의 변수값의 크기에 따라 목표값의 도달하는 시간, 방법또한 여러가지로 나뉘어지게 됩니다.

3개의 파라미터(Kc, τi, τd)를 잘 제어하는것이 PID제어의 핵심입니다.

수박쨈

PID제어
profile

제임스짱 2015-03-17 15:43:34

어려운 듯 어렵지 않은 어려운 PID...ㅜㅜ 앞으로도 연재 잘 부탁합니다.

profile

수박쨈 2015-03-17 17:28:09

아마 다음이 마지막글이 될듯 합니다ㅜ 저도 어렵네요...ㅜ 계속적으로 공부해서 좋은내용을 적을 수 있도록 노력하겠습니다!

profile

이현우 2015-07-29 08:58:38

P I D 제어의 요점을 아주 잘 설명해주셔서 전에 배웠던 내용이지만 가물가물했던 기억이, 이 글을 보면서 붓슝붓슝 반짝반짝허네요