본문내용
1. 실험 개요
1.1. 실험 목적
이번 실험의 목적은 모터의 PID 구동에 대하여 다루어보는 것이다. 이전 시간까지 배운 것을 토대로 제어 시스템을 구성하고, 각각의 P, I, D 제어기가 미치는 영향을 파악하는 것이 이번 실험의 주요 목적이다.
제어기의 목적은 제어를 하고자 하는 시스템(Process)의 출력값(Output)을 사용자가 원하는 값(Setpoint)과 일치시키는 것이다. 출력 값과 원하는 값의 차이가 오차(Error)가 되며, 이것에 Gain을 곱한 후 다시 시스템에 인가하게 되면, 오차가 0이 될 때까지 제어기가 동작하게 된다.
이번 실험에서는 각각의 P, I, D 제어기의 Gain 값들을 조절해가며 실험을 진행한다. P 제어기, I 제어기, D 제어기의 특성을 이해하고, 이를 통해 원하는 시스템 응답 특성을 얻을 수 있도록 하는 것이 이번 실험의 궁극적인 목표이다.
1.2. 실험 이론
1.2.1. 제어기의 동작 원리와 종류
'제어기의 동작 원리와 종류'는 다음과 같다.
제어기의 목적은 제어를 하고자 하는 시스템(Process)의 출력값(Output)을 사용자가 원하는 값(Setpoint)과 일치시키는 것이다. 출력 값과 원하는 값의 차이가 오차(Error)가 되며, 이것에 Gain을 곱한 후 다시 시스템에 인가하게 되면, 오차가 0이 될 때까지 제어기가 동작하게 된다.
제어기의 입력 방법은 오차에 계수를 곱하는 방법(P 제어), 오차의 적분값에 계수를 곱하는 방법(I 제어), 및 오차의 미분 값에 계수를 곱하는 방법(D 제어)가 있다.
P 제어기는 오차신호에 비례하여 제어량을 출력한다. Kp(비례 이득)값이 크면 오차에 대한 민감도가 높아지므로 시스템 반응이 빨라지지만, 경우에 따라 불안정해질 수 있다.
I 제어기는 오차신호의 적분값에 비례하여 제어량을 출력한다. Ki(적분 이득)값이 크면 정상상태 오차를 빨리 0으로 수렴시킬 수 있지만, 과도응답이 느려질 수 있다.
D 제어기는 오차신호의 미분값에 비례하여 제어량을 출력한다. Kd(미분 이득)값이 크면 시스템의 과도응답 특성을 개선할 수 있지만, 노이즈에 민감해질 수 있다.
이와 같이 P, I, D 제어기의 각 특성을 활용하여 PID 제어기를 구성하면, 시스템의 응답 특성을 원하는 대로 조정할 수 있다.
1.2.2. 모터의 구동 방법
모터의 구동 방법은 다음과 같다.
모터를 구동하기 위해서는 모터와 인코더를 Motor Shield에 연결해야 한다. 모터 구동선은 A+와 A-로 연결하고, 인코더 전원선은 Power 5V+와 Power GND로 연결한다. 인코더의 A와 B 신호선은 각각 Digital Ch. 2와 Digital Ch. 3에 연결한다.
이렇게 모터와 인코더를 연결하면 모터를 제어할 수 있게 된다. 모터의 회전 속도와 방향은 모터 구동선에 가해지는 전압과 전류에 따라 달라진다. 모터에 전압과 전류를 인가하면 모터가 회전하게 되고, 이때 인코더에서 회전각에 비례한 펄스 신호가 출력된다. 이 펄스 신호를 이용하여 모터의 회전 속도와 각도를 측정할 수 있다.""
1.2.3. 코드를 통한 PWM 모터의 구동 방법
[코드를 통한 PWM 모터의 구동 방법]
모터를 구동하기 위해서는 PWM(Pulse Width Modulation) 기술이 일반적으로 사용된다. PWM은 디지털 제어 신호를 사용하여 전기 모터의 속도와 토크를 제어하는 기법이다. 모터에 공급되는 전압의 진폭은 고정되어 있지만, 전압이 공급되는 시간의 길이를 조절함으로써 모터의 속도와 토크를 조절할 수 있다.
코드에서 PWM 모터 구동 방법은 다음과 같이 구현된다. 먼저 모터와 인코더를 모터 드라이버 보드에 연결한다. 그리고 마이크로컨트롤러나 PC에서 모터 드라이버로 PWM 신호를 보내게 된다. 이때 PWM 신호의 주파수와 듀티 사이클을 조절하여 모터의 속도와 토크를 제어할 수 있다.
예를 들어, 코드에서 다음과 같이 PWM을 설정할 수 있다:
```
// PWM 설정
int PWM_Pin = 3; // PWM 출력 핀
int PWM_Frequency = 1000; // PWM 주파수 (Hz)
int PWM_DutyCycle = 50; // PWM 듀티 사이클 (%)
// PWM 출력 설정
analogWrite(PWM_Pin, (PWM_DutyCycle/100.0)*255); // 듀티 사이클에 따른 PWM 출력
```
위 코드에서는 PWM 출력 핀을 3번 핀으로 설정하고, PWM 주파수를 1000Hz, 듀티 사이클을 50%로 설정하고 있다. analogWrite() 함수를 통해 PWM 듀티 사이클에 따른 아날로그 출력 값을 모터 드라이버에 보내게 된다.
이처럼 코드를 통해 PWM 신호를 생성하고 모터 드라이버에 전달함으로써 모터의 속도와 토크를 제어할 수 있다. PWM 주파수와 듀티 사이클을 조절하여 모터의 동작 특성을 최적화할 수 있다.
1.3. 실험 방법
실험 방법은 다음과 같다.
① Arduino 제어를 위한 Arduino IDE를 설치하고 Arduino와의 연결속도를 57600으로 변경한다.
② 모터와 인코더를 실험 이론에서 언급된 것과 같이 연결하여 회로 구성을 완료한다.
③ Serial Port를 저장하기 위한 Coolterm을 설치한다.
④ 코드상에서 kp 값 만을 변화시켜가며 모터의 각도와 Error 값을 Coolterm으로 기록한다.
⑤ ki, kd 값에 대해서도 5번 과정을 적용시켜 데이터 값을 기록한다.
⑥ 기록한 테이터를 바탕으로, 시간에 따른 각도와 Error 값의 변화 그래프를 그린다.
⑦ 그린 그래프를 분석한 후 각각의 파타미터의 효과를 기술한다.
1.4. 실험 결과
1.4.1. P 제어기의 효과
P 제어기의 효과는 다음과 같다.
P 제어기에서는 각도 그래프에서 보이다시피 kp 값이 0.1 - 1 - 10 과 같이 증기함에 따라서 시스템의 과도응답상태와 정상상태를 한 덩어리로 묶은 그 자체가 나타나는 속도가 증가함과 동시에 참값에 가까워짐을 확인할 수 있었다. 다만 Error 그래프에서 보이다시피 (10,0,0) 만 거의 Error 가 0 에 도달했고, kp 의 값이 0.1 과 1 인 경우에는 아무리 시간이 경과해도 Error 가 일정하게 유지될뿐 더 감소하는 형태를 보이진 않았다.
또한, kp 값만이 존재할 때 즉, 시스템이 오차 0 에 가까워지는 값이 존재는 하나 물결 모양의 sine wave 가 안정되지 않아 완벽히 수렴했다고 보기에는 어려운 부분이 있었다.
P 제어기의 효과는 Kp 값이 증가할 경우 시스템의 반응속도가 증가할 뿐만아니라 오차가 0에 근접하며 참값에 가까워짐을 알 수 있다. 반면 Kp 값이 감소할 경우 오차가 점점 커지며, 이때 오차는 0으로 수렴하지 못하고 특정 수치를 유지한다. Kp 값의 의의는 시스템 반응속도와 형상이 위치하는 곳을 결정하는데 큰 영향을 주나, 오차가 0으로 수렴시키는 데에는 거의 영향을 주지 못한다고 볼 수 있다.
1.4.2. I 제어기의 효과
I 제어기에서는 kp 값이 10으로 주어진 상태에서 ki 값을 변수로 하여 어떤 변화가 생기는지 살펴보았다. 각도 그래프에서 보이다시피 ki 값이 0 - 0.05 - 0.1 - 1과 같이 증가함에 따라서 시스템의 과도응답상태가 존재하는 시간과 그때의 과도응답의 Peak 점이 커졌으며 sine wave의 진폭이 확실히 작아지면서 0으로 수렴하도록 유도하고 있음을 알 수 있었다. 그러나 Error 그래프에서 보이다시피 ki 값이 과도하게 커짐에 따라 시스템의 오차가 0에서 멀어지면서 발산하게 되었고 무조건 큰 값을 사용하는 것이 아닌 적당한 값을 사용해야 함을 알 수 있었다.
P 제어기만 있을 경우와 비교해 보면, P 제어기에 I 제어기를 추가하게 되면 P 제어기만 있을 때 일정한 진폭으로 존재하던 sine wave의 진폭을 시간에 따라 점차 감소시켜 시스템의 오차가 0에 수렴하게 끔 만드는 능력이 향상됨을 알 수 있었다.
Ki 값이 증가할 경우 시스템의 과도응답상태의 시간과 Peak 점을 증가시킴과 동시에 오차를 0으로 수렴시키는 정도가 강해짐. 단, 과도하게 큰 값을 사용하는 경우에는 오히려 시스템이 발산하게 됨.
Ki 값이 감소할 경우 시스템의 과도응답상태의 시간과 Peak 점을 감소시키며 오차를 0으로 수렴시키는 정도가 약해짐.
Ki 값의 의의 P 제어기가 줄이거나 수렴시키지 못하는 오차를 정밀하게 0으로 수렴시키는 역할을 함. 즉, 시스템의 수렴속도를 높여줌.
1.4.3. D 제어기의 효과
D 제어기의 효과는 다음과 같다.
D 제어기에서는 kp 값이 10, ki 값이 0.1으로 주어진 상태에서 kd 값을 변수로 하여 어떤 변화가 생기는지 살펴보았다. 각도 그래프에서 보이다시피 kd 값이 0 - 0.1 - 1 - 10과 같이 증가함에 따라서 시스템이 과도응답상태에서의 첫 peak 점 이후 시간에 따라 시스템의 기울기 정도가 점점 완만해지며 참값에 수렴하고 있음을 확인할 수 있었다. kd 값이 10에 이르면 시스템 곡선의 기울기가 거의 직선에 가까워졌으며, 더 많은 실험 시간을 가졌다면 시스템이 참값에 수렴할 때 쯤에는 완벽한 직선에 가깝게 시스템이 플롯되었을 것으로 예측할 수 있었다.
Error 그래프에서도 각도 그래프와 동일하게 kd 값이 커짐에 따라 시스템 곡선의 기울기가 점차 완만해지는 것을 볼 수 있었다. 다만 여기서 kd 값의 변화는 오차의 수렴속도에는 영향을 주지 않는 것으로 보인다.
P 제어기와 I 제어기만 있을 경우와 비교해보면, P 제어기와 I 제어기 시스템에 D 제어기를 추가하게 되면 기존에 수렴하는 시스템의 곡선의 기울기 즉, 진동의 정도를 감소시켜 실제로 시스템을 설계하거나 사용시 발생하는 진동을 어느정도 감쇠시키고 해결할 수 있음을 알 수 있었다.
즉, D 제어기는 시스템의 진동을 감쇠시키는 역할을 한다고 할 수 있다. Kd 값이 증가할수록 시스템의 진동이 줄어들게 되며, Kd 값이 감소할수록 진동 감쇠 효과가 줄어든다. 하지만 D 제어기는 시스템의 오차 수렴속도에는 큰 영향을 끼치지 않는다.
1.5. 분석 및 고찰
1.5.1. P 제어기의 효과
P 제어기에서는 각도 그래프에서 보이다시피 kp 값이 0.1 - 1 - 10 과 같이 증기함에 따라서 시스템의 과도응답상태와 정상상태를 한 덩어리로 묶은 그 자체가 나타나는 속도가 증가함과 동시에 참값에 가까워짐을 확인할 수 있었다. 다만 Error 그래프에서 보이다시피 (10,0,0) 만 거의 Error 가 0 에 도달했고, kp 의 값이 0.1 과 1 인 경우에는 아무리 시간이 경과해도 Error 가 일정하게 유지될뿐 더 감소하는 형태를 보이진 않았다. 또한, kp 값만이 존재할 때 즉, 시스템이 오차 0 에 가까워지는 값이 존재는 하나 물결 모양의 sine wave 가 안정되지 않아 완벽히 수렴했다고 보기에는 어려운 부분이 있었다.
P 제어기의 효과는 Kp 값이 증가할 경우 시스템의 반응속도가 증가할 뿐만아니라 오차가 0에 근접하며 참값에 가까워짐을 알 수 있었다. 반면에 Kp 값이 감소할 경우 오차가 점점 커지며, 이때 오차는 0으로 수렴하지 못하고 특정 수치를 유지하는 것으로 나타났다. Kp 값은 시스템 반응속도와 형상이 위치하는 곳을 결정하는데 큰 영향을 주나, 오차가 0으로 수렴시키는 데는 거의 영향을 주지 못하는 것으로 확인되었다.
1.5.2. I 제어기의 효과
I 제어기에서는 ki 값이 10으로 주어진 상태에서 ki 값을 변수로 하여 어떤 변화가 생기는지 살펴보았다. 각도 그래프에서 보이다시피 ki 값이 0 - 0.05 - 0.1 - 1 과 같이 증가함에 따라서 시스템의 과도응답상태가 존재하는 시간과 그때의 과도응답의 Peak 점이 커졌으며 sine wave의 진폭이 확실히 작아지면서 0으로 수렴하도록 유도하고 있음을 알 수 있었다.
그러나 Error 그래프에서 보이다시피 ki 값이 과도하게 커짐에 따라 시스템의 오차가 0에서 멀어지면서 발산하게 되었고 무조건 큰 값을 사용하는 것이 아닌 적당한 값을 사용해야 함을 알 수 있었다.
P 제어기만 있을 경우와 비교해보면, P 제어기에 I 제어기를 추가하게 되면 P 제어기만 있을 때 일정한 진폭으로 존재하던 sine wave의 진폭을 시간에 따라 점차 감소시켜 시스템의 오차가 0에 수렴하게 끔 만드는 능력이 향상됨을 알 수 있었다.
1.5.3. D 제어기의 효과
D 제어기에서는 kp 값이 10, ki 값이 0.1로 주어진 상태에서 kd 값을 변수로 하여 어떤 변화가 생기는지 살펴보았다. 각도 그래프에서 보이다시피 kd 값이 0 - 0.1 - 1 - 10과 같이 증가함에 따라서 시스템이 과도응답상태에서의 첫 peak 점 이후 시간에 따라 시스템의 기울기 정도가 점점 완만해지며 참값에 수렴하고 있음을 확인할 수 있었다. kd 값이 10에 와서는 시스템 곡선의 기울기가 거의 직선에 가까워졌으며, 기록되는 시간을 더 늘려 실험을 했다면 시스템이 참값에 수렴할 때쯤에는 완벽한 직선에 가깝게 시스템이 플롯되었을 것을 예측할 수 있었다.
Error 그래프에서도 각도 그래프와 동일하게 kd 값이 커짐에 따라 시스템 곡선의 기울기가 점자 완만해지는 것을 볼 수있었다. ...