實時步進運動配置文件

實時步進運動配置文件

 

本頁介紹了運動配置文件的需求,並介紹了一種使用PIC18F系列微控制器實時生成這些配置文件的算法。

 
   
   
 

1概觀


 
 

步進電機是用於產生受控運動的常用項目。維基百科 可以對步進電機進行更廣泛的描述。)典型的步進電機控制器需要簡單的步進和方向信號來移動步進電機。LiniStepper 和GeckoDrive 是步進控制器的兩個例子)。此外,一些伺服電機控制器(例如, Granite Devices 和 Viper)也瞭解步進和方向信號。運動控制器的工作是產生步進脈衝和方向信號的序列,從而使電機平穩精確地移動到所需的位置和/或速度。

圖1:簡單運動控制系統的基本組件

圖1中顯示了簡單運動控制所需的基本部件。通常還需要電源。

  • 運動控制器:產生以所需方式移動電機所需的步進和方向信號序列的組件。對於數控機牀來說,這通常是一臺運行軟件的PC,如EMC或MACH,通常通過並行打印機端口發送信號,通常控制多個驅動器和電機。PLC或微控制器可用於更簡單的任務。

  • 電機控制器或驅動器:解釋步進和方向信號並將其轉換並放大(通常)實際驅動電機的較高功率電流的組件。處理相序,電流水平和驅動連接電機的其他方面。

  • 電機:接收電脈衝並將其轉換爲機械運動的執行器。

  • 電源:提供動力電子,而不是用於在電機內部產生磁場。通常一個單獨的電源爲控制電子設備提供乾淨的電源。

步進電機的一個重要問題是它們通常用於開環。這意味着電機控制系統沒有關於電機位置的反饋。系統要求電機移動,但不能確定電機是否按照指令實際移動。如果機械系統設計正確並且按照原樣運行而沒有過載,那麼電機可以按照需要移動。(與具有反饋功能的伺服系統形成對比,因此可以知道電機按照要求運動,而且可以通過位置反饋實現更先進的步進系統。)

 

 
   
   
 

2一些運動物理學


 
 

最基本的運動方程之一是

F = ma

換句話說,這個等式解釋了力等於質量乘以加速度。該公式與步進電機運動非常相關,因爲它將加速機械系統所需的力與系統的質量聯繫起來。(實際上,如果你想要挑剔的話,系統的慣性。)如果步進電機只能產生一定的力量,系統質量將決定最大加速度。試圖加快速度會導致超載和可能丟失步驟。只要加速度安全地保持在這個最大值以下,機械系統就可以忠實地遵循所要求的步驟。

圖2:步進電機的典型轉矩曲線

必須提到的另一個重要物理特性是最大速度。電動機具有所謂的扭矩曲線。這些曲線的一般特徵是電機轉矩隨着轉速的增加而下降,如圖2所示。因此,在更高轉速下,電機產生的力更小。曲線的實際形狀取決於電機及其驅動器的細節。這將導致機械系統開始跳過或鬆開臺階的最大有效速度。

 

 
   
   
 

3移動的形狀


 
 

現在我們足夠了解如何實際執行所需的移動。移動的大小以特定數量的步驟給出。我們知道有一個最大允許速度,即每秒最大步數。在移動開始之前和移動完成之後,電機將停止。我們知道電機不能立即從靜止狀態轉爲最高速度,也不能立即停止。相反,速度變化受限於最大允許加速度。

圖3: 梯形移動過程中的距離, 速度和 加速度

我們可以繪製移動過程中的距離,速度和加速度的圖形,如圖3所示。這種特殊的運動輪廓只選擇了最大的加速度和減速度,從而形成了所謂的 梯形速度輪廓。這個特定輪廓的兩個特徵是線速度變化和相等的加速和減速時段。這些特性非常有用,因爲它們簡化了移動過程中所需的計算。對於較短的移動,在移動的中點之前不會達到最大速度。在這種情況下,減速將從中點開始,切除恆速中心部分併產生三角形速度曲線。

 

 
   
   
 

4一系列步驟


 
 

現在我們可以考慮按照要求導致電機轉動的步驟的實際順序。根據所需的方向,這些步驟將在STEP數據線上顯示爲DIRECTION數據線設置爲HI或LOW的脈衝。

圖4:恆定速度和加速步驟序列

這些步序,稱爲脈衝序列,必須由運動控制器生成。恆定速度的脈衝很容易產生 - 每個脈衝之間的時間是相同的。由於脈衝之間的時間以非線性方式變化,因此加速和減速脈衝串更難生成。準確的時序要求實時計算倒數或平方根,這可能需要比低功耗微控制器更多的數學計算。

已經開發了各種算法來以某些精度損失爲代價來簡化這些計算。主要論文似乎是D. Austin的“實時生成步進電機速度曲線”。(源代碼可以在這裏找到。)AVR世界還有一個基於D. Austin的論文應用筆記源代碼該算法的一個主要特點是它計算 每步的時間

備用技術使用預先計算的數據表,但這顯然消除了實時脈衝序列生成的即時可調性。

Pramod Ranade在他的文章中沒有算術的直線電機控制中提出了一種不同的算法 他的方法實際上是計算每個時間的步數,即上述D. Austin的方法的倒數。這一改變顯着簡化了計算。到目前爲止,與本文相關的源代碼仍然難以捉摸,所以P.Ramade的實現是未知的。本頁面的其餘部分描述了我每次執行這個 步驟的時間 算法。

 

 
   
   
 

5每步的步數而不是每步的時間


 
 

它的核心是每步時間步數算法 (Step per Time)算法(SpTA)將時間分成合適的小單位,並在每個時間單位檢查是否是生成新步脈衝的時間。實際上,這是通過在每個時間段向當前位置添加一小部分步驟,然後僅在位置部分溢出時才生成階躍脈衝來實現的。加入的一個步驟的分數實際上是速度,它本身可以通過每個時間單位的加速度進行調整,以給出恆定的加速度斜坡。上面鏈接的P. Ranade的論文給出了一個更完整的例子。

我的實現使用一個定時器中斷來創建固定的時間單位和一些多字節變量來保存各種值。該算法僅依賴於增加和比較來執行移動,在開始計算移動的中點時使用單個二分操作,簡單的右移。採用10 MIPS的PIC18F系列微控制器,我可以輕鬆地產生60kHz的階躍脈衝。

讓我們來看看代碼的工作原理。

狀態機用於在移動配置文件中跟蹤所需條件。這4個要求的狀態是

0:空閒 - 當前不移動
1:減速 - 逼近移動結束
2:At_Max  - 全速移動
3:加速 - 移動開始

首先,這裏是一些代表所需計算的僞代碼。該僞碼將在每個時間段執行 - 換句話說,每次發生週期性定時器中斷時。

/* Calculate next time slice, generate step pulse if needed */
step_count_fraction = step_count_fraction + present_speed
IF Carry THEN 
step_count = step_count + 1
generate step output pulse


/* Adjust stepping speed if needed, depending on state */
IF state = Accelerating THEN
present_speed = present_speed + acceleration
IF step_count = midpoint THEN 
set state = Decelerating
done
IF present_speed >= max_speed THEN 
calculate deceleration_start
set state = At_Max
done
IF state = At_Max AND step_count = deceleration_start THEN
set state = Decelerating
done
IF state = Decelerating THEN 
present_speed = present_speed - acceleration
If step_count = total_move_count THEN
set state = Idle
done


這大部分是非常簡單的。也許唯一棘手的部分是兩個不同的事件可能導致加速狀態結束。如果移動的中點在加速的同時達到,則該開始減速,因爲此輪廓將是三角形輪廓。如果達到最大速度,則需要完整的梯形輪廓,並且必須計算減速的起點。由於加速和減速率相同,所以在這些狀態期間的步數將是相同的。這允許減速狀態的開始計算爲所請求的總步數減去在加速狀態期間所採取的步數。

以下是代碼使用的主要變量:

;步進斜坡控制變量
;前3個變量應由調用例程設置
;(方向線也必須由調用例程設置)
;其他變量將通過調用Start_Move 
CBLOCK 
step_move:4      來處理;總移動請求的 
step_spmax:2     ;最大速度 
step_accel:2     ;加速/減速率,8.8位格式
 
step_middle:4    ;移動的中點,=(step_move  -  1)>> 1 
step_count:4     ; step counter 
step_frac:2      ; step counter分數 
step_speed:4     ;當前速度,16.8位格式(HI字節總是0) 
step_state:1     ;移動配置文件狀態
step_dur:1       ;計數器用於步進脈衝HI 
ENDC

大多數這些變量代表多字節固定點值。這些固定點值如下所示:

STEP_COUNT 
 (32.0比特)
step_frac 
 (0.16位)
step_speed 
 (16.8位 - 最高字節始終爲0)
step_accel 
 (8.8位)

源代碼在Stepper Speed Ramps論壇中可用

原文地址:http://picprog.strongedge.net/step_prof/step-profile.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章