그라운드 임베디드 EN 유튜브 구독

노트 / 모터 제어

FOC: 3상 전류를 두 개의 직류로

클라크, 파크 변환으로 회전하는 3상 전류를 회전자에 붙은 좌표의 d축, q축 직류 값으로 바꿔 토크를 직접 제어합니다.

GROUND EMBEDDED · 정리 노트모터 제어 09FOC 1iq = -iα·sinθ + iβ·cosθ 2id = iα·cosθ + iβ·sinθ

왜 좌표를 바꾸나

3상 전류는 회전 속도에 맞춰 계속 바뀌는 사인파라서, PI 제어기로 직접 따라가게 하기 어렵습니다. 회전자와 같이 도는 좌표계에서 보면 이 전류가 멈춘 직류 값이 되고, 직류는 PI로 쉽게 제어됩니다.

변환 순서

3상 전류Clarkeα, βParkd, qPI 제어역변환 → PWM
FOC 한 주기. 3상 전류를 회전자 기준의 두 값으로 바꿔 제어한 뒤 다시 3상으로 돌려보냅니다.
  1. 클라크 변환: ia, ib, ic → iα, iβ (정지 2축)
  2. 파크 변환: 회전자 전기각 θ로 회전 → id, iq (회전 2축)
  3. PI 제어: id → 목표 0 (표면 자석 모터), iq → 목표 토크 전류
  4. 역파크 변환: vd, vq → vα, vβ
  5. SVPWM: vα, vβ → 세 상 듀티
iq = -iα·sinθ + iβ·cosθ
id =  iα·cosθ + iβ·sinθ

d축과 q축의 의미

d축자석과 같은 방향 · 보통 0으로q축자석과 직각 · 토크를 만듦
회전자에서 본 두 방향.
  • q축 전류: 토크를 만듭니다 (토크 = 1.5 · p · λ · iq)
  • d축 전류: 자속 방향. 0으로 두면 같은 전류로 최대 토크, 음수로 주면 고속에서 약자속 운전

필요한 것

  • 정확한 전기각 θ: 엔코더, 보간한 홀, 또는 센서리스 관측기
  • 빠른 전류 루프: PWM 주기(10~20kHz)마다 위 계산 전체
  • 정확한 전류 센싱과 타이밍

6스텝보다 토크 리플이 작고 조용하며 효율이 좋아서 전기차, 산업용 서보, 고급 드론 ESC가 FOC를 씁니다.

한 줄로 요약하면

회전자와 함께 도는 좌표에서 보면 3상 교류 전류가 두 개의 직류 값으로 보입니다. 직류는 PI 제어기로 다루기 쉬우므로, 좌표를 바꿔서 제어하고 다시 되돌리는 것이 FOC입니다.

한 주기에 하는 일

순서 단계 입력 → 출력
1 전류 측정 션트 저항과 ADC → ia, ib (ic = −ia − ib)
2 클라크 변환 ia, ib → iα, iβ (정지한 2축)
3 파크 변환 iα, iβ, 각도 θ → id, iq (회전하는 2축)
4 PI 제어 두 개 id 오차, iq 오차 → vd, vq
5 역파크 변환 vd, vq, θ → vα, vβ
6 SVPWM vα, vβ → 세 상의 듀티

이 여섯 단계를 PWM 주기마다(보통 10 k~20 kHz) 반복합니다.

d축과 q축

  • q축 전류(iq): 자석의 자속과 직각 방향. 토크를 만듭니다. 토크는 iq에 비례합니다.
  • d축 전류(id): 자석과 같은 방향. 토크에 기여하지 않으므로 보통 0으로 제어합니다. 고속에서 역기전력을 누르려고 음수로 주는 것이 약계자 제어입니다.
3D 실험실여기까지 읽은 내용을 직접 돌려 볼 수 있습니다→

변환 코드

// 클라크: 3상 → 정지 2축 (ia + ib + ic = 0 가정)
float i_alpha = ia;
float i_beta  = (ia + 2.0f * ib) * 0.57735027f;      // 1/√3

// 파크: 정지 2축 → 회전 2축
float s = sinf(theta), c = cosf(theta);
float id =  i_alpha * c + i_beta * s;
float iq = -i_alpha * s + i_beta * c;

// 역파크: 회전 2축 → 정지 2축
float v_alpha = vd * c - vq * s;
float v_beta  = vd * s + vq * c;

theta는 전기각입니다. 기계각에 극쌍 수를 곱한 값이며, 엔코더가 0을 가리킬 때의 전기각 오프셋을 한 번 찾아 더해 주어야 합니다.

각도가 틀리면 벌어지는 일

각도 오차가 δ이면 토크는 cos δ만큼 줄어듭니다.

각도 오차 남는 토크 증상
0도 100% 정상
30도 87% 전류가 늘고 발열
60도 50% 힘이 눈에 띄게 약함
90도 0% 전류만 흐르고 돌지 않음
90도 초과 음수 반대로 돌거나 폭주

같은 전류를 흘리는데 토크가 부족하거나 모터가 유난히 뜨거우면 각도 오프셋부터 의심합니다. 이 관계는 사이트의 FOC 실험실에서 각도 오차 슬라이더를 움직여 직접 볼 수 있습니다.

6스텝과 비교

6스텝 FOC
전류 모양 계단 사인파
토크 출렁임 큼 작음
필요한 센서 홀센서 전류 센서 + 정밀한 각도
연산량 적음 삼각함수와 PI 두 개
쓰임 드론, 전동 공구 전기차, 로봇 관절, 가전

현업에서 자주 터지는 문제

  • 전류 샘플 시점: 스위칭 순간에 재면 노이즈가 섞입니다. PWM 주기 가운데에서 ADC를 트리거합니다.
  • PI 출력 제한: vd, vq를 합친 크기가 낼 수 있는 전압을 넘지 않게 제한하고, 포화되면 적분을 멈춥니다.
  • 전류 센서 오프셋: 전류가 0일 때의 ADC 값을 시작할 때 측정해 빼 줍니다.
  • 극쌍 수 착오: 전기각이 틀려 저속에서 떨고 고속에서 힘이 빠집니다.
3D 실험실에서 직접 돌려 보기값을 바꾸며 이 노트의 원리를 확인합니다→영상으로 이어 보기모터 시리즈 10편세상을 움직이는 힘 = DC모터, 이 영상 하나로 정리해드립니다.PROJECT COURSEDC 모터를 H-브리지로 직접 구동해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →