본문 바로가기

_대회_Eureka_comp.

[로봇] PID제어_펌글

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021807

요즘 제가 자동제어에 관한것에대하여 알아볼려구 책을 읽던중

 

PID제어라는것이 나오는데 도대체 어떤것인지 알수가 없어서

 

이렇게 질문을 올립니다.

 

AVR이나 8096등과 같은 마이컴(?)과의 차이는 뭔지도 궁금합니다.

 

그리고 PID제어를 할려면 PID제어기나 프로그램 같은것이 있어야하나요?

 

있으면 그것에 대해서도 자세히 설명 부탁드립니다...


-------------------

윗분의 말씀처럼 PID제어는 제어기같은 특수한게 아니라 제어 알고리즘입니다

개념만 아신다면 간단하게라도 프로그램을 짜서 PID제어를 사용할 수도 있는거죠

 

간단히 설명드리면 P(비례제어) I(적분제어) D(미분제어)를 합친걸로

P, 비례제어.. 즉 제어하기 위한 목표와 현재의 차이(편차라고 하겠슴다)를 산출해내서

그 편차값에 비례하게 제어량을 주는,

그러니까... 만약 최대용량 12V짜리 모터에 축을 달아놓고  그 축을 정확히 100˚만큼 회전시켜야 한다고 칩시다..현재각도가 0˚라면 편차는 100%, 제어기는 12V 전체를 모터에 인가,  50˚라면 편차는 50% 즉6V를, 180˚라면 0V를 인가하는(모터를 꺼버리는) 식으로 동작합니다...

 

만약 현재각도가 99˚라면? 제어기는 모터에 0.12V를 인가하겠죠? 그러면 이상적인 모터라면 0.12V만큼의 속도로 돌겠지만 실제로는 모터 자체의 마찰력도 있고 이런저런 이유 때문에 안돌죠

그럴 경우에 생기는1˚의 편차를 없애기 위해 I제어(적분제어)가 쓰입니다 그 1˚만큼의 편차를 계속 적분해서 제어량에 더해주는 것이죠 그러다가 모터를 움직일수가 있는 최소 전압을 넘게돼면 모터는 움직여서 그 편차를 없애주겠죠......

 

D제어는 현재각도와 바로전 각도의 기울기에 비례하게 제어값을 주어서 보다 신속하고 유연하게 목표값에 도달할 수 있도록 해주는 것입니다...

 

대충 제어기를 식으로 표현하면 (e = 편차 t = 시간)

제어량 = Kp*e(t) + Ki*∫ e(t) dt + (e(t)-e(t-1))/Ts)

말그대로 대충이네요 생각나는대로 적은거라.. -.-a 님이 보시던 책에 설명이 훨씬 더 잘나와있을 겁니다

 

AVR이란 ATMEL사에서 나온 마이크로컨트롤러의 일종인데요..

8096이 프로세서의 역할밖에 못해서 외부에 메모리, 카운터, 포트 같은걸 사용하기 위해서 달아주어야 하는 반면 AVR은 AD컨버터, 롬, 램, 부트로더를 내장하고 있어서 간단한 제어에는 쓰기 좋은 컨트롤러입니다

ATMEGA128이란놈은 빠르기도 빠르니까 충분히 PID제어기를 구성할 수 있을겁니다

 

PID제어는 제어 알고리즘이기때문에 프로그램 짜서 컨트롤러에 넣으신다면 제어기를 구성할 수 있습니다

PID제어만 담당하는 칩 ( 18201... 맞나?? 근데 좀 비쌉니다)도 있으니까 찾아보시면 다양하게 사용하실 수 있습니다

 

님이 보신 PID계산하는 프로그램은 위에 식의 Kp,Ki,Kd값을 구해주는 프로그램, 간단하게 말해주면 튜닝을 해주는(?) 그런 프로그램일겁니다

 

이런건 지식인보다 책을보시거나 잘 아는 사람의 설명을 듣는게 훨씬 더 좋을겁니다....

열심히 하시길..

대한민국 이공계 화이팅!!


------------------------------------------------

아래에 답변을 잘 해주셨습니다.

 

추가로 답변을 한다면...

C언어나, MatLab등으로 시뮬레이션을 한다면

쉽게할 수 있으나,

 

실제 제어기를 구성해서 실험으로 해본다면

상당히 노가다 정신이 필요하며

매개변수 즉, 3개의 파라메터를 잡는 것이 무척이나 어렵습니다.

 

PID는 비례, 적분, 미분의 영문약자(첫머리 글짜)이며

이놈들을 수학식으로 표현하면 2계미분 방정식이 나오는데

 

2계미분방정식은 3개의 해(답 또는 파라메터)를 구해야 합니다.

그러나 각각의 제어시스템에 따른 정확한 답을 찾는것은 무척이나 어렵습니다.

 

그래서 파라메터를 잡는 알고리즘이 논문을 통하여 발표되고 있으나,

지금까지도 수많은 학자들이 그놈의 파라메터를 최적으로 찾아내는 연구를 하고 있습니다.