利用實時速度檢測實現(xiàn)漸進(jìn)式再生制動
當(dāng)電機(jī)在汽車傳動應(yīng)用中使用時,最令人感興趣的特性之一是它們還能用作發(fā)電機(jī),因而在剎車時可以給汽車電池充電。Roboteq公司的電機(jī)控制器可以通過方便地編程充分利用這個特性以受控和漸進(jìn)的方式實現(xiàn)再生制動。
本文討論了使用電機(jī)速度檢測這種簡單且非常高效的技術(shù)背后的原理,并介紹了使用與Roboteq控制器連接的無刷電機(jī)的一個實際例子。
既是電動機(jī)又是發(fā)電機(jī)
電機(jī)的簡化模型是一個電阻串聯(lián)一個電感和一個電壓發(fā)生器。電阻和電感就是電機(jī)內(nèi)部電磁部件的電阻和電感。電壓發(fā)生器代表電機(jī)在轉(zhuǎn)動時由電機(jī)本身產(chǎn)生的電壓,一般稱為反向電動勢,簡寫為BEMF.BEMF電壓是一個固定的電壓轉(zhuǎn)速比值(V/RPM)。
能夠使用Roboteq無刷電機(jī)控制器實現(xiàn)漸進(jìn)式再生制動的實驗性電動踏板車。
圖1:電動機(jī)模型。
當(dāng)給處于機(jī)械鎖定狀態(tài)的電機(jī)加電時,模型實際上可以簡化為一個兩端連接電池的電阻,測得的電流值為I=VBat/Rm.電感只是影響電壓加上瞬間的電流,如果電壓保持恒定這種影響會消失。
圖2:當(dāng)電機(jī)停轉(zhuǎn)時的等效電路。
如果電機(jī)允許旋轉(zhuǎn),那么它將產(chǎn)生正比于旋轉(zhuǎn)速度的BEMF電壓。此時的模型是一個電阻加上分別位于電阻兩端的發(fā)電器。電阻上的最終電壓等于電池電壓減去BEMF,電流則為I = (VBat - VBemf) / Rm.在實際應(yīng)用中,這意味著隨著電機(jī)轉(zhuǎn)速的提高,電流會減小。
圖3:加速狀態(tài)。
如果電機(jī)轉(zhuǎn)速可以足夠快到BEMF等于電池電壓,兩個電壓源將相互抵消,電阻上的等效電壓為0,此時電池將沒有電流流出。在實際應(yīng)用中這種情況是不會發(fā)生的,因為這意味著電機(jī)沒有一點扭矩,而克服摩擦力總是需要一定的扭矩。
圖4:無負(fù)載或摩擦力時的穩(wěn)定速度。
在實際應(yīng)用中,當(dāng)BEMF達(dá)到產(chǎn)生扭矩的電池電流足以克服摩擦力和電機(jī)機(jī)械負(fù)載時電機(jī)速度將趨于穩(wěn)定。
然而,如果電機(jī)被外力驅(qū)動(例如汽車下坡),旋轉(zhuǎn)會導(dǎo)致實際的BEMF等于VBat,此時不會有一點電流流動。如果此時電機(jī)以更快速度旋轉(zhuǎn),BEMF會變得大于電池電壓,我們將看到電流從電機(jī)流向電池,這時系統(tǒng)就處于重新發(fā)電(再生)狀態(tài)。
圖5:再生制動狀態(tài)。
PWM開關(guān)型電壓源效應(yīng)
目前為止我們假設(shè)是用一個固定電壓電池直接連到電機(jī)上,從中我們可以看出,在恒定負(fù)載情況下,可以通過改變電池電壓來控制速度。
在現(xiàn)代控制器中,改變電壓是通過使用呈半橋(單向)或全橋(雙向)結(jié)構(gòu)的功率MOSFET晶體管并以近20kHz的很快速度開關(guān)電機(jī)電源來實現(xiàn)的。這種橋有一個底部的MOSFET和一個頂部的開關(guān),它們以互補(bǔ)的方式(底部導(dǎo)通時頂部斷開,底部斷開時頂部導(dǎo)通)正常工作。
當(dāng)與電機(jī)的電感結(jié)合在一起時,這種開關(guān)會使得控制器行為就像一個數(shù)值正比于開關(guān)導(dǎo)通/斷開占空比的可調(diào)電壓源。例如,當(dāng)一半時間導(dǎo)通一半時間斷開時,電路等效于一半電池電壓的發(fā)電機(jī)。
圖6:50% PWM的步降轉(zhuǎn)換。
這個效應(yīng)在相反方向也成立。如果沒有連接電池,同時電機(jī)又被驅(qū)動產(chǎn)生電壓,那么PWM開關(guān)和電機(jī)電感在50% PWM時將作為升壓器使電壓翻倍。這種升壓效應(yīng)很好地解釋了為何電機(jī)轉(zhuǎn)速很慢而BEMF又小于電池電壓時再生現(xiàn)象是如何發(fā)生的。
圖7:50% PWM時的步升轉(zhuǎn)換。
控制再生制動的數(shù)量
我們已經(jīng)知道,由于BEMF的原因,對任何供電電壓來說電機(jī)總有一個轉(zhuǎn)速使它不吸取一點電流。BEMF/RPM比值是一個常數(shù),有時在電機(jī)數(shù)據(jù)手冊中會找到。通過以已知速度旋轉(zhuǎn)空載電機(jī)并在其引線處測量電壓也可以很容易得到這個比值。
然后,在電機(jī)速度可以測量的前提下,控制器就可以計算電機(jī)產(chǎn)生的BEMF并完成以下任意事項:
●匹配電機(jī)的BEMF,在這種情況下電機(jī)既不加速也不制動。如果原來處于停止?fàn)顟B(tài)就仍保持停止。如果已經(jīng)在轉(zhuǎn)動,它將保持這個速度。
●超過電機(jī)的BEMF,此時電機(jī)將加速旋轉(zhuǎn)。
●低于電機(jī)的BEMF,此時電機(jī)將制動并再生電流。
電機(jī)BEMF和控制器輸出電壓之差越大,再生和制動也越強(qiáng)。
假設(shè)電池電壓保持得相當(dāng)穩(wěn)定,那么還可以通過計算控制器的PWM輸出功率電平與該電平下的速度比值進(jìn)一步簡化上述理論。
使用調(diào)速PWM的實際例子
Roboteq電機(jī)控制器能夠檢測電機(jī)的旋轉(zhuǎn)速度。對無刷電機(jī)來說,不需要任何額外硬件,通過監(jiān)視電機(jī)的霍爾傳感器的變化就能實現(xiàn)。對有刷直流電機(jī)來說,可以使用安裝在電機(jī)軸上的光學(xué)編碼器來測速。施加50%的功率并記錄無負(fù)載電機(jī)的轉(zhuǎn)速可以讓我們了解功率電平多大才能接近電機(jī)的BEMF。
圖8:Roboteq電機(jī)控制器的電機(jī)連接。
我們可以利用控制器的Microbasic腳本描述語言輕松地寫出這樣的腳本,它能用來測量電機(jī)的當(dāng)前速度,并計算用于加速、制動或保持當(dāng)前速度所必須輸出的功率電平。
舉例來說,考慮在50% PWM時進(jìn)行測量的汽車情況,當(dāng)車輪不接觸地面時電機(jī)以2500RPM速度旋轉(zhuǎn)。
現(xiàn)在如果汽車處在一個斜坡上,電機(jī)轉(zhuǎn)速為2500 RPM,控制器將測量這個轉(zhuǎn)速,然后施加50%的功率,因此實際上電機(jī)不消耗電流(在這個速度下電流將是無負(fù)載電流)。這是因為在斜坡上時將使電機(jī)以2500轉(zhuǎn)速自然運行,此時的機(jī)電狀態(tài)與車輪不接觸地面時完全一樣。
現(xiàn)在,如果在電機(jī)轉(zhuǎn)速已經(jīng)是2500 RPM時我們施加超過50%的功率,這將給予額外的功率,電機(jī)將以更快速度運行。
如果在2500 RPM時我們施加小于50%的功率,那將發(fā)生再生制動??刂破鬏敵龉β实陀?0%越多,制動效果越明顯。
因此這種技術(shù)可以讓控制器測量速度、計算要施加的輸出功率以便在這個RPM條件下實現(xiàn)加速或制動。然后使用油門命令提高或降低功率值來進(jìn)行加速或制動。
下面的腳本是實現(xiàn)受控再生所需的完整清單。它使用一條用戶命令進(jìn)行加速和制動。這個腳本只能以前進(jìn)方向操作電機(jī)。
option explicit
dim RPMat50pct as integer '平臺測試中在50%功率電平點測得的轉(zhuǎn)速
dim CommandStrenghtPct as integer '想要達(dá)到的加速和制動強(qiáng)度
dim MeasuredSpeed as integer '測量得到的MeasuredSpeed
dim NeutralPower as integer '計算得出的功率電平,此時電機(jī)既不加速也不減速
dim AppliedPower as integer '將要施加于電機(jī)上的功率
dim ThrottleCommand as integer '用戶命令
'修改這些常數(shù)以滿足你的要求
RPMat50pct = 6000 '在50%功率電平和無負(fù)載情況下測得的轉(zhuǎn)速
CommandStrenghtPct = 50 '以百分?jǐn)?shù)表示的油門和剎車強(qiáng)度
top:
'從控制器讀到的工作值
ThrottleCommand = getvalue(_CIA, 1) '從1號模擬操縱桿讀取用戶命令
'根據(jù)電機(jī)類型和傳感器對以下兩行做出反注釋
MeasuredSpeed = getvalue(_BS, 1) '使用霍爾傳感器測量當(dāng)前速度
'MeasuredSpeed = getvalue(_S, 1) '使用編碼器測量當(dāng)前速度
'計算維持當(dāng)前速度所需的功率電平
NeutralPower = (MeasuredSpeed * 500) / RPMat50pct
'增加功率進(jìn)行加速,或撤除功率進(jìn)行減速
AppliedPower = NeutralPower + ((ThrottleCommand * CommandStrenghtPct) / 100)
'只允許正向命令,并且最大值為+1000
if (AppliedPower 1000)
AppliedPower = 1000
end if
setcommand(_G, 1, AppliedPower) '給電機(jī)施加功率
'在控制臺上打印的用于監(jiān)視或調(diào)試的可選記錄
print("C= ", ThrottleCommand,"\tS= ",MeasuredSpeed,"\tN= ", NeutralPower,"\tP= ", AppliedPower,"\r")
wait(10) '等待10ms
goto top '不斷重復(fù)循環(huán)
配置、測試和改進(jìn)腳本
為了使用這個腳本,首先必須測量由控制器在50%功率電平時報告的轉(zhuǎn)速。然后在腳本頂部輸入作為常數(shù)的這個值。接著保持命令操縱桿置中以及腳本運行,電機(jī)將保持空閑狀態(tài)。手工旋轉(zhuǎn)電機(jī)軸將產(chǎn)生施加于電機(jī)的功率,并且在前進(jìn)方向上幾乎沒有阻力。
然后應(yīng)用前進(jìn)方向的操縱桿命令,電機(jī)將加速。當(dāng)操縱桿處于反方向時電機(jī)將制動。對于給定操縱桿位置,加速和制動的數(shù)量可以通過改變腳本中的另外一個常數(shù)進(jìn)行調(diào)整。
腳本假設(shè)電池提供穩(wěn)定的電壓,因此給定的功率電平總是導(dǎo)致相同的等效輸出電壓。例如電池電壓為24V時,50% RPM將在電機(jī)上呈現(xiàn)12V電壓。如果預(yù)料到電池電壓波動會很嚴(yán)重,那么應(yīng)該修改腳本將電池的當(dāng)前電壓考慮進(jìn)去。例如,當(dāng)電池電壓為18V而不是24V時如果仍想在電機(jī)上有12V電壓,那么功率電平必須調(diào)整為75%而不是50%.
上述腳本還可以方便地修改成使用獨立的油門和剎車踏板,方法是捕獲兩個模擬輸入,根據(jù)每個踏板壓下的力量大小計算得出結(jié)果命令,并且使剎車優(yōu)先于油門。制動強(qiáng)度也可以做到高于或低于加速的強(qiáng)度。
然后當(dāng)需要很強(qiáng)的制動時,可以通過修改腳本激活與控制器數(shù)字輸出之一連接的機(jī)電式剎車。
較之其它受控再生制動技術(shù)的好處
實際上,使用測量到的電機(jī)實際速度來計算BEMF的這種技術(shù)所導(dǎo)致的驅(qū)動特征類似于扭矩模式驅(qū)動,即控制器嘗試以恒定電流饋送電機(jī)。
與扭矩模式相比,本文介紹的方法更加精確,因為測量轉(zhuǎn)速通常比測量電機(jī)電流更簡單更精確。包括Roboteq產(chǎn)品在內(nèi)的大多數(shù)電機(jī)控制器測量電池電流,而實際上這是在扭矩模式下必須調(diào)節(jié)的電機(jī)電流。實際電機(jī)電流接近于測量到的電機(jī)電流,但在低功率電平時很不精確。當(dāng)功率電平為0時電機(jī)電流無法測量。
另外,在扭矩模式下,控制器需要使用調(diào)節(jié)器(通常是比例-積分-微分控制器(PID))連續(xù)調(diào)整功率電平才能將被測電流調(diào)節(jié)到理想的值。PID需要調(diào)整,而在交通運輸應(yīng)用中電機(jī)負(fù)載變化非常強(qiáng)烈,這使得PID調(diào)整并不容易??刂骗h(huán)路連續(xù)“猜測”的速度或精度都沒有從測得的轉(zhuǎn)速立即計算出電機(jī)BEMF高。