영구자석 동기전동기(FSPM) 제어에서 썰매(dead-time) 보상은 성능 향상을 위해 필수적입니다. 본 문서에서는 가상 벡터 기법을 활용한 썰매 보상 방법에 대해 다루며, 이를 MATLAB의 m 파일로 구현하는 과정을 설명합니다. 여기에는 FOC(필드オリ엔테드 제어), SVPWM(공간 벡터 펄스 폭 변조), 썰매 보상 모듈이 포함됩니다.
1. 썰매 보상 개념
전류 제어에서 발생하는 썰매는 전압 벡터의 왜곡으로 이어져 시스템 성능을 저하시킵니다. 이를 해결하기 위해 가상 벡터 각도를 조정하여 보상할 수 있습니다. 주요 아이디어는 전류가 영점을 지날 때 해당 방향에 따라 전압 벡터의 각도를 미세하게 수정하는 것입니다.
예를 들어 A상 전류가 양에서 음으로 변화할 경우, 아래와 같이 보상 각도를 추가할 수 있습니다:
function compensated_angle = compensateAngle(current_values, base_angle)
compensation_factor = 0.05; % 경험적으로 설정된 보상 값
if current_values(1) > 0.1 && current_values(2) < -0.1
compensated_angle = base_angle + compensation_factor;
elseif current_values(1) < -0.1 && current_values(2) > 0.1
compensated_angle = base_angle - compensation_factor;
else
compensated_angle = base_angle;
end
end
위 코드에서 compensation_factor는 실제 시스템 상태에 따라 조정해야 하는 중요한 매개변수입니다. 일반적으로 오실로스코프를 사용해 전류 파형을 분석하며 적절한 값을 선택합니다.
2. SVPWM 알고리즘 구현
SVPWM은 전압 공간 벡터를 6개의 섹터로 나누어 처리합니다. 섹터를 판별하는 로직은 다음과 같이 작성할 수 있습니다:
function sector_number = determineSector(Valpha, Vbeta)
sector_number = 0;
if Vbeta > 0
sector_number = sector_number + 1;
end
if (sqrt(3)*Valpha - Vbeta) > 0
sector_number = sector_number + 2;
end
if (-sqrt(3)*Valpha - Vbeta) > 0
sector_number = sector_number + 4;
end
end
이 접근 방식은 if-else 문을 피하고 세 가지 조건만으로 섹터 번호를 계산하므로 효율적입니다. 다만 sqrt(3) 대신 그 값(1.732)을 직접 사용하면 연산 속도를 개선할 수 있습니다.
3. 전속도 제어 고려사항
FOC의 전속도 제어 루프에서 PI 컨트롤러의 파라미터는 썰매 보상과 함께 조정되어야 합니다. 특히 적분 시간 상수를 너무 작게 설정하면 보상 후 토크 리플이 증가할 수 있습니다. 이를 방지하기 위해 Ziegler-Nichols 법칙으로 초기 파라미터를 설정한 후 세밀하게 튜닝합니다.
보상 효과를 확인하려면 전류의 고조파 성분을 관찰합니다. 보상이 적절히 이루어지면 주로 6차 고조파가 감소하며, 최대 40%까지 줄일 수 있습니다. 그러나 전압 이용률 손실을 3% 이내로 유지해야 합니다.
4. 모델 검증 및 디버깅 팁
모델의 정확성을 검증하기 위해 썰매 모듈에 백색 잡음을 추가해 IGBT 스위칭 지연을 시뮬레이션할 수 있습니다. 보상 전후의 전류 THD(Total Harmonic Distortion) 값을 비교하면 알고리즘 성능을 직관적으로 확인할 수 있습니다.
테스트 단계는 다음과 같습니다:
- 보상 알고리즘을 오픈 루프로 테스트.
- 전속도 제어 루프를 클로즈 루프로 조정.
- 필요 시 보상 각도 방향을 반대로 조정.
결론적으로, 가상 벡터 기반 썰매 보상은 적절한 파라미터 설정과 함께 전류 왜곡을 크게 줄이는 데 효과적입니다.