User Tools

Site Tools

study:foc-topic:241015-001:index

SimpleFOC調參1-力矩控制

Local Backup

背景介紹

  • FOC作為直流無刷馬達控制最常用的演算法,已廣泛應用。在開源社群最常用的FOC專案有:simpleFOCODriveVESC等。其中simpleFOC因為簡單易用,支援多種硬體平台,很適合新手入門。我用simpleFOC的過程中踩了不少坑,在此記錄學習調試過程中的一些心得。
  • 硬體平台:開始最好直接購買套件,熟悉後再自己搭配,我這裡直接買的燈哥開源的套件
    • 馬達:2204
    • 驅動器:L6234
    • 磁編碼器:AS5600
    • 電流檢測:INA240
    • 主控MCU:ESP32
  • 軟體平台:Arduino,simpleFOC庫,simpleFOC studio圖形化調試工具
    • IDE工具:PlatforIO,也可以使用Arduino IDE(編譯、下載速度很慢,所以我才找到了替代工具platforIO)

FOC控制方式有兩種:

  • 開環控制:只需要馬達、驅動器,不需要編碼器、電流偵測。演算法簡單,但是控制效果差,驅動效率差。驅動器、馬達很容易過熱燒壞,我就燒過一個驅動器,好幾個馬達。
  • 閉環控制:需編碼器、電流偵測,演算法複雜,控制效果好,驅動效率高。初學者一定要用閉環控制,等熟悉了之後再玩開環控制。

這裡主要總結閉環控制的幾種控制方式:力矩控制,速度控制,角度控制。這裡只總結了我自己調試的各種參數及圖形化意義。具體程序和方法參考simpleFOC官方文檔,裡面有詳細介紹。由於篇幅較長,分為兩篇來寫,本篇只總結力矩控制,下篇總結速度控制、位置控制

1 電壓控制

  • 此控制方式類似直流有刷馬達的控制,透過設定目標電壓Uq,同時讀取馬達角度angle(a),經過FOC演算法得到相電壓Ua、Ub、Uc,FOC演算法保障線圈產生的磁場方向與永磁鐵磁場方向垂直90°,從而保障扭力最大。相電壓透過驅動器BLDC Driver驅動馬達轉動。
  • 電壓控制只用到了磁編碼器偵測到的角度,馬達參數(相電阻、KV值等),沒有PID參數設置,所以各個PID都是用預設參數,不會對控制效果產生影響。

1.1 pure voltage:不需要馬達參數

  • 因為馬達線圈產生的電流與扭力成正比,而電流又與電壓成正比,所以有:
  • 其中Uq:設定電壓值,I:相電流,k:比例係數,T:扭力。因為沒有電流回饋,只能根據角度回授來預估實際電壓U,所以實際電壓會不穩定。
  • 注意:這個公式只適用於低速情況,在高速情況下,I = (Uq - EMF) /R,馬達線圈中的反向電動勢會產生顯著的影響,等式不再成立。

1.2 voltage + current estimation:需相電阻

  • 如果設定了電機相電阻參數,那麼:
  • 這種控制方式比pure voltage控制更精準一些。因為知道了相電阻,可以很容易的計算出驅動電流。對應的電壓波動也要小很多。同樣只在低速情況下有效,高速時仍受反向電動勢影響。

1.3 voltage + current estimation + back-EMF compensation:需相電阻+KV值

  • 在simpleFOC最新版(V2.2.2)中增加了一個馬達參數,KV值。在相電阻的基礎上,又增加了反向電動勢的回授。透過角度感測器偵測角度,角度微分後得到速度velocity(v),在經過低通濾波後除以KV值,可以預估出反向電動勢(BEMF),Ubemf = v/KV,可用作近似計算,二者不完全相等。
  • 增加了KV值後,當輸入目標值0.2時,電壓會把BEMF一起計算進去。
  • 當輸入目標值設為0時,給予一個啟動速度,馬達就會轉動(因為有BEMF產生)。加一個負載很容易停止(強制BEMF為0)。
  • 由於電壓控制沒有用到PID調節器,修改所有PID參數都不會對結果產生影響。

2 電流控制DC current control

  • 電流控制除了需要偵測角度之外,還需要同時偵測相電流,以便能夠直接控制電流大小,控制效果比電壓控制好很多,演算法要複雜一些,需要用到1個低通濾波(low pass filter), 1個current q PID調節器。
  • 假設馬達產生的扭矩與驅動電流成正比,可以透過控制電流來控制扭矩。這個假設的前提是在低速情況下iDC=iq,id分量可以忽略不計,在高速情況下,id分量無法忽略,iDC=iq不再成立,此時就需要用到下一節總結的FOC電流控制了。
  • 如下圖所示,simpleFOC studio透過串口把所有參數都顯示出來。左上方區域顯示感測器參數:
    • angle:磁編碼器偵測到的角度,單位:弧度
    • velocity:根據angle計算出來的角速度,單位:rad/s
    • current:電流偵測電路偵測到的電流,單位:A
    • target:使用者設定的目標值
    • 右上方區域即時繪製監測變數:target,Vq,Vd,Cq,Cd,Vel,Angle
    • 右下方區域是串口命令列
  • 左下方列出了simpleFOC可以調整的參數:
    • motion config:運動方式配置
      • motion control type: torque ,velocity, angle,velocity openloop, angle openloop
      • torque control type: voltage, DC current , FOC current
      • motion downsample:1000, 取樣率/1000,頻繁採用會對FOC控製造成影響,所以要downsample
    • velocity PID:速度環PID控制,在下一篇SimpleFOC調參2-速度控制中介紹
    • angle PID:位置環PID控制,在另一篇SimpleFOC調參3-位置控制中介紹
    • current q PID:本節詳細介紹各參數意義及對應圖形顯示
    • current d PID:下節詳細介紹各參數意義及對應圖形顯示
    • limits:馬達極限參數限制
      • velocity limi: 速度限制
      • voltage limit:電壓限制
      • current limit:電流限制
    • States:電機狀態參數
      • target:目標值
      • voltage q:電壓q分量
      • voltage d:電壓d分量
      • current q:電流q分量
      • current d:電流d分量
      • velocity:速度
      • angle:角度
    • sensor config:感測配置
      • zero angle offset:零角度偏移量,單位:弧度
      • electrical zero offset:電零角度偏移量,單位:弧度
    • general settings:通用配置
      • phase resistance:馬達相電阻
      • motor status:馬達狀態enabled,disabled
      • PWM modulation: PWM調變方式sine PWM, space vector PWM, trapezoidal 120, trapezoidal 150
      • modulation center: 調變中心對齊enabled, disabled
        • motion control type 是torque力矩控制時,選擇torque control type為DCcurrent時,只用到了current q PID調節器。設定target為0.2,目標是把驅動電路控制在0.2A,各參數意義及對應波形圖如下:
    • proportional gain: 比例增益,影響PID控制的反應速度,P值越大反應越快
    • Integral gain:積分增益,累積誤差的反應速度,I值為0時,current出現很大偏差,不會糾偏。 I=300、500時響應見下圖
    • Derivative gain:微分增益,未使用
    • output ramp:輸出斜率?意義不清楚
    • output limit:輸出限制,限制電壓
    • low pass filter: 低通濾波器Tf 濾波時間常數。影響濾波效果。

3 FOC電流控制FOC current

FOC Current

  • 這種控制方式是真正的完全版FOC控制。需要用到磁編碼器,電流檢測。將同時同時電流的q分量和d分量。目標是使desired current Id與q分量相等,d分量等於零。這樣無論在低速、高速的情況下都會有較好的控制效果,不會受d分量影響。這裡用到2個PID控制器,2個low pass filter濾波器。
  • FOC電流控制與DC電流控制最大的差別是增加了current d控制,同樣設定target=0.2,同樣空載情況下,角速度可以達到175作用,而DC電流控制角速度只有80左右。用手去擋電機,讓電機停止後,明顯感覺力道變大了。這也說明:torque扭力控制,控制的是驅動電流大小,而不是真實的馬達扭力。
  • Current d PID個參數意義與Current q PID相同,但作用對像不同了。 current q = target value, current d = 0
    • proportional gain: 比例增益,影響PID控制的反應速度,P值越大反應越快
    • Integral gain:積分增益,累積誤差的反應速度,I值為0時,current出現很大偏差,不會糾偏。
    • Derivative gain:微分增益,未使用
    • output ramp:輸出斜率?意義不清楚
    • output limit:輸出限制,限制電壓
    • low pass filter: 低通濾波器Tf 濾波時間常數。影響濾波效果。

4. 三種不同控制方式對比

4.1 voltage

  • 下圖可以看到voltage控制時電流只是估計值,空載和負載時電流變化很大。

4.2 DC current

  • 下圖可以看出DC current直接控制電流,控制效果比voltage好很多,但還是有一部分能量浪費在了current d上

4.3 FOC current

  • FOC控製做到了高低速情況下都使current q=target value, current d=0,能量利用率最高,轉速也最快

5. 調試過程中問題

5.1 問題1:驅動電流單次變化太大時,電機會出現震盪,

  • 參數設定:
    • motion control type:Torque
    • torque control type:FOC current
    • Current q PID: P=5, I=1000, D=0
    • Current d PID: P=5, I=1000, D=0
  • 現象:設定目標值由低到高時一切正常,例如M0—M0.5,M0.5–M1.0。但是設定目標值由高到底時,單次變化過大會出現過衝,電流current q直接到-2A左右,系統在此達到平衡並震盪。
  • 過衝值與比例因子P相關,設定current q、d的比例因子為10,結果如下圖
  • 設定current q的比例因子為20,current d的比例因子為10,結果如下圖
  • 最終如下圖,可比較好的結果。但當M1.5—M0時優惠出現震盪。要獲得穩定的加減速過程,需要逐步加速、減速,不能讓力矩控制環中的電流current q、d發生巨變,如果發生巨變很可能會造成馬達震盪,甚至損壞馬達、驅動電路。
  • 11 person(s) visited this page until now.

Permalink study/foc-topic/241015-001/index.txt · Last modified: 2024/10/15 15:18 by jethro

oeffentlich