모터제어

12. FOC 펌웨어 구현 – MCU에서 실제로 돌릴 때 챙겨야 할 것들

motorcontrol 2026. 10. 3. 22:32
반응형
시뮬레이션에서 잘 돌던 FOC, 보드에 올리면 왜 안 돌까?

 

🧠 시뮬레이션과 실제의 차이

시뮬레이션은 연속 시간, 무한 정밀도, 이상적인 센서를 가정합니다.
실제 MCU에서는 샘플링 지연, 연산 시간, 양자화, 노이즈, 데드타임이 모두 끼어듭니다.

항목 시뮬레이션 실제 MCU
시간 연속 / 10µs 고정 스텝 PWM 주기 단위 이산 제어
연산 double 부동소수점 FPU 유무에 따라 float / Q-format
전류 측정 이상적인 값 ADC 오프셋, 게인 오차, 노이즈
인버터 이상 스위치 데드타임, 전압 강하

⏱️ 제어 루프 타이밍 설계

PWM 캐리어(센터 정렬) 골짜기
  └─ ADC 트리거 (Low-side ON 구간 중앙)
       └─ ADC 완료 인터럽트
            ├─ 전류 변환 (Clarke/Park)
            ├─ 각도 추정 / 센서 읽기
            ├─ 전류 PI
            └─ SVPWM 듀티 계산 → 다음 주기 반영
  • PWM-ADC 동기화 : 스위칭 노이즈를 피해 샘플링 위치 고정
  • 1 주기 지연 보상 : 듀티가 다음 주기에 반영되므로 θ를 ω·Ts·1.5만큼 앞당겨 사용
  • ISR 실행 시간 : PWM 주기의 50~70% 이내로 관리 (GPIO 토글로 측정)

🔢 고정소수점 vs 부동소수점

구분 장점 주의점
Q15 / Q31 FPU 없는 MCU에서도 빠름 오버플로우·스케일링 관리 필수
float (FPU) 코드 가독성, 튜닝 편리 FPU 미지원 시 연산 시간 급증

📌 Q-format을 쓸 때는 전류·전압·속도를 정격값 기준 per-unit으로 정규화해 두면 스케일링 실수가 크게 줄어듭니다.


🛠️ 보드 위에서 자주 만나는 문제

증상 원인 후보 대응
정지 상태에서 전류가 흐름 ADC 오프셋 기동 전 오프셋 캘리브레이션
저속 토크 리플 데드타임 전압 오차 전류 극성 기반 데드타임 보상
특정 속도에서 진동 PI 대역폭 과다 / 지연 전류 루프 대역폭 재설정
가속 중 탈조 추정기 수렴 부족 전환 속도·PLL 게인 조정

✅ 마무리 요약

항목 요약
⏱️ 타이밍 PWM-ADC 동기 + 1주기 지연 보상
🔢 연산 MCU 사양에 맞춰 Q-format / float 선택
🧪 보정 ADC 오프셋, 데드타임 보상 필수
📈 디버깅 DAC·CAN·디버거로 내부 변수 실시간 관찰

 

다음 챕터에서는 전류·속도 제어기 PI 게인 튜닝을 실제 파라미터 기반으로 계산하는 방법을 정리해볼게요.

반응형