實時生成步進電機速度曲線
一種用於步進電機加速度的新算法可以實現速度曲線的實時參數化和計算。該算法可以在低端微控制器上運行,只使用簡單的定點算術運算並且不使用數據表。它以恆定的加速度和減速度形成線性斜坡時間的準確近似值。
通常認爲,步進電機線性速度斜坡的時間過於複雜,無法實時計算。步驟延遲的精確公式如公式8所示。解決方案是將預加坡數據存儲在預編譯數組中,但此方法不靈活並浪費存儲器。另一種選擇是使用功能更強大,處理成本更高的處理器,或者使用高級別的步進控制IC。本文使用24.8定點算法在中等範圍的PIC微控制器上開發了一個精確的近似值,該近似值已經在C中實現。
電機階躍信號可以由一個通常集成在微控制器中的16位定時器 - 比較器模塊產生。在PIC上,CCP(capture / compare / pwm)執行此功能。它允許步驟按照一個定時器週期的分辨率定時。每一步都會使電機前進一個恆定的增量,通常是混合式步進電機上的1.8度。
定時器頻率應儘可能高,同時在電機從停止加速時仍允許長時間延遲。1MHz的定時器頻率已被使用。300rpm的最大電機轉速相當於延遲計數1000。必須具有高定時器分辨率才能在高速下提供平穩的加速度。
符號和基本公式
用定時器計數器編程的延遲(秒) c:
等式1
f =定時器頻率(Hz)。固定定時器計數時的
電機轉速 ω(rad / sec) c:
等式2
α =電機步進角(弧度)。
1rad = 180 / π = 57.3deg。1rad / sec = 30 / π = 9.55rpm。
來自相鄰計時器計數c 1和c 2的 加速度ω '(rad / sec 2)
等式3
等式3假定在每個步進間隔(等式1)的中點處的固定計數速度(等式2),如在線性斜坡上(圖1)。請注意,ω '分辨率與速度的立方成反比。
圖1:斜坡幾何:移動m = 12步
線性速度斜坡 - 精確
在線性斜坡上,加速度 ω '是恆定的,並且速度 ω( t)= ω '。t。積分給出電機軸角θ( t):
等式4
Ñ ≥0步數(實數)。當軸處於θ= Ñ .α,(整數 Ñ)它的時間爲 Ñ個步驟脈衝:
等式5
確切的定時器計數到之間的延遲進行編程Ñ和第(Ñ 1)個脈衝(Ñ ≥0)爲:
公式6
初始計數c 0分解以給出等式7和8:
公式7
公式8
請注意,c 0設置加速度,與(1 / c 0)2成比例。
在實時情況下,公式8需要計算每一步的平方根,並通過減法增加了精度損失的問題。
近似線性斜坡
等式8中連續精確計時器計數的比率:
公式9
泰勒系列:
公式10
等式11是使用等式10對等式9的二階近似:
公式11
等式11可以重新排列以加快計算:
公式12
最後,我們可以斷開物理步數,我,從步數Ñ從零上的斜坡,得到等式13。這裏所示的通用斜坡算法Ñ確定加速度和增量與我爲恆定的加速度。從停止加速,n i = i,i = 1,2,...。。。:
等式13
負值的n值會減速。特別是,可以使用等式14(其中n i = i - m)將任何速度向下斜坡停止,以在m步的移動的最後步驟中停止:
等式14
表1:步延遲近似的精度
步驟n | 確切(9) | 約(11) | 相對誤差 |
1 | 0.4142 | 0.6000 | 0.4485 |
2 | 0.7673 | 0.7778 | 0.0136 |
3 | 0.8430 | 0.8462 | 0.00370 |
4 | 0.8810 | 0.8824 | 0.00152 |
五 | 0.9041 | 0.9048 | 7.66E-4 |
6 | 0.9196 | 0.9200 | 4.41E-4 |
10 | 0.9511 | 0.9512 | 9.42E-5 |
100 | 0.9950 | 0.9950 | 9.38E-8 |
1000 | 0.9995 | 0.9995 | 9.37E-11 |
近似的準確性
表1示出了近似的準確性,即使在低步數 Ñ和相對誤差與減小 Ñ 3。但是, n = 1具有顯着的不準確性。n = 1處的不準確性可以通過兩種方式處理:
等式15
第一種選擇給出了幾乎完美的線性斜坡。第二種選擇從一個快速的步驟開始。這很好,因爲它有助於保持電機在步進脈衝0和1之間移動,並建立產生轉矩所需的角度誤差。它還允許用16位定時器產生更大範圍的加速度,並具有簡單的優點。因此建議忽略n = 1時的不準確性。
圖2:步進電機速度斜坡
圖3:斜坡詳細信息的開始
圖4:斜坡詳細信息結束
圖2到圖4比較了在1秒內從0到120rpm的目標斜坡的選項。爲了清楚起見,示出了從步驟2計算的步進速度變化。真實輪廓應當接近於直線。
2. Ç /(4。ñ方程式12 1)可以通過進行近似Ç / 2。n。一些影響是:
該算法仍然會產生線性斜坡。c 0將接近等式7中所示的“精確”值:對於相同的斜坡加速度,88.6%而不是67.6%。類似公式13的單個公式不能再用於加速和減速。加速度的變化從等式4和5我們可以得到步數 n的表達式作爲速度和加速度的函數:
等式16
因此,達到給定速度所需的步數與加速度成反比:
方程17
這使得可以通過改變斜坡算法公式13中的步驟號n來改變斜坡上的點處的加速度。此外,使用帶符號的ω '值導致在算法中行爲正確的帶符號的n值。只有ω '= 0需要特殊處理。
由公式17給出的n值對t n是正確的。然而c n表示間隔t n .. t n +1的平均值。公式17通常是足夠的,但在ramp算法中添加一個半值用於n值更準確:
公式18
表2中所示的數字示例將步驟200中的加速度從10變爲5並且變爲-20rad /秒2.可以以這種方式分段地建立複雜的速度曲線。
表2:加速度變化
第一步 | ñ 我 | ci(13) | ω'(3) | 筆記 |
198 | 198 | 2,813.067 | ||
199 | 199 398.5 -100.25 | 2,806.008 | 10 | 10.(199 + .5)= 5.(398.5 + .5)= -20。( - 100.25 + .5) |
200 | 399.5 | 2,803.498 | 五 | |
201 | 400.5 | 2,799.001 | 五 | |
200 | -99.25 | 2,820.180 | -20 | |
201 | -98.25 | 2,834.568 | -20 |
減速斜坡
對於短移動米步驟,其中該上行斜坡在 ω “ 1滿足在下行斜坡 ω ” 2最大速度之前達到,步數米處開始減速時,從等式17:
等式19
ω ' 1 =加速度,ω ' 2 =減速(正)。將n取整爲整數,並使用公式14 計算c n .. c m-1。
在其他情況下,公式17或18可被用於計算的步數Ñ停止在減速需要2 ω “ 2,因爲當前速度在步驟達到Ñ 1與加速度ω ” 1。將n 2取整爲整數,並 使用等式14 計算c m -n 2 ... c m-1。
換擋平順,以最大速度
理想的速度曲線將使從斜坡加速的平穩過渡 ω '到最大速度 ω 最大。通過降低斜坡頂部附近的加速度可以提高速度,並且可以避免加速中不連續的可能不良影響。
有幾種方法可以實現平滑過渡,同時仍允許在低端處理器上進行實時計算:
分階段降低ω ',給出分段線性過渡。給匝道算法的分母添加一個冪項。從c i縮放變化-1到c i的線性因子。現在讓我們來比較這些方法。分段線性
該方法如圖5所示,非常靈活。可以使用任何數量的休息。選擇ω '值連續減小的一組ω值。使用公式13中的斜坡算法。在每一步中,n遞增,如果ω(或c)超過中斷值,則重新計算n。
圖5:分段
圖5 由(c)j = 0 = 3 給出的第j箇中斷的結果。c min,(c)j =((c)j -1+ c min)/ 2,( ni) j = 1.375。( n i- 1 +1),j = 1,2,...,7。(C ^)Ĵ =延遲計數在Ĵ個斷裂,Ç 分鐘,=延遲計數在ω 最大。
功率項
公式20給匝道算法的分母添加了一個冪項(公式12):
等式20
在低速(低步數n)下,功率項k · n p可以忽略不計,所以加速度是恆定的。隨着速度的增加,k · n p開始占主導地位,最終將加速度降爲零。更高的功率p會產生更清晰的“膝蓋”。以這種方法ω 最大漸近。
的過渡發生圍繞ķ · Ñ p = 4 Ñ。這可用於計算用於恆定的近似值ķ從初始加速度ω '和所需的最大速度ω 最大:
等式21
圖6中的圖表使用方程21來計算p = 2,3,4,5的k值。曲線達不到ω 最大爲p = 2,但ķ有利於更高的功率。
圖6:功率項,p = 2,3,4,5
線性因子
在該方法中,我們運行斜坡算法(公式12)到步驟Ñ 1,然後在擴展的變化Ç由從1在步驟減小一個因子Ñ 1到0,在步驟Ñ 2:
等式22
圖7:線性因子
加速度曲線在轉換中相當線性和對稱。ω 最大值在約兩倍沒有過渡服用,時間達到如圖7 ω 最大可通過集成式22的連續版本來估計
。我們獲得:
公式23
公式23對於廣泛的參數是準確的,包括n 1 = 0。然後將其簡化爲公式24(與公式16比較):
等式24
在圖7中,線性因子方法被施加有過渡範圍從0開始和30%,50%,和70%ω 最大值。
線性係數轉換也可以應用於downramp:
等式25
如前例所示,步數n 3是從最高速度到下降速度的過渡的開始。對於短的移動,n 3 = n 2,由等式19計算。
圖8:線性因子:雙重轉換
圖8示出具有和不具有在實施例部分ω 最大:米 = 700,ω ' 1 = 10,ω ' 2 = -20,Ñ 1 = 0,Ñ2 = 432,Ñ 3 = 484; 並且m = 500,n 2 = n 3 = 333,其他參數不變。
過渡方法在總和
的過渡曲線的形狀被假定爲比便於計算和的參數控制,特別是不太重要的 ω 最大值和過渡區域的大小。
分段線性方法靈活,可以安排成不需要比簡單的斜坡計算更多的計算,並給出視覺平滑的速度曲線。不過,它可能不適用於某些參數集。
在電源術語的方法,所述ķ -parameter容易從計算ω 最大值。計算功率項會在定點算術中產生問題,因爲值在很大範圍內變化。
線性因子法被推薦爲可靠且易於在定點算術中計算。因爲ω 最大值以已知的步驟數達到,該方法有利於短移動,並且可以從加速度過渡沒有間斷到減速,如圖8證明。在開始過渡Ñ 1 = 0給出了一個窄的過渡區,它的直接計算ñ從2 ω 最大值。
這些方法在圖5至圖7中進行比較。
實現
您可以使用PIC18F252和L6219實現該步進控制算法。L6219步進驅動器IC執行以下功能:
L6219沒有“步進”和“方向”控制線,如一些步進控制IC。繞組的相序必須由PIC提供。這使控制稍微複雜一些,但提供了額外的靈活性並降低了成本。這也意味着該階段可以在加電時輕鬆恢復。
通過使用I輸入,L6219可用於半步和四分步操作。爲了全面實施,可以將它們連接在一起,並由PIC中的一個GPIO驅動。
Microchip的PIC18F252是一款28引腳器件,佔板面積與PIC16F876相同。'252'功能更強大的核心使得用C編程更容易。圖9顯示瞭如何配置內部時序資源來控制L6219。
圖9:L6219接口的PIC18F252定時器配置
8MHz晶振和PIC的× 4 PLL倍頻器用於產生32MHz處理器時鐘。這被四分之一的時鐘定時器在8MHz。驅動電機包括以下順序:
獲取參數:步數,方向,延遲計數c 0,最大速度等。設置硬件:初始化CCP1和CCP2,啓用電機電流,啓用CCP1中斷。服務CCP1中斷:計數步驟並執行狀態機重新配置CCP並計算下一個定時器值。清理:在最後一步之後,禁用CCP1中斷,關閉電流,標記移動完成。列表(在線地址:http://www.eetimes.com/design/embedded/source-code/4210291/Motor-c)是這些步驟的最小演示,具有線性斜坡,固定的最大速度和加速度。作者使用CCS編譯器。其他編譯器需要稍作更改。逐步
出現我在此解釋的實時算法顯着降低了步進電機平穩速度控制所需的處理能力。線性斜坡算法可以適應分段線性速度曲線以及從斜坡到最大速度的平滑過渡。
David Austin是英國達勒姆的自由軟件工程師。您可以通過[email protected]與他聯繫。
資源
Acarnley,Paul。步進電機 - 理論與實踐指南,第4版。倫敦:電氣工程師學會,2002。
Kenjo,Takashi和Akira Sugawara。步進電機及其微處理器控制,第2版。牛津大學出版社,1995年3月。
步進電機控制 - 教程 www.cs.uiowa.edu/~jones/step/
供應商的網站:
PIC18F252 www.microchip.com
L6219 www.st.com
PIC C編譯器www.ccsinfo.com
步進電機www.rotalink.com
Mathcad(圖形)www.mathsoft.com
原文地址:https://www.embedded.com/design/mcus-processors-and-socs/4006438/Generate-stepper-motor-speed-profiles-in-real-time