상세 컨텐츠

본문 제목

PWM 이해하기

제어이론

by Zin9 2024. 1. 29. 19:33

본문

728x90

포스팅이 조금 늦어져버렸지만, 2월까지 PWM에 대한 글을 올릴 예정이다.

PWM은 대략적으로 이해하고 있지만, 그 이론적인 내용과 다양한 방법에 대해 알아보고자 한다.

우선은 MATLAB/SIMULINK로 설계해보고 나서 간단히 수식과 이론을 이해할 것이다.

그리고 나서는 PSIM으로도 해볼까한다.

 

 

 

우선 SIMULINK로 설계를 해보자.

 

1. SIMULINK 블록

아래 그림은 필자가 설계한 PMSM 제어 블록도이다.

 

<그림 1. PMSM 제어 블록도>

 

위치 제어기와 속도 제어기는 기본으로 제공하는 PID 제어 블록을 사용한다.

 

DQ 역변환 블록

DQ 역변환 블록인 "Inverse DQ"는 코드를 직접 만들어 적용했지만, 기본 제공하는 블록을 사용해도 무방하다.

블록 안에서 D축 전류 지령을 0으로, Q축 전류 지령은 속도 제어기의 출력인 토크 지령을 토크 상수로 나누어서 입력하고 있다.

전기각은 기계각에 쌍 극 수를 곱해서 입력해주었다.

 

<그림 2. DQ 역변환>

 

 

CRPWM

그리고 그 다음으로 중요한 CRPWM 블록이다.

CRPWM은 검색하면 잘 나오지 않는다.

Current Regulated PWM의 약어로, 전류 제어 PWM이다.

목표 전류와 현재 전류의 차이를 이용하여 PWM 신호를 생성한다.

이 차이가 양수면 HIGH 상태를, 음수면 LOW 상태를 생성하여 전류를 제어한다.

이 방식을 사용하면 전류제어기 없이 PWM 신호를 만들어낼 수 있어서 시뮬레이션 시간이 줄어든다.

 

<그림 3. CRPWM 블록의 일부>

그림 3은 CRPWM의 일부이다.

직접 설계해보라는 의미에서 간단히 표시해두었다.

상태변수 값을 저장하기 위해 memory 블록을 사용한다.

그리고 HIGH 또는 LOW로 출력하기 위해 relay 블록을 사용한다.

마지막으로 반전 신호를 출력하기 위해 logical operator를 사용한다.

 

 

Switch

자, 다음으로 스위칭 소자가 들어있는 블록이다.

필자는 IGBT를 사용했지만, MOSFET을 사용해도 무방하다.

어차피 이산시간계로 설계하지도 않을 것이므로 편한 소자를 사용하자.

 

<그림 4. 스위칭 소자 블록>

각각의 스위칭 소자에 붙어 있는 이상한 블록?은 terminator이다. 사용하지 않아도 큰 문제는 없다.

그리고 DC 링크 전압을 입력해주기 위해 DC voltage source를 사용한다.

Simscape / Electrical / Specialized Power Systems / Sources 에 있다.

 

※ 자세히 보면 전력변환 소자와 연결되는 와이어의 끝은 네모 상자로 표시된다.

이 신호선은 scope 블록으로 관찰 불가능하다.

이러한 점 때문에 PSIM을 사용하는 게 더 좋은 것 같다.

(물론 시뮬레이션 시간도 SIMULINK가 더 오래 걸린다.)

 

IGBT 블록은 이상적인 소자를 사용하기에 블록에서 제공하는 기본값을 그대로 사용한다.

저항이나 인덕턴스를 따로 설정할 필요가 없다.

Simscape / Electrical / Specialized Power Systems / Power Electronics 에 있다.

 

마지막으로 UVW상 전압 신호를 연결하기 위해 connection port가 필요하다.

Simscape / Utilities 에 있다.

 

모터

모터는 PMSM 모델을 사용한다.

Simscape / Electrical / Specialized Power Systems / Electrical Machines에 있다.

기본 값도 왠만하면 바꾸지 않고 사용하자. 물론 이렇게 되면 게인 값을 조금 손 봐줘야 할 수도 있다.

값을 직접 설정하고 싶다면, PMSM 블록에서 빨간 상자에 해당하는 버튼을 클릭해주자.

토크상수를 비롯한 파라미터를 정확하게 알고 있는 경우에만 사용하자.

이 블록에서 약간 이상한 점이 있다면, 값을 설정하더라도 파라미터 설정 창을 다시 켜면 이전에 입력했던 값이 전부 날아가버린다는 것이다.

왜 이렇게 해놓았는지는 의문이다.

<그림 5. 모터 파라미터 설정>

 

 

시뮬레이션 결과

시뮬레이션에서는 위치 지령을 스텝으로 입력했다.

0도에서 180도로 입력을 주니, 순간적으로 100RPM까지 상승했지만, 0.2초 이내에 지령값에 수렴한다.

그리고 토크 파형은 다소 좋지 않게 나왔는데, 전류제어기가 없어서 그런 거 같기도 하다.

 

<그림 6. 시뮬레이션 결과>

 

 

이렇게 SIMULINK로 제어기를 설계하고 PWM도 적용해보았다.

제어 알고리즘을 테스트하는 목적이라면 PWM을 제외하고 하는 편이 훨씬 낫다.

또한, PSIM으로 시뮬레이션 하는 편이 훨씬 빠르니 이런게 있다는 것 정도만 알아두자.

다음 시간에는 이론으로 접근해보도록 한다.

728x90

관련글 더보기