BLDC FOC & 6 steps 控制方法
Posted by Romeo on Jan. 09, 2025

BLDC FOC 控制方法理論與基本程式碼撰寫

1. 磁場導向控制(FOC)理論概述

磁場導向控制(Field-Oriented Control,FOC)是一種先進的電機控制方法,通過將電機的三相電流變換到旋轉坐標系,使得控制策略能夠直接調節轉矩與磁通,從而提高電機的性能和效率。

FOC 的核心思想:

  • Clark 變換(αβ 坐標變換):將三相電流 (Ia, Ib, Ic) 轉換到 αβ 靜止坐標系。
  • Park 變換(dq 坐標變換):進一步將 αβ 坐標變換到旋轉 dq 坐標系,使得 d 軸對應於磁通,q 軸對應於轉矩。
  • PI 控制:通過 PI(比例-積分)控制器調節 dq 軸的電流,使得轉矩與磁通能夠被精確控制。
  • 反向變換(Park 反變換 & Clark 反變換):將 dq 軸電壓轉換回三相 AC 信號,以驅動 BLDC 電機。

2. 六步換相控制(六步方波方法)

六步換相控制(Six-Step Commutation,又稱梯形控制)是一種較為簡單的 BLDC 控制方法,通過在 6 個換相階段分別對電機繞組進行通電來驅動電機。
六步換相的核心思想:
  • 利用霍爾傳感器或反電動勢 檢測轉子位置,確定換相時機。
  • 每 60° 電氣角換相一次,共 6 個換相階段,每次開啟和關閉兩個特定的 MOSFET。
  • 通過 PWM 控制輸出電壓,調節電機轉速。

3. FOC 控制流程與基本程式碼解釋




#include <stdio.h>
#include <math.h>

#define PI 3.14159265358979

// Clarke 變換
void clarkeTransform(float Ia, float Ib, float *Ialpha, float *Ibeta) {
    *Ialpha = Ia;
    *Ibeta = (Ia + 2 * Ib) / sqrt(3);
}

// Park 變換
void parkTransform(float Ialpha, float Ibeta, float theta, float *Id, float *Iq) {
    *Id = Ialpha * cos(theta) + Ibeta * sin(theta);
    *Iq = -Ialpha * sin(theta) + Ibeta * cos(theta);
}

// 反 Clarke 變換
void inverseClarkeTransform(float Valpha, float Vbeta, float *Va, float *Vb, float *Vc) {
    *Va = Valpha;
    *Vb = -0.5 * Valpha + sqrt(3) / 2 * Vbeta;
    *Vc = -0.5 * Valpha - sqrt(3) / 2 * Vbeta;
}

// 反 Park 變換
void inverseParkTransform(float Vd, float Vq, float theta, float *Valpha, float *Vbeta) {
    *Valpha = Vd * cos(theta) - Vq * sin(theta);
    *Vbeta = Vd * sin(theta) + Vq * cos(theta);
}

// 空間向量 PWM (SVPWM) 簡易版本
void SVPWM(float Vd, float Vq, float theta, float *Va, float *Vb, float *Vc) {
    float Valpha, Vbeta;
    inverseParkTransform(Vd, Vq, theta, &Valpha, &Vbeta);
    inverseClarkeTransform(Valpha, Vbeta, Va, Vb, Vc);
}
    

4. 六步換相基本程式碼實現(C 語言)


#include <stdio.h>
#define HIGH 1
#define LOW 0

// 6 個換相步驟的 MOSFET 開關狀態
const int commutationTable[6][3] = {
    {HIGH, LOW, LOW},  // Step 1
    {HIGH, HIGH, LOW},  // Step 2
    {LOW, HIGH, LOW},  // Step 3
    {LOW, HIGH, HIGH},  // Step 4
    {LOW, LOW, HIGH},  // Step 5
    {HIGH, LOW, HIGH}   // Step 6
};
    

5. 總結

控制方法 優勢 缺點
FOC 高效、低噪音、高性能 控制算法複雜,需要坐標變換
六步換相 控制簡單 低速時轉矩脈動較大