강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

잠든꿀벌님의 프로필 이미지
잠든꿀벌

작성한 질문수

PMSM 벡터제어 완전정복 - 이론, Matlab, STM32 실습까지!

모터의 저항,인덕턴스 측정 방법

V/F 전압 제어

해결된 질문

작성

·

24

·

수정됨

0

지금 강의에 따라 실습을 같이 진행해보고 있는데요. 제꺼랑 강의랑 조금 실행이 달라서 여쭤봅니다.

  1. 일단 강의에서 코드 부분에 theta_I 부분(sin/cos 테이블 참조라 되어있는 부분)을 주석 처리하고 하셨는데 그렇게 할 경우 RpmRef를 줘도 모터가 돌지를 않습니다...config.h에서는 전동킥보드 숫자로 바꾼 상태입니다)(I_F_Theta값은 0~5정도 계속 변합니다)

  2. 강의처럼 VdeSet부분을 똑같이 바꿔보았는데요. 강의보다 전류값이 작게 흐르는 게 확인이 되었는데, 이거는 제 코드 문제 부분일지 궁금합니다.(예를 들어 VdeSet = 1로 했을 떄, 강의에서는 ias = 0.6까지 오른다하셨는데, 제 꺼는 많이 올라봐야 0.3까지 올라갑니다..)
    3. 이거는 좀 헷갈려서 그런데 강의에서는 q축 전류만 계속 바꾸셨던 거 같은데, 여기서는 왜 d축 전압만 바꾸시는 지 궁금합니다

퀴즈

FOC에서 Center-Aligned PWM을 사용하는 주된 이유는 무엇인가요?

스위칭 손실 감소

정확한 전류 중앙값 샘플링

높은 PWM 주파수 달성

모터 소음 최소화

답변 1

0

제어쟁이님의 프로필 이미지
제어쟁이
지식공유자

안녕하세요, 제어쟁이입니다.
질문 주셔서 감사합니다.

말씀주신 내용 기준으로 답변드리면,

  1. theta_I 부분을 주석 처리하면 모터가 바로 회전하지 않는 것이 정상일 가능성이 큽니다.
    해당 부분은 전기각에 해당하는 sin/cos 값을 만들거나 참조하는 역할이라, 이 값이 정상적으로 들어가지 않으면 좌표변환이나 전압 인가 방향이 맞지 않아서 회전자계를 제대로 만들 수 없습니다.
    그래서 RpmRef를 주더라도 모터가 돌지 않을 수 있습니다.

다만 이 부분은 현재 사용 중이신 코드가

  • 강의 중간 실습용 코드인지

  • 스테이트플로우가 포함된 최종 코드인지
    에 따라 확인 포인트가 조금 달라집니다.

만약 최종 코드 기반으로 실습 중이시라면, 스테이트플로우 쪽에서 theta 생성이나 운전 모드 전환에 관여하는 부분이 있을 수 있어서, 단순히 theta_I만 주석 처리하면 의도한 동작이 안 나올 수 있습니다.
반대로 강의 내용을 따라 직접 수정하신 코드라면, 어떤 부분을 변경하셨는지에 따라 충분히 다른 결과가 나올 수 있습니다.

이 부분은 현재 사용 중인 코드 일부를 같이 봐야 정확하게 판단할 수 있습니다.
가능하시면 관련 부분을 캡처해서 보여주시면 더 구체적으로 설명드리겠습니다.

  1. VdeSet = 1일 때 강의보다 전류가 작게 나오는 부분은, 코드 문제일 수도 있지만 그것만이 원인은 아닙니다. 이론적으로는 조건이 동일하다면 비슷한 전류가 나와야 합니다. theta를 0으로 설정하고 하신건지 확인 부탁드립니다.

  1. V/F 강의에서 d축 전압을 바꾼 이유는, q축 전류 제어를 정식으로 한다기보다 실습상 동작을 단순하게 보여주기 위한 목적이 더 큽니다.
    벡터제어 관점에서 보면,

  • q축: 토크와 직접 관련

  • d축: 자속 방향 성분

으로 이해하는 것이 맞습니다.

그래서 일반적인 PMSM 토크 제어에서는 q축 전류를 주로 제어하는 것이 맞습니다.
다만 강의 해당 구간에서는 완성된 폐루프 전류제어기를 설명하는 목적보다는,
전압 인가에 따라 전류가 어떻게 보이는지, 그리고 회전이 어떻게 형성되는지를 실습으로 보여드리기 위해 비교적 단순한 방식으로 진행한 것입니다.

즉, 여기서 d축 전압을 바꾼 것은
실제 운전에서는 항상 d축만 제어한다는 의미가 아니라,
실습 설명을 단순화하기 위한 예시로 이해하시면 됩니다.

추가 질문 사항 있으시면 회신 부탁드립니다.

감사합니다!

잠든꿀벌님의 프로필 이미지
잠든꿀벌

작성한 질문수

질문하기