The Korean Society of Marine Engineering
[ Original Paper ]
Journal of the Korean Society of Marine Engineering - Vol. 43, No. 6, pp.427-435
ISSN: 2234-7925 (Print) 2234-8352 (Online)
Print publication date 31 Jul 2019
Received 12 Feb 2019 Revised 29 Apr 2019 Accepted 26 Jun 2019
DOI: https://doi.org/10.5916/jkosme.2019.43.6.427

질량이 증가하는 회전형 역진자에 대한 저렴한 비용의 견고한 제어기 개발

전태열1 ; 이영찬2 ; 심명보3 ; 정병건
Development of a low-cost robust controller for a rotary inverted pendulum with increasing mass
Tae-Youl Jeon1 ; Young-Chan Lee2 ; Myeong-Bo Sim3 ; Byung-Gun Jung
1Ph.D. Candidate, Department of Marine System Engineering, Korea Maritime & Ocean University, Tel: 051-410-4661 terryjeon@gmail.com
2Assistant professor, Division of Marine IT Engineering, Korea Maritime & Ocean University, Tel: 051-410-4661 yclee@kmou.ac.kr
3Professor, Korea Port Training Institute, Tel: 032-885-8011 simhyun0228@empal.com

Correspondence to: Professor, Division of Marine System Engineering, Korea Maritime & Ocean University, 727, Taejong-ro, Yeongdo-gu, Busan 49112, Korea, E-mail: bgjung@kmou.ac.kr, Tel: 051-410-4269

Copyright ⓒ The Korean Society of Marine Engineering
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (http://creativecommons.org/licenses/by-nc/3.0), which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

회전형 역진자의 제어는 고차, 불안정, 다변수, 비선형의 시스템이며, 외란이 발생하면 자체적으로 안정화되지 못하는 특성이 있지만, 로봇의 다리 제어 및 로켓트 직립 등에서 많이 사용되기 때문에 현대제어시스템 연구에서 매우 많이 다루어졌다. 그러한 기존 연구들은 회전형 역진자를 얼마나 빠른 시간 내에 스윙 업을 시킬 것인지 또는 진자의 움직임을 최소로 하여 에너지를 절감하여 스윙업을 할 것인지가 주로 연구되었었다. 하지만, 본 논문은 회전형 역진자의 말단부나 진자의 축부분에 매스(Mass) 부착하여 스윙업을 하도록 제어기를 설계하고 실증 실험하였다. 또한 회전형 역진자에 관한 연구들은 고급사양의 PC를 사용하여 많이 수행되었으나 본 연구에서는 저비용의 8비트 AVR-ATmega128를 이용하여 좀 더 우수한 스윙 업 성능을 가질 수 있었다.

Abstract

The control of a rotary inverted pendulum is a high-order, unstable, multi-variable, and nonlinear system. When a disturbance occurs, it does not stabilize by itself. However, since it is widely used in space equipment, robot leg control and upright rocket have been extensively studied in modern control research. Previous research has mainly focused on how fast the swing-type inverted pendulum will swing up using the energy that minimizes the movement of the pendulum. However, in this paper, a controller was designed to swing up the mass of the rotating-type pendulum. Studies on the rotary-type pendulum have been performed using a high-end PC, but in this study, the swing-up performance was improved using a low-cost 8-bit AVR-ATmega128.

Keywords:

Rotary, Inverted pendulum, AVR, ATmega128

키워드:

회전형, 역진자, AVR, ATmega128

1. 서 론

회전형 역진자는 고차, 불안정, 다변수, 비선형의 시스템이며, 외란이 발생하면 자체적으로 안정화되지 못하는 특성이 있다. 이러한 역진자 시스템의 안정화는 초기 조건이나 외란에 대하여 역진자를 직립으로 유지 시키는 것으로서 전형적인 비선형 제어에 관한 연구들이 있다. 역진자 시스템을 학습하려면 고가의 장비를 이용하게 되는데, 이들 장비는 주로 매트랩 시뮬링크(Simulink)를 사용하며 그래픽적으로 제어기 구성이 가능하다. 그러나 구동 드라이버와 주요 제어부분이 블랙박스화 되어 있어 세부적인 내용을 정확히 알 수 없는 단점이 있다. 본 연구에서는 저렴하고 쉽게 구할 수 있는 AVR ATmega128 마이크로컨트롤러를 이용하여 불안정한 회전형 역진자 시스템의 제어기를 설계한다. 역진자 시스템에 대한 수학적 모델링을 수행한 후, 동작점 부근에서 선형화한 선형 모델을 유도한다. 역진자의 초기 제어 시작 시 중력에 의해 아래로 향한 진자를 세우기 위한 스윙 업 제어를 구한다. 또한, 스윙 업 이후 제어를 위하여 극점배치 기법을 이용한 상태 피드백 제어기를 구한다. 역진자 제어기는 하드웨어와 소프트웨어로 이루어져 있다. 하드웨어는 전원 장치, 모터 구동 장치, 진자 및 암의 인코더 입력 장치로 구성된다. 소프트웨어는 마이크로컨트롤러의 제어프로그램에 해당하며, 진자 및 암의 로터리 인코더 신호를 사용하여 진자 및 암의 각도 검출 후, 이를 이용하여 진자 및 암의 각속도 계산하고 상태피드백 제어 이득 값을 사용하여 PWM제어 방법으로 모터 속도를 제어하도록 구성되어 있다. 설계 제작한 제어기에 대한 실험을 통해 진자 말단부 및 진자 축부분의 질량 증가에 대한 역진자 제어에 대해서 제어기의 강인성을 확인하였다. 본 연구를 통하여 시중에서 쉽게 구할 수 있는 저렴한 가격대의 마이크로컨트롤러를 사용하여 만족할 만한 성능 및 강인성을 가진 제어기를 제작할 수 있었다[1]-[5].


2. 역진자 시스템 모델링

2.1 역진자 시스템의 비선형 모델

회전형 역진자 시스템은 Figure 1과 같이 진자와 암 그리고 암을 구동하는 모터로 구성되며, 암의 회전만으로 거꾸로 세워진 막대를 직립시키는 것이 그 목적이다. 이 시스템의 제어기를 설계하기 위해서는 역진자 시스템에 대한 수학적 모델링 하여 동작점 부근에서의 선형 모델을 선정하여 구해야 할 필요가 있다.

Figure 1:

Rotary inverted pendulum

본 절에서는 구동부를 포함한 역진자 시스템에 라그랑지안 동역학을 적용하여 비선형 모델을 구하고 이로부터 동작점 부근에서의 선형모델을 구한다[6].

Figure 2는 제어 대상으로 하는 역진자 시스템의 동역학적 직교 좌표계를 단순화하여 표현한 것이다. 진자의 평형점은 진자가 역으로 세워진 상태이며, 이때의 각도 α는 0°이다. 각도 α는 반시계 방향을 양의 각도로 한다. 각도 θ는 암의 각도를 나타내며 반시계 방향을 양의 각도로 한다.

Figure 2:

Rotary inverted pendulum conventions

진자의 질량을 mp, 진자의 길이를 Lp, 질량중심에 대한 진자의 관성 모멘트를 Jp, 진자의 감쇠 계수를 Bp, 암의 길이를 Lr, 질량중심에 대한 암의 관성 모멘트를 Jr, 암의 감쇠 계수를 Br로 나타낸다.

역진자 시스템의 수학적 모델을 유도하기 위해 역진자의 무게중심 좌표(xG,yG,zG)를 구하면 다음과 같다.

xGyGzG=Lrcosθ+12LpsinαsinθLrsinθ-12Lpsinαcosθ12Lpcosα(1) 

무게중심의 속도 vG를 좌표축 별로 구하고 진자의 위치 에너지는 Epot를, 병진 운동과 회전 운동을 고려한 진자의 운동에너지를 Ekp로, 암의 회전 운동 에너지를 Eka로 표현하여 역진자 시스템의 라그랑지안 L은 다음과 같은 식을 유도할 수 있다.

L=Ekp+Eka-Epot=12mpvG2+12Jpα˙2+12Jrθ˙2-mpgLp2cosα=12mpLr2+14mpLp2sin2α +Jrθ˙2+1214mpLp2+Jpα˙2-12mpLrLpcosαθ˙α˙-mpgLp2cosα(2) 

θα에 대한 라그랑지안 방정식은 다음과 같은 관계가 성립한다.

ddtLθ˙-Lθ=Jr+mpLr2+14mpLp2sin2αθ¨+12mpLp2sinαcosαα˙θ˙+12mpLrLpsinαα˙2-12mpLrLpcosαα¨=τ-Brθ˙(3) 
ddtLα˙-Lα=-12mpLpcosαθ¨+Jp+14mpLp2α¨-14mpLp2sinαcosαθ˙2-12mpLpgsinα=-Bpα˙(4) 

τ는 구동 모터에서 역진자 시스템의 암으로 전달되는 토크이다.

다음으로는 암에 토크를 가하는 구동모터 계통의 수학적 모델을 구하도록 한다. 모터의 제어 입력 전압을 Vm, 전기자 권선의 저항을 Rm, 인덕턴스를 Lm이라 하면 전압 방정식은 다음과 같다.

Vm=RmIm+kgkmθ˙+LmI˙m(5) 

여기서 전기자 권선의 인덕턴스는 극히 작으므로 무시하면 다음과 같다.

Vm=RmIm+kgkmθ˙(6) 
Im=1RmVm-kgkmθ˙(7) 

모터의 발생 토크는 전류 Im에 비례하며 토크변환비율 kt와 관계된다. 또한, 감속기어를 거치면서 kg 비율만큼 회전속도가 변화하므로 다음과 같이 정리된다.

τ=kgktIm=kgktVm-kgkmθ˙Rm(8) 

2.2 역진자 시스템의 선형 모델

역진자 시스템의 선형 모델을 구하기 위하여 역진자 시스템의 진자를 상향 수직(12시 방향)으로 세웠을 때를 평형점으로 간주한다. 평형점 근방에서 진자가 미소각도로 변화한다고 하면, α≈0, α˙≈0, θ˙≈0으로 가정하여 sinαα, cosα≈1, αα˙≈0으로 볼 수 있다.

이를 전개하여 θ¨α¨에 대하여 정리하면 다음과 같다.

θ¨=1JT14mp2LrLp2gα-JP+14mpLp2Brθ˙-12mpLrLpBpα˙+Jp+14mpLp2τ(9) 
α¨=1JT12mpLpgJr+mpLr2α-12mpLrLpBrθ˙-Jr+mpLr2Bpα˙+12mpLrLpτ(10) 

2.3 역진자 시스템의 상태 및 출력 방정식

θ=x1, α=x2, θ˙=x3, α˙=x4, τ=u, 제어입력 u에 토크 및 입력전압 관계식인 τ를 대입하여 구동모터에 가해지는 입력전압 Vm에 대하여 정리를 한다. 그러면 구동모터에 가해지는 입력전압 Vm을 제어입력으로 하는 역진자 시스템의 상태 및 출력 방정식은 아래와 같다.

θ˙α˙θ¨α¨=001000010MgMrp4JT-Jp¯JTBr+kg2kmktRm-MrpBp2JT0Jp¯Mg2JT-Mrp2JTBr+kg2kmktRm-Jp¯BpJTθαθ˙α˙(11) 

여기에 본 진자 시스템과 관련된 사양 Table 1의 값을 대입하면, 최종적으로 시스템행렬 A, 입력행렬 B, 출력행렬 C, 전송행렬 D는 다음과 같다.

Rotary pendulum system specifications

A=00100001081.4973-28.9763-0.93170122.0674-27.8698-1.3955,B=0051.962249.9778(12) 
C=10000100,D=00(13) 

2.4 샘플링 타임을 고려한 역진자 시스템의 상태 방정식

연속 상태방정식 디지털 시스템인 ATmega128 16 [MHz] 마이크로 컨트롤러에 적용하기 위해서는 샘플링 타임(sampling time)을 고려하여야 한다. ATmega128을 이용한 제어기의 샘플링 타임은 인코더를 통하여 입력되는 외부 인터럽트의 발생 횟수에 따라서 차이가 발생한다. 그래서 12시 방향으로 역진자가 제어되는 가정하에서 시뮬레이션을 5차례 (50.35 [s], 50.20 [s], 51.02 [s], 51.44 [s], 51.64 [s])를 수행하여 10000회의 루프가 실행될 때의 시간을 측정한다.

평균 50.93 [s]/10000회로 샘플링 타임은 약 5.1 [ms]가 되어 Ts=0.0051 [s]로 설정한다.


3. 역진자 제어기 설계

3.1 스윙 업 제어기

역진자의 비선형 시스템을 12시 방향 부근에서 선형화하여 모델링 하였다. 이 모델링에 기반을 둔 제어기는 12시 부근에서만 유효하다. 초기 역진자 시스템의 진자는 중력에 의하여 아래로 처져 있다. 이 진자를 세우는 스윙 업(swing up) 제어가 필요하다[7][8].

역진자의 역학방정식은 다음 식 (14)와 같이 회전축 가속도의 관점에서 나타낼 수 있다.

Jpα¨+12mpgLpsinα=12mpLpucosα(14) 

여기서 전압 토크 관계식은 식 (14)에서 모터 효율 ηm과 기어의 효율 ηg를 고려하여 전압에 대하여 나타내면 다음 식 (15)와 같다.

Vm=τRmηgKgηmkt+Kgkmθ˙(15) 

3.2 상태피드백 제어기

역진자의 시스템 행렬 식에서 개루프 극점을 찾아보면 0, –32.48, -5.27, 7.39이다. 복소평면 우반면에 극점이 있으므로 시스템이 불안정함을 알 수 있다.

제어기의 감쇠비(damping ratio) ζ=0.6으로 설정한다. 감쇠비 ζ 값이 0.4 미만이면 큰 오버슈트가 발생하고, 0.8보다 크게 되면 시스템 응답이 느려지게 된다.

단위계단입력에 대한 출력이 목표값의 ±5%에 도달하는 정착시간 ts를 1.25 [s] 이내로 하기 위한 비감쇠 고유진동주파수(undamped natural frequency) ωn을 구한다. 감쇠비 ζ, 고유진동주파수 ωn와 정착시간 ts간의 관계를 나타내는 ωn=4 [rad/s]이다. 설계 사양을 따르는 주요 지배극점(dominant pole)을 구해보면, p1, p2식 (16)과 같다.

p1,p2=-σ±jωd=-2.4±j3.2(16) 

여기서,

σ=ζωn=0.6×4=2.4

ωd=ωn1-ζ2=51-0.62=3.2

나머지 비우세극점은 대표극점으로부터 충분히 떨어진 위치에 배치한다. 그러나 비우세극점이 허수축으로부터 너무 멀리 떨어져 있으면 큰 제어량이 요구되며 잡음 신호가 증폭될 수도 있다. 반대로 너무 가깝게 놓이면 기대한 성능을 얻기 힘들다. 그러므로 경험적으로 비우세극점의 고유진동수가 대표극점의 고유진동수의 3 ~ 5배 되도록 p3, p4를 -30, -40으로 설정한다.

Ad, Bd 및 희망 극점 값에 대하여 극점배치 기법을 적용하여 상태피드백 제어기 이득행렬 Kd를 구하면 다음과 같다[9].

Kd=-8.454643.8752-3.67834.7129(17) 

위의 행렬 Kd의 각 요소는 상태 θ, α, θ˙α˙에 대응하는 제어 상수이다.


4. 역진자 제어기의 구성

4.1 하드웨어 구성

역진자와 제어기는 Figure 3과 같이 이루어져 있다. 그림의 상단부는 역진자 시스템의 구동부이고 하단부는 제어기이다. 이 제어기는 Figure 4와 같이 전원 공급부, 모터 구동부, 인코더 신호 수신부, 제어상태 표시부 및 ATmega128 메인 보드부로 구성되어 있다.

Figure 3:

Inverted pendulum and its controller

Figure 4:

Controller with ATmega128

4.1.1 전원 공급부

역진자 제어시스템의 전원 공급부는 Figure 4과 같이 직류전원 공급기를 통하여 직류전원 15 [V], 2 [A]를 공급을 받는다. 그리고 자동 전압 조절 소자인 7812를 통하여 모터 구동부에 바로 전원 공급이 되며 커패시터를 이용하여 서지 전압에 대비한다[10]. ATmega128 마이크로 컨트롤러는 5 [V]를 필요하므로 ATmega128 보드에 5 [V] 공급용 자동전압조정 소자가 설치된다.

4.1.2 인코더 신호 입력부

역진자의 회전각도와 암의 회전각도인 α, θ 값을 측정하기 위하여 싱글-엔디드(single ended) 광학축 인코더를 사용한다. 이 인코더는 1회전당 1024개의 펄스를 발생시키는 인크리멘탈 타입이다[11].

올바른 제어가 진행될 경우 대부분 12시 방향 0 [rad] 부근에서 정회전 또는 역회전 펄스 신호가 입력된다. 스윙 업 제어를 제외한 정상적인 역진자 제어는 ±15° 사이에서 이루어지게 되고 56개의 펄스 신호를 가지고 제어를 하게 된다.

여기에서 α값으로 입력되는 인코더 펄스를 4체배 하기 위하여 LS7083 소자를 이용한다. Figure 5와 같이 LS7083 소자는 인코더에서 A채널과 B채널로 입력된 펄스 신호를 조합하여 4체배 된 다운클록 및 업클록 신호로 분리하여 출력한다[12]. 결과적으로 56개의 4배인 224개의 입력 신호로 역진자를 제어하게 됨으로써 보다 정밀한 제어가 가능하다. 인코더에서 입력되는 펄스 신호를 전압 변동에 의한 영향 없이 정확하게 입력받기 위하여 저항 1 [kΩ] 및 커패시터 10 [μF]를 이용하여 전기적 잡음을 필터링한다.

Figure 5:

θ angle signal encoder circuit for Theta variables

4.1.3 모터 구동부

모터 구동부는 H-브릿지 회로를 통하여 정역 회전을 한다. 모터의 속도 제어는 ATmega128의 16비트 카운터를 사용하여 카운터 값의 설정에 따라 핀 OC1A 및 OC1B의 출력이 ON 또는 OFF 되는 시간을 조정하는 PWM 제어 기법을 사용한다. ATmega128의 16비트 타이머 카운터1(Timer1)의 비교 출력 핀 PB5/OC1A 및 PB6/OC1B는 모터 구동 부분인 H-브릿지 회로의 트랜지스터와 연결되어 정역 회전 제어가 가능하도록 한다.

4.1.4 제어상태 표시부

역진자 제어기의 현재 상태를 나타내기 위하여 LCD를 사용한다. 진자가 12시 부근에서 제어가 이루어질 때 진자의 각도 α값, 암의 θ값, α의 각속도 α˙값 및 θ의 각속도 θ˙값을 표시한다. 그 이외에 역진자의 초기화 상태 및 스윙 업 상태를 표시한다. Figure 6와 같이 C 포트 C0~C7는 LCD 데이터 전송용으로 할당하고, E 포트 E5~E7은 LCD 제어 신호용으로 할당한다[13].

Figure 6:

LCD circuit

4.2 소프트웨어 구성

4.2.1 제어 순서도

역진자 제어 시스템의 전체적인 제어 순서는 Figure 7과 같다. 시작 이후 각 변수 초기화 부분부터 전역인터럽트 활성화 부분까지는 ATmega128을 어떻게 사용할지 설정하는 처리 과정이다. 변수 Theta.rad, Alpha.rad, Theta.w 및 Alpha.w 값을 구하는 부분에서부터 주제어 루프가 시작된다. 주 제어루프는 스윙 업 루프와 역진자 제어 루프로 나누어진다.

Figure 6:

LCD circuit

4.2.2 좌표계

인코더로부터 입력되는 θα 각도 신호는 아래 Figure 8Figure 9과 같이 표시할 수 있다. α 각은 인코더의 값이 0 ~ 16384의 값을 가지는 것으로 정한다. 한 바퀴가 1024 [pulse/turn]×4체배로 1바퀴 당 4096의 값을 가지게 되고 총 4바퀴의 값을 가질 수 있는 것으로 설정한다. θ값은 인코더 값이 0, 1024, 2048, 3072 및 4096 일 때 0 [rad]의 값을 가지고 α값은 0, 4096, 8192, 12288 및 16384일 때 0 [rad]의 값을 가진다. θ값의 시작점은 2048, 0 [rad]에서 시작을 한다. α각의 경우, 진자는 중력에 의해 6시 방향을 보고 있으므로 6144, 즉 π [rad]에 출발하는 것으로 설정한다.

Figure 8:

The value of Theta.position vs. actual θ angle

Figure 9:

The value of Alpha.position vs. actual α angle

4.2.3 위치검출

외부인터럽트 0번 및 1번을 이용하여 Theta.position 변수(θ각)에 인터럽트가 실행될 때마다, θ각 인코터의 펄스 신호가 입력될 때마다 인터럽트가 발생하여 1씩 감소 또는 증가하게 된다.

외부인터럽트 2번 및 3번은 Alpha.position 변수(α각)에 대하여 외부인터럽트 0과 1번과 같은 방식으로 실행한다.

좌표 설정 방법 및 Figure 7의 순서도와 같이 가상의 최솟값 (Theta.position = 0, Alpha.postion = 0)을 넘어가게 되면 최댓값으로 바뀌게 되고 반대로 최댓값 (Theta.position = 4096, Alpha.position = 16384)을 넘어서게 되면 최솟값으로 변경되게 한다.

4.2.4 각속도 계산

각속도의 측정은 타이머2(Timer2)를 이용한 인터럽트 발생으로 20.48 [ms]마다 계산을 하도록 한다. 타이머2는 256분주를 통하여 오버플로우 되는 시간이 4.096 [ms]이다. 이 오버플로우가 5회(20.48 [ms])가 될 때 타이머2 인터럽트 루틴에서 최근값(Alpha.position[0] 또는 Theta.position[0])와 20.48 [ms] 전의 값(Alpha.position[1] 또는 Theta.postion[1])의 차의 값, 즉 20.48 [ms]초 동안 계측된 αθ 인코더에서 입력된 펄스의 개수를 구한다. 이 펄스의 개수에 한 펄스에 해당하는 라디안 값을 곱하고 20.48 [ms]로 나누어 각속도를 계산한다.

4.2.5 모터 출력 제어

모터 출력 제어는 ATmega128의 16비트 타이머1(Timer1)과 비교출력장치를 이용한다. 타이머/카운터1 컨트롤 레지스터인 TCCR1A 및 TCCR1B를 이용하여 파형 발생 모드를 위상정정 PWM(Phase Correct Pulse Width Modulation) 모드로 설정한다[14].

설정한 PWM 모드는 Figure 10와 같이 TCNT1 레지스터가 0부터 최댓값이 FF까지 1씩 증가하는 상승 경사와 FF값 이후에 다시 1씩 감소하는 하강 경사의 2중 경사 모양을 갖는다. 한 사이클의 주기는 TCNT1이 FF값부터 감소하여 0을 지나 다시 증가하여 FF-1값까지 총 2×FF회의 TCNT1에 대한 클록 펄스가 소요되며, 주기 계산은 아래와 같다.

Figure 10:

Phase correct PWM mode

PhaseCorrectPWMCycle=2××PrescaleCPUclock(18) 

여기서 TOP는 최댓값 FF(16진수, 10진수로 255), 프리스케일은 256 그리고 CPU 클록은 16[MHz]이다. 따라서 PWM 파형 발생 주기는 8.16 [ms]가 된다.

위상정정 PWM 모드는 TCNT1 레지스터의 값과 OCR1 레지스터의 값을 비교하여 같아질 때, TCCR1A 레지스터의 COM1A1 및 COM1A0의 비트 설정에 따라 OC1A(PB5) 및 OC1B(PB6) 핀으로 출력된다.

역진자 시스템의 모터 정회전(암의 반시계방향)은 OC1B의 값을 0으로 설정하여 출력을 0 [V]로 하여 그라운드로 설정한다. 그리고 OC1A의 값을 조정하여 PWM 폭을 조정하여 모터에 인가되는 전압(+극)을 조정 한다. 역회전(암의 시계방향)은 OC1A와 OC1B의 설정을 반대로 사용한다.

모터 인가전압에 따른 OCR1A 및 OCR1B의 값 계산은 아래와 같다.

OCAR1A/B=Motor Applied Voltage×2560~FFMotorpliedRated Voltage(19) 

OCR1A 및 OCR1B의 값은 0 및 양의 정수 값을 가진다. 따라서 형변환 연산자 (unsigned char)를 이용하여 계산된 값을 형변환 한다.

4.2.6 스윙 업 코딩

역진자 및 암의 α, θ, α˙θ˙값을 제외한 나머지는 상수 값이다. ATmega128의 샘플링 시간 및 계산량을 줄이기 위하여 메인함수에 진입하기 전에 Kinetic_const, Potential_const, Torque_u 및 Back_EMF변수를 이용하여 미리 계산한다.

따라서 위치 에너지 계산에서 1-cosα가 아닌 1+cosα 가 되어야 한다. 이렇게 한 이유는 α각의 12시 방향, 진자가 세워졌을 때를 0으로 설정하였기 때문이다.

Vm=RmmrLrηgKgηmktu+Kgkmθ˙=Torque_u×u+Back_EMF×θ˙(20) 

으로 표현 할 수 있다.

4.2.7 상태피드백 제어기

상태 피드백 제어기 Kd를 가지는 역진자 폐루프제어 시스템을 아래의 Figure 11과 같이 나타낼 수 있으며 사각 점선 내부는 역진자로 가정 할 수 있다[15][16].

Figure 11:

Closed loop control

기준값 r은 다음과 같다.

r=θ α θ˙α˙=0 0 0 0(21) 

전체제어 블록도는 Figure 12과 같으며 역진자 모터로 입력되는 전압 u식 (17)에서 구한 Kd 및 역진자 시스템의 상태변수 θ(Theta.rad변수), α(Alpha.rad변수) 및 그것의 각속도(Theta.w변수 및 Alpha.w 변수)의 곱으로 식 (22)와 같이 계산될 수 있다.

Figure 12:

Overall Control Diagram

u=θ α θ˙ α˙K1 K2 K3 K4T=K1θ+K2α+K3θ˙+K4α˙(22) 

4.3 실험

역진자의 실험값은 Timer0을 이용하여 0.05 [s]의 간격으로 20 [s] 동안 SRAM에 인코더의 α, θ, 모터에 인가되는 전압 값을 저장한다. 실험 완료 후 UART를 이용한 시리얼 통신으로 하이퍼 터미널(Hyper terminal) 애플리케이션을 이용하여 각 데이터를 취득한다.

Figure 13의 Normal 그래프는 3장에서 모델링한 진자를 사용하여 구동 실험한 결과 그래프이다. 이 그래프와 같이 정상적으로 스윙 업을 구동을 하여 5.1 [s] 구간에서 역진자 제어가 시작되어 5.5 [s] 부근에서 α, θ 값이 0 [rad]으로 수렴한다.

Figure 13:

Test result for α-encoder positions

제어기의 강인성을 확인하기 위하여, 진자의 말단부에 각 5 [g], 10 [g] 및 15 [g]을 추가하여 질량 및 관성 모멘트의 변화를 준다.

Figure 13 중에서 5 [g]을 질량을 추가하였을 경우 6.25 [s] 부근에서 역진자 제어가 시작되어 진동을 3 [s] 동안 하였으나, 결국에는 α값이 0 [rad]으로 수렴하고 있다. 하지만, 10 [g] 및 15 [g]을 진자 말단부에 추가할 경우 Figure 13와 같이 진자가 스윙 업 단계를 넘어서지 못하고 계속 진동을 하는 결과를 보여 준다.

다음으로 진자의 축 부분에 가깝게 각 50 [g]과 100 [g]을 추가하는 방법으로 실험한다. 축 부분에 질량을 추가한 진자는 모델링한 진자만 사용했을 때보다 빨리 세워진다.

Figure 14과 같이 각 20 [g] 및 30 [g]를 진자 말단부에 추가하여 강제로 스윙 업 후, 각 12 [s] 및 11.25 [s] 부근에서 외부 충격을 가했을 경우, 진자는 중심을 잡지 못하고 쓰러진다. 20 [g]과 30 [g] 추가시, 20 [g]일 때가 30 [g]일 때보다 진동이 2 [s]정도 길게 발생하다가 넘어진다.

Figure 14:

Test result for α-encoder positions at forced inverted pendulum

또한, 진자 말단부에 10 [g] 추가할 경우와 마찬가지로 20 [g] 또는 30 [g] 추가 후 스윙 업 제어는 되지 않지만, 강제로 세우면 역진자 제어는 되는 것을 볼 수 있다.

앞의 실험 결과를 고찰해 보면, 진자의 질량 대비 3.9 [%]까지 진자 말단부 질량 증가에 대한 스윙 업 제어에 대한 강인성을 보인다. 그리고 23.6[%]까지의 진자 말단부 질량 증가에 대한 역진자 제어에 대해서도 강인성이 있는 것이 확인된다.

앞의 실험 결과를 고찰해 보면, 진자의 질량 대비 3.9 [%]까지 진자 말단부 질량 증가에 대한 스윙 업 제어에 대한 강인성을 보인다. 그리고 23.6[%]까지의 진자 말단부 질량 증가에 대한 역진자 제어에 대해서도 강인성이 있는 것이 확인된다.


5. 결 론

본 연구에서는 마이크로 컨트롤러를 이용한 회전형 역진자 제어기 설계 제작을 통해 다음과 같은 결론을 얻었다.

고가의 PC 및 매트랩 애플리케이션을 이용하는 장비를 대신하여 시중에서 쉽게 구할 수 있는 저렴한 가격대의 ATmega128 마이크로 컨트롤러를 사용하여 만족할 만한 성능 및 강인성을 가진 제어기를 제작할 수 있었다.

제어기에 대한 실험 결과, 진자질량에 대비한 진자 말단부 질량 증가에 대한 스윙 업 제어에 대하여 강인성을 보였다. 또한, 진자 말단부 질량 증가에 대한 역진자 제어에 대해서도 제어기의 강인성을 확인하였다.

Acknowledgments

Author Contributions

M. B. Sim; system modeling, T. Y. Jeon; coding, design & Writing-Original Draft Preparation, Y. C. Lee; Writing-Review & Editing, B. G. Jung; Supervision

References

  • M. O. So, H. H. Yoo, K. T. Ryu, Y. H. Lee, and J. H. Lee, “Swing-up and stabilization control of a SESIP system”, Journal of the Korean Society of Marine Engineering, 34(2), p310-317, (2010), (in Korean). [https://doi.org/10.5916/jkosme.2010.34.2.310]
  • Y. H. Lee, J. K. Ahn, G. G. Jin, and M. O. So, “Control of inverted pendulum systems using a state observer”, Journal of the Korean Society of Marine Engineering, 31(4), p462-467, (2007), (in Korean).
  • X. Yang, and X. Zheng, “Swing-up and stabilization control design for an underactuated rotary inverted pendulum system: Theory and experiments”, IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS, 65(9), p7229-7238, (2018). [https://doi.org/10.1109/tie.2018.2793214]
  • P. Bakarac, M. Kaluz, and L. Cirka, “Design and development of a low-cost inverted pendulum for control education”, 21st International Conference on Process Control(PC), p398-403, June 6-9, (2017). [https://doi.org/10.1109/pc.2017.7976247]
  • S. Awtar, N. King, T. Allen, I. bang, M. Hagan, D. Skidmore, and K. Craig, "Inverted pendulum systems: rotary and arm-driven--a mechatronic system design case study", Mechatronics, 12(2), p357-370, (2002). [https://doi.org/10.1016/s0957-4158(01)00075-7]
  • M. B. Sim, Comparison of Pole-Placement Controller and LQR for the Rotary Inverted Pendulum, M.S. Thesis, Department of Marine System Engineering, Korea Maritime and Ocean University, Korea, (2017), (in Korean).
  • Quanser Inc, Rotary Pendulum Experiment Workbook, (2011).
  • K. J. Åström, and K. Furuta, “SWING UP A PENDULUM BY ENERGY CONTROL”, IFAC 13th Triennial World Congress, p1919-1924, (1996).
  • J. S. Kim, Linear Control System Engineering, Cheong Moon Gak, (1988), (in Korean).
  • H. Shin, Introduction to PC Interface for Beginners C Pushing Robot I, Ohm, (2005), (in Korean).
  • Quanser Inc, User Manual SRV02 Rotaty Servo base Unit Set up and Configuration, (2011).
  • Jan. LSI Computer Systems, Inc., Data sheet of LS7083/LS7084 Quadrature Clock Converter, (2009).
  • S. S. Lee, Micro Controller AVR ATmega128: System Design using State Diagram, Hanbit Academy, Inc., (2013), (in Korean).
  • Atmel Corporation, Data sheet of ATmega128, (2008).
  • S. J. Kim, Visible Main Points of Control Engineering, Hanbit Academy, Inc., (2014), (in Korean).
  • K. Ogata, System Dynamics, Prentice Hall, (1978).

Figure 1:

Figure 1:
Rotary inverted pendulum

Figure 2:

Figure 2:
Rotary inverted pendulum conventions

Figure 3:

Figure 3:
Inverted pendulum and its controller

Figure 4:

Figure 4:
Controller with ATmega128

Figure 5:

Figure 5:
θ angle signal encoder circuit for Theta variables

Figure 6:

Figure 6:
LCD circuit

Figure 6:

Figure 6:
LCD circuit

Figure 8:

Figure 8:
The value of Theta.position vs. actual θ angle

Figure 9:

Figure 9:
The value of Alpha.position vs. actual α angle

Figure 10:

Figure 10:
Phase correct PWM mode

Figure 11:

Figure 11:
Closed loop control

Figure 12:

Figure 12:
Overall Control Diagram

Figure 13:

Figure 13:
Test result for α-encoder positions

Figure 14:

Figure 14:
Test result for α-encoder positions at forced inverted pendulum

Table 1:

Rotary pendulum system specifications

Symbol Description Value Unit
mp Mass of the pendulum 0.127 kg
mr Mass of the rotary arm 0.257 kg
Lp Total length of the pendulum 0.337 m
Jp Pendulum moment of inertia about center of mass 0.156 kg·m²
Bp Pendulum viscous damping coeffici ent at the pivot axis 0.0012 N·m·s/rad
Lr Rotary arm length from pivot to tip 0.216 m
Jr Rotary arm moment of inertia about center of mass 0.000998 kg·m²
Br Rotary arm viscous damping coefficient at the pivot 0.0024 N·m·s/rad
g Acceleration of gravity 9.81 m/s²
Rm Motor armature resistance 2.6 Ω
kt Motor current-torque constant 0.00768 N·m/A
km Motor back-emf constant 0.00768 V·s/rad
kg Gear ratio 70
ηm Motor efficiency 0.69 ±12%
ηg Gear efficiency 0.90 ±10%