본문 바로가기
Embedded SW/Control Theory

DC모터 모델링, 매트랩 전달함수 생성 후 그래프 확인

by 방구석 임베디드 2022. 9. 21.
반응형

우리는 이전 글에서 DC모터의 미분방정식을 구하였습니다.

이번글에서는 이전글에서 이야기한 내용을 한번 다시 요약정리하고

매트랩을 이용하여 전달함수를 만들어보고

단위응답에 따른 결과를 직접 그래프로 그려보는 시간을 가져보도록 하겠습니다.

그리고 다음글에서는 Simulink를 이용하여 오늘 수행한 것을 동일하게 수행해 보도록 하겠습니다.

미분방정식은 아래와 같습니다.

그리고 미분방정식이 성립되는 함수를 찾기 위하여

위의 수식을 '라플라스변환'을 시켰습니다.

라플라스변환을 하는 이유는 미분방정식을 쉽게 풀기 위해서 입니다.

 

따라서 위의 수식을 라플라스 변환을 시키면 아래와 같습니다.

이것을 조금더 단순화 시킨다면 아래와 같은 수식을 얻을 수 있습니다.

드디어 DC모터는 아래와 같은 전달함수인것을 확인할수 있습니다.

그렇다면 

V(s)가 단위계단 응답이라고 가정한다면 (Step)

V(s)를 U(s)로 생각해 보도록 하겠습니다.

그리고

를 Y(s)로 생각해 보도록 하겠스니다.

그러면 아래와 같은 그림이 그려지게 됩니다.

 

그리고 U(s) = 1/s 이기 때문에 아래와 같은 그림이 그려지게 됩니다.

이렇게 라플라스변환을 시킨뒤

이것을 Time Domain 함수로 변환시키면 미분방정식의 해를 구하게 되는 것입니다.

그렇다면 한번 

이제 매트랩을 이용해서 한번 실습을 해보도록 하겠습니다.

clear;
close all;
clc;

k = 1;
num = k;
den = [0.8 1];
sys = tf(num,den);

t = 0:0.1:10;
u(1:50) = 0;
u(51:101) = 1;

y = lsim(sys,u,t);

subplot(2,1,1);
fig1 = plot(t,u);
grid on;
set(fig1,'linewidth',2);

subplot(2,1,2);
fig2 = plot(t,y);
grid on;
set(fig2,'linewidth',2,'color','r');

위와 같이 명령어를 만들어 보았습니다.

sys = tf(num,den)

이렇게 명령어를 주었는데

아래와 같이 K가 1이고

Tau가 0.8인 모터의 전달함수를 만들어 보았습니다.

그리고

y = lsim(sys,u,t);

아래함수를 통해서 u라는 input과 시간을 넣어서

y의 값을 만들어 보도록 하겠습니다.

 

그리고 이것을 그림으로 표현하면 아래와 같습니다.

파랑색이 input이고 빨강색이 output입니다.

input은 DC전압을 0~ 1V로 변경할때이고

이때 RPM이 빨강색으로 나오게 됩니다.

물론 K값이 1이여서 아래로 나오는 것이지 

제대로 K값을 넣으면 RPM이 나오게 될 것입니다.

기억나시죠?

지금 저 함수를 시간함수로 표현하면 아래와 같습니다.

y1 = 1-exp(-t/0.8);
그러면 한번 그래프를 그려 볼까요?
clear;
close all;
clc;

%% Variable
t = 0 : 0.01 : 10;

%% Function
y1 = 1-exp(-t/0.8);

%% Plot
fig1 = plot(t,y1);
grid on;
set(fig1, 'color', 'r', 'linewidth', 1);
 
 위의 그래프랑 동일하게 나오고 있음을 알 수 있습니다.

이제 많이 진행이 되었습니다.

 

위에서 다양한 명령어를 사용하였는데

아래와 같이 lsim을 입력하게 되면

이 명령어에 대해서 자세한 글이 나오게 됩니다.

그 뿐만 아니라 다양한 사용 예시도

나와서 확인하고 적용할수 있으니 꼭 위의 기능을 참고해 주시기 바랍니다.

 

지금까지,

DC모터를 미분방정식을 만들어

응답에 따른 해를 구하기 위해

라플라스 변환을 수행하고

이에 따른 전달함수를 만들어 보았습니다.

또한 이 전달함수를 이용하여

응답에 따른 결과를 도출해서 그래프로 그려 보기도 하였습니다.

 

그런데, 왜 이렇게 시스템을 수식화 하는데

노력을 기울이는 것일까요?

 

우리가 어떠한 대상을 제어하기 위해서는

그 대상에 대한 수식화가 필요합니다.

그 수식화(모델링)되어진 대상 이후에

Controller 설계가 가능하기 때문에

이 부분은 꼭 선행되어야 합니다.

 

이제 다음장에서 Simulink를 통해서 동일하게 전달함수를 만들고 시뮬레이션 해보는 시간을 가지도록 하겠습니다.

반응형

댓글