한동안 밀렸으니 열심히 써야겠다.
주기를 줄이고 분해능을 늘리기 전에는 P제어가 전혀 되지 않았다.
하지만 타이머의 주기를 2.5ms로 변경하고 분해능을 1로 변경후 그제서야 P 제어가 됨을 확인하였다.
얼마나 기뻤는지.....
그리고 한동안 PID 를 가지고 테스트를 하였는데......
글쎄... 맘에 쏙!!! 드는 정답같은 PID 파형은 나오지 않았다.
다만 테스트를 하면서 경험한걸 풀어보면.....
P 값이 크면 발진한다....
P 값이 적당한 상테에서 D 값을 조금 크게하면 0도 부근에서 떨림이 매우 크다.
P 값이 적당한 상테에서 D 값을 크게하면...(D값 적정 이상) 매우 빠르게 진동하며 무섭게 발진한다.
어느정도 안정된 PD 제어에서 P 값을 크게할경우 처음에는 빠른진동.....그리고 그 이후에 발진한다.
I 값 역시 잘못 설정하면 진동에 도움을 많이 준다.
특히 I 값 같은 경우 0에 수렴해가야 하는데 수렴을 하지 못하고 0 부근에서 진동한다. (그러다 발진할수도.....)
나같은 경우는 P 제어값에 의한 동작보다 D 제어값에 의한 동작이 큰것처럼 느껴진다.
P제어만으로는 RPM의 변화가 그리 크지 않은데
D제어의 경우 기울기가 변하면(외부충격시) P 제어값에 비하여 어마어마한 값들이 출력되며 빠른속도로 제 자리로 돌아온다.
그럼에도 P 값을 크게하면 I 값과 상호보정관계를 가진다고 할까?.....
한쪽모터출력이 크기 때문에 항상 한쪽으로 기울어져 있는 상테인데.... P 제어값에 의해 한쪽으로 출력이 크게나와 기울기를 유지하면 I 값이 기걸 따라가며 P 값이 줄어드는것을 볼수 있다.
모터 출력이 다르기 때문에 생기는 현상.... 그렇다면 I 값을 크게 하면 그 보정을 빨리 한다는건데......
얼마까지 크게해도되려나......
아니면 I제어값을 모터 추력에 더해주면 그것도 하나의 방법이 되려나????
I 값을 기본 모터 추력에 더해주고 I값을 0 으로 변경하는거지......
이거 잘못하면.... 값이 튈수도 있긴 하겠네.... 그래도 그러면 실시간으로 모터 추력을 보정해주는건데....
생각보다 좋은 아이디어인듯....
하여튼 그렇게 PID 를 제어함으로 1축 테스트도 어느정도 마무리단계에 와간다.
나의 PID 제어상수는 P를 최대로 하는것이 아니라 P를 최대값에서 좀 많이 줄였다.
주기와 분해능을 변경하기 전에는 P를 키우면 상당히 안정되었는데 이제는 P를 키우면 반대로 진동하며 수렴한다.
그럼에도 P 값을 키우려고만 했는데... 어느정도 과감히 줄여버리니 더욱 수렴 효과가 좋아졌다.
다만 모터 출력이 달라 한쪽으로 기울어져있는 상테가 심하다는것......
(예전에는 P 값으로 어느정도 보정이 되었다면 지금은 I 값만으로 보정을 해야하해 수렴이 느린 단점이 있다.)
그래서 반대로 I 값을 좀 많이 키워줬다.... 기울기 값이 변하면 그나마 빨리 수렴할수 있도록....
I 값을 키웠음에도 P 값이 작아서인지 그닥 진동이나 오버슈트가 그렇게 까진 크진 않은데.......
기울기 값을 변화시키면... 오버슈트가 상당히 크게 발생한다는것....수렴속도도 좀 느리다는게 문제.......
하여간 어느정도 마무리단계.... 다음단계로 넘어가서 동시진행해야겠다....
어차피 2축 구조물도 만들어 놨겠다...ㅋㅋㅋ
주기를 줄이고 분해능을 늘리기 전에는 P제어가 전혀 되지 않았다.
하지만 타이머의 주기를 2.5ms로 변경하고 분해능을 1로 변경후 그제서야 P 제어가 됨을 확인하였다.
얼마나 기뻤는지.....
그리고 한동안 PID 를 가지고 테스트를 하였는데......
글쎄... 맘에 쏙!!! 드는 정답같은 PID 파형은 나오지 않았다.
다만 테스트를 하면서 경험한걸 풀어보면.....
P 값이 크면 발진한다....
P 값이 적당한 상테에서 D 값을 조금 크게하면 0도 부근에서 떨림이 매우 크다.
P 값이 적당한 상테에서 D 값을 크게하면...(D값 적정 이상) 매우 빠르게 진동하며 무섭게 발진한다.
어느정도 안정된 PD 제어에서 P 값을 크게할경우 처음에는 빠른진동.....그리고 그 이후에 발진한다.
I 값 역시 잘못 설정하면 진동에 도움을 많이 준다.
특히 I 값 같은 경우 0에 수렴해가야 하는데 수렴을 하지 못하고 0 부근에서 진동한다. (그러다 발진할수도.....)
나같은 경우는 P 제어값에 의한 동작보다 D 제어값에 의한 동작이 큰것처럼 느껴진다.
P제어만으로는 RPM의 변화가 그리 크지 않은데
D제어의 경우 기울기가 변하면(외부충격시) P 제어값에 비하여 어마어마한 값들이 출력되며 빠른속도로 제 자리로 돌아온다.
그럼에도 P 값을 크게하면 I 값과 상호보정관계를 가진다고 할까?.....
한쪽모터출력이 크기 때문에 항상 한쪽으로 기울어져 있는 상테인데.... P 제어값에 의해 한쪽으로 출력이 크게나와 기울기를 유지하면 I 값이 기걸 따라가며 P 값이 줄어드는것을 볼수 있다.
모터 출력이 다르기 때문에 생기는 현상.... 그렇다면 I 값을 크게 하면 그 보정을 빨리 한다는건데......
얼마까지 크게해도되려나......
아니면 I제어값을 모터 추력에 더해주면 그것도 하나의 방법이 되려나????
I 값을 기본 모터 추력에 더해주고 I값을 0 으로 변경하는거지......
이거 잘못하면.... 값이 튈수도 있긴 하겠네.... 그래도 그러면 실시간으로 모터 추력을 보정해주는건데....
생각보다 좋은 아이디어인듯....
하여튼 그렇게 PID 를 제어함으로 1축 테스트도 어느정도 마무리단계에 와간다.
나의 PID 제어상수는 P를 최대로 하는것이 아니라 P를 최대값에서 좀 많이 줄였다.
주기와 분해능을 변경하기 전에는 P를 키우면 상당히 안정되었는데 이제는 P를 키우면 반대로 진동하며 수렴한다.
그럼에도 P 값을 키우려고만 했는데... 어느정도 과감히 줄여버리니 더욱 수렴 효과가 좋아졌다.
다만 모터 출력이 달라 한쪽으로 기울어져있는 상테가 심하다는것......
(예전에는 P 값으로 어느정도 보정이 되었다면 지금은 I 값만으로 보정을 해야하해 수렴이 느린 단점이 있다.)
그래서 반대로 I 값을 좀 많이 키워줬다.... 기울기 값이 변하면 그나마 빨리 수렴할수 있도록....
I 값을 키웠음에도 P 값이 작아서인지 그닥 진동이나 오버슈트가 그렇게 까진 크진 않은데.......
기울기 값을 변화시키면... 오버슈트가 상당히 크게 발생한다는것....수렴속도도 좀 느리다는게 문제.......
하여간 어느정도 마무리단계.... 다음단계로 넘어가서 동시진행해야겠다....
어차피 2축 구조물도 만들어 놨겠다...ㅋㅋㅋ