鄺先驗,周亞龍,吳玉剛
基于動態規劃的對焦步進電機控制
鄺先驗,周亞龍,吳玉剛
(江西理工大學 電氣工程與自動化學院,江西 贛州 341000)
為了解決STM(stepper motor)鏡頭中步進電機低頻對焦慢、高頻失步跑焦的問題,通過分析對焦過程中電機的加減速動作,結合步進電機加減速曲線,設計了一種適用于STM鏡頭驅動的步進電機開環控制算法。算法根據步進電機速度在單位控制周期內不變,把步進電機位置控制問題轉換為單位控制周期內脈沖輸出問題,實現了速度控制與位置控制的巧妙結合。設計并搭建了STM鏡頭對焦電機控制電路,工程實驗結果表明:該算法提高了步進電機開環控制的精度,有效地減小了由于步進電機過沖和失步帶來的跑焦問題。
STM鏡頭;步進電機;動態規劃算法;加減速曲線;位置控制
自20世紀以來,圖像識別技術發展迅速,對圖像的清晰度、采集速度都提出了更高的要求。馬達是自動對焦鏡頭中最重要的部件之一,目前,市場上主流的鏡頭對焦馬達有直流馬達、步進馬達、超聲波馬達3種。直流馬達價格便宜,但難以精準控制,超聲波馬達控制精度高但價格昂貴。步進馬達是一種利用電脈沖驅動的、單步可控的電機[1],具有價格便宜、噪聲小、優秀的啟停和反轉響應等優點[2]。優化步進電機控制方法,對于提高鏡頭的對焦速度與準確性有著重要的意義。
步進電機的控制方法有很多,高精度的位置控制常采用全閉環控制,然而全閉環的位置控制不僅需要高精度的位置檢測裝置,而且控制系統結構包含非線性環節導致控制系統模型復雜化,影響系統的穩定性和快速性[3]。相機鏡頭大多采用封閉式機械結構,對焦過程中不容易受到干擾,適合開環控制。隨著細分驅動技術的發展,電機輸出跟蹤輸入的同步能力不斷提高,再通過合適的加減速曲線算法優化,可以有效避免失步、振動等現象[4-5]。典型的開環速度控制曲線有:梯形曲線、S型曲線、指數型曲線、拋物線等[4,6-8]。文獻[9]中提出了一種快速實現步進電機的加速-勻速-減速-定位的控制方法,通過目標位移、加速時間、勻速時間、減速時間等計算出步進電機的速度變化曲線。該算法把加減速曲線與位置控制相結合,取得了一定的效果,但只實現了簡單的梯形曲線的位置控制。
通過分析自動對焦鏡頭的對焦過程,結合開環速度控制曲線,把對焦過程中的位置控制問題轉化為單位控制周期內輸出脈沖數的選擇問題,根據步進電機的矩頻特性設計了動態加速度參數,使用動態規劃算法搜索最優速度變化解序列,原則上可以實現任意曲線的精確位移控制,具有一定的實用性。
典型的自動對焦系統由分析處理模塊判斷輸入的圖像是否對焦清晰,控制模塊則根據分析處理模塊提供的相關信息來調節鏡頭驅動裝置[10]。利用步進馬達控制鏡片以一定的步長前后移動,在鏡頭移動的過程中讀取對焦評價函數相關信息,機身根據這些信息來判斷是否合焦,在對焦過程中鏡頭進行往復運動,最終找到最清晰的對焦位置。
如圖1所示,鏡頭一般對焦動作分為4步:①相機根據當前圖像確定對焦方向;②粗略移動鏡片確定合焦區間;③精細移動鏡片確定合焦精確位置;④最后移動鏡片完成對焦。對于開環控制來說,步進電機在高速情況下頻繁地啟動和剎車會導致失步和過沖產生的位置誤差逐漸積累,影響相機對合焦位置的準確判斷,進而使得對焦緩慢,甚至導致對焦失敗。

圖1 鏡頭一般對焦過程
不同型號的鏡頭都有獨特電機特性和負載特性,因此由機械慣性帶來的電機失步與過沖程度也各不相同[2,11],為測試高速啟動和剎車對步進電機開環位置控制的影響,使用Viltrox SMT定焦鏡頭在不同的速度下做單向步進實驗。步進電機的控制頻率為100Hz,通過控制單位周期的脈沖數來控制電機速度,以不同的速度同向開環步進500步,測試結果如表1所示。

表1 單向步進的位移誤差
表1的結果表明,當步進電機單位控制周期內的輸出脈沖數較低,電機速度較小時,充分體現了步進電機無積累誤差的特點,實際位移可以跟隨期望位移,基本沒有過沖和失步現象,隨著電機速度的增加,逐漸出現了無法跟隨目標位移的現象,當單位周期輸出的脈沖數增大到150時,步進電機還未完成加速啟動就已剎車,實際位移遠小于期望位移,失步和過沖嚴重影響到開環位置控制的準確性。
現在設目標位移為q,總位移可以拆分為多個控制周期的位移之和。步進電機的位置控制問題可以轉化為選擇合適的脈沖數組合得到期望位移的問題,設s為第種速度在單位控制周期內的位移(后文統稱速度塊),x為該速度塊的個數,有:

當上式中所有解項的系數之和最小時,就得到了最少速度塊組合序列,也就是使用最短的時間到達目標位置的解序列。考慮到實際情況,該解序列具有兩個約束條件。
條件一:由于步進電機的機械負載限制,當前時刻的速度若與下一時刻的速度相差過大會導致步進電機失步或過沖。

式中:相鄰解序列的元素滿足條件一的最大差值為max;()為解序列的第個元素;abs為絕對值計算符號。
條件二:為了保證步進電機從零速度開始加速,到達目標位置時需減速到零。(0)為解序列的第一個元素,)為解序列的最后一個元素,需滿足:

通常的步進電機的矩頻規律為:在運行頻率0較小時,轉矩基本橫定,而當增大時,隨近似線性下降[4,11]。對于這種矩頻特性,其加速度與運行頻率之間滿足的線性變化規律為:




代入(5)式,得到加速度cc與運行頻率之間的關系為:

令=,=,x為解序列中的元素,構造函數:

式中:為初始力矩;為加速度系數,隨著電機頻率的增加,加速度逐漸減小。
動態規劃是運籌學的一個分支,是求解決策過程的最優化數學方法,是一種強大的離散時間方法,可以為非凸最優控制問題提供全局解決方案[12]。當某問題的最優解可以由子問題的最優解推導得到,則可以先求解子問題的最優解,再構造原問題的最優解。若子問題有較多的重復出現,則可以自底向上,從子問題向原問題逐步求解[13]。使用動態規劃方式把大問題分解成小問題逐步解決,避免重復的搜索,更加快速高效,基于動態規劃的步進電機速度曲線搜索算法具體如下。
1)劃分階段。設目標位移為d,解序列的最小項數為(d),解序列為(d),使用自下而上的求解方式將大規模問題拆分為小規模問題。
{(0),(1),(2),…,(d)} (9)
先求解小規模問題,再逐漸遞推出目標解。設備選速度塊為d。
d={1,3,5,7,9} (10)
2)構造初始狀態。從d中可以得到:

3)決策與約束條件。現求解(3)、(3),若要得到總位移為3的解序列,則要選擇小于等于總位移的備選值,可選項為[1,3]。

令q=(3),q為(3)序列中的第個值,約束條件一為:

檢查得到的解序列是否滿足約束條件一,不滿足則舍棄,顯然兩組解序列都滿足。第二種組合方式所得到的解序列的項數更小、更省時間。記錄下最優結果(3),(3)。
4)狀態轉移方程。從上面的關系式遞推得到狀態轉移方程。

根據狀態轉移方程依次遞推,最終可以獲得滿足約束條件一的目標位移的最優解序列,也就是步進電機的速度變化曲線。
動態規劃算法在搜索過程中需要存儲大量的中間變量,對于大規模的搜索來說,內存空間易發生溢出。因此需要降低搜索的規模。
現假設步進電機的目標位移為e,在a階段電機處于加速階段,加速到max后進入b勻速階段,電機以最高速度運行,到達c后進入減速階段,直到電機停止運動。因此,只需搜索0.5e的部分,另外的一半由0.5e的解序列逆排序得到,這樣得到的全部序列恰好滿足條件二。電機達到最高速之后以勻速運行,只需要搜索加速的部分序列,剩下的序列用最高速的速度塊補齊。設加速部分的位移為1,最高速的單周期位移為q,局部使用動態搜索。


基本參數確定后,解序列具有確定性,為了提高算法的控制效率,可以預先搜索出需要的解序列,與最高速的速度塊組合,可快速得到目標位移的速度塊序列。
通過對STM鏡頭自動對焦過程以及步進電機速度對于開環位置控制的分析,結合動態規劃搜索算法,提出了基于動態規劃的對焦步進電機開環控制算法。在此基礎上設計了一種適用于STM鏡頭的控制電路。整個控制組件電路包括硬件和軟件兩個部分。
整個鏡頭控制組件電路包括6個部分,其系統框圖如圖2所示。輸入電壓為5.0V,經DIO芯片轉換為3.3V,分別為電機驅動以及其他模塊供電。光電耦合開關用來確定對焦起點位置。調試接口采用USB轉串口芯片,可以直接向電腦輸出調試信息。主控制器由STM32F0系列單片機及其外圍電路構成,負責協調與主機之間的信息交互、控制電機驅動完成對焦動作。電機驅動由MS41929電機驅動芯片及其外圍電路構成,該芯片是一款雙通道5V低壓步進電機驅動芯片,具有電流細分的電壓驅動方式以及扭矩紋波修正技術,可以實現超低噪聲的微步進驅動,最高可以設置為256細分步進,滿足鏡頭的高精度要求。MS41929采用SPI協議通信,使用主控制器向驅動芯片寫入細分數、峰值電壓、PWM頻率、電機相位矯正參數等,通過VD引腳的電平變化使參數生效,可以靈活地控制步進電機。使用步進電機進行自動對焦實驗,電機參數如表2所示。
第2章中給出了算法的狀態轉移方程,還需要進一步確定算法的輸入輸出參數,根據實際工程設置約束條件,使用二維矩陣來存儲解序列結果。其主要步驟如下:
①確定約束條件max方程;
②設置電機最大速度maxspeed;
③確定備選序列;
④給出需要搜索的最大目標位移exposition;
⑤進行動態規劃搜索,輸出搜索結果。

表2 步進電機具體參數

圖2 STM鏡頭控制組件系統框圖
圖3總結了搜索過程,其中備選序列i取零到最大速度之間的所有整數。


圖3 控制序列搜索流程圖

表3 2000脈沖步的解序列

表4 4000脈沖步的加速階段解序列
由圖4可以看到,步進2000脈沖步需要36個控制周期,每個控制周期為10ms。在0~180ms內,步進電機處于加速階段,180~360ms內逐漸減速到0,相鄰控制周期的脈沖數的差值隨著速度的增加逐漸減小,符合步進電機力矩隨著轉速的增加而減小的特性。電機還未加速到最高速就開始減速,減速過程為加速的對稱過程,為兩段式運行過程。同時兼顧了速度控制與位移控制。
圖5中,在0~210ms內,步進電機處于加速階段,加速度逐漸減小,在210~370ms內,處于勻速階段,370~580ms逐漸減速到0。步進電機加速到最高速后進入勻速運行狀態,為典型的三段式運行曲線,搜索結果滿足上文分析的兩個約束條件,為最優控制序列。

圖4 2000脈沖步的速度變化曲線

圖5 4000脈沖步的速度變化曲線
以3.2小節的系統參數進行步進電機動態規劃開環控制實驗并與常規開環控制進行對比。實驗結果見表5與表6。

表5 步進電機的常規開環控制
步進電機的常規開環控制結果見表5,在期望位移為600脈沖步時,低速開環控制的耗時為150ms,誤差為5脈沖步。高速開環控制的耗時為60ms,誤差為40脈沖步。在期望位移為4000時,低速開環控制的耗時為1000ms,誤差為6脈沖步。高速開環控制的耗時為400ms,誤差為90脈沖步。可以看到,隨著速度的增大,由于快速啟停導致的位移誤差也在增大,無法滿足系統高精度的控制要求。

表6 步進電機的動態規劃開環控制
步進電機的動態規劃開環控制結果見表6,在期望位移為600脈沖步時,動態規劃開環控制的耗時為140ms,誤差為1脈沖步,比常規開環控制精度更高。在多次實驗中,誤差最大時為3脈沖步,控制精度較高,符合自動對焦系統的要求。對比表5與表6在不同期望位移的實驗結果,得出如下結論:隨著目標位移逐漸加長,低速開環控制耗時過長,高速開環控制誤差較大,無法滿足系統要求,采用動態規劃開環控制算法耗時短,失步和過沖誤差小,具有更優的控制性能。
使用動態規劃開環控制算法與常規開環控制算法進行拍照對比。實驗步驟如下:①固定相機的位置。②利用相機的手動對焦模式把鏡頭對焦位置調到無窮遠處。③使用兩種電機控制算法對焦同一位置的物體,拍攝兩張照片。④改變對焦物體的位置,分別拍攝10組照片。⑤Tenengrad函數是一種基于梯度的圖像清晰度評價函數,使用Tenengrad函數計算每張照片的清晰度,分別對每組數據進行最大值歸一化。⑥統計每組照片的清晰度與對焦時間。實驗結果如圖6和圖7。

圖6 不同控制算法的圖像清晰度對比
圖6中,兩種對焦算法對焦同一位置的物體進行拍照,10組照片均是本文提出的控制算法拍攝的清晰度更高。圖7中,常規電機控制對焦算法的平均耗時為1.13s,動態規劃電機控制算法對焦平均耗時為1.03s。對焦速度提升約10%。

圖7 不同控制算法的對焦時間對比
論文分析了自動對焦過程中電機速度對開環位置控制的影響,結合矩頻特性設計了動態加速度參數,根據步進電機加減速算法設計了一種精確的開環位置控制算法。給出基于動態規劃的對焦位置控制算法的具體實現與程序流程圖,給出了2000位移與4000位移的搜索結果示例,并進行了對焦拍照實驗。實驗結果表明,使用本文提出的控制算法對焦速度更快,對焦準確性有一定提升,具有一定的實用價值。但算法仍有缺陷:為保證算法的實時性,當控制規模較大,加速時間較長,控制頻率較高時,需要保存的序列表會大幅增加,占用大量的內存資源,因此,需要合理地設計控制參數。
[1] 楊寧寧, 王曉寧, 夏寅輝, 等. 基于步進電機的紅外鏡頭控制組件設計[J]. 激光與紅外, 2012, 42(1): 81-84.
YAND Ningning, WANG Xiaoning, XIA Yinhui, et al. Design of infrared lens control component based on stepping motor[J], 2012, 42(1): 81-84.
[2] 李茂軍, 劉鼎邦. 步進電機細分驅動電磁轉矩分析[J]. 控制工程, 2013, 20(2): 243-245.
LI Maojun, LIU Dingbang. Electromagnetic torque analysis of stepping motor subdivision drive[J]., 2013, 20(2): 243-245.
[3] 李漢. 一種步進電機快速準確定位系統的設計及其分析[J]. 微電機, 2012, 45(9): 91-95.
LI Han. Design and analysis of a fast and accurate positioning system for stepping motor[J]., 2012, 45(9): 91-95.
[4] 王邦繼, 劉慶想, 周磊, 等. 步進電機控制系統建模及加減速曲線優化[J]. 電機與控制學報, 2018, 22(1): 37-42.
WANG Bangji, LIU Qingxiang, ZHOU Lei, et al. Modeling of stepping motor control system and optimization of acceleration and deceleration curve[J]., 2018, 22(1): 37-42.
[5] 周永明, 許進亮, 李向陽, 等. 基于DSP的兩相步進電機細分驅動器設計[J]. 電力電子技術, 2017, 51(4): 87-93.
ZHOU Yongming, XU Jinliang, LI Xiangyang, et al. Design of two-phase stepping motor subdivision driver based on DSP[J]., 2017, 51(4): 87-93.
[6] 曾康玲, 楊向寧, 趙世偉, 等. 步進電機指數型加速曲線優化與實現[J]. 微電機, 2014, 47(6): 36-40.
ZENG Kangling, YANG Xiangning, ZHAO Shiwei, et al. Optimization and realization of exponential acceleration curve of stepping motor[J]., 2014, 47(6): 36-40.
[7] 郭慶, 郭銀峰, 徐翠峰. 基于DSP的步進電機S曲線加減速控制[J]. 桂林電子科技大學學報, 2018, 38(1): 41-44.
GUO Qing, GUO Yinfeng, XU Cuifeng. S-curve acceleration and deceleration control of stepping motor based on DSP[J]., 2018, 38(1): 41-44.
[8] 路欣宇, 蘇俊波, 許紅, 等. 基于模糊控制的步進電機開環調焦系統設計[J]. 紅外技術, 2018, 40(3): 228-231.
LU Xinyu, SU Junbo, XU Hong, et al. Design of stepping motor open-loop focusing system based on fuzzy control[J]., 2018, 40(3): 228-231.
[9] 楊穎輝. 基于AVR控制器的步進電機開環定位控制技術研究[J]. 宇航計測技術, 2016, 36(6): 89-95.
YAND Yinghui. Research on open-loop positioning control technology of stepping motor based on AVR controller[J]., 2016, 36(6): 89-95.
[10] 尤玉虎, 劉通, 劉佳文. 基于圖像處理的自動對焦技術綜述[J]. 激光與紅外, 2013, 43(2): 132-136.
YOU Yuhu, LIU Tong, LIU Jiawen. Overview of auto focus technology based on image processing[J], 2013, 43(2): 132-136.
[11] 蔡祖光, 史鐵林. 步進電動機矩頻特性測試方法研究[J]. 電子器件, 2012, 35(2): 191-193.
CAI Zuguang, SHI Tielin. Research on measurement method of torque frequency characteristics of stepping motor[J]., 2012, 35(2): 191-193.
[12] Ono M, Pavone M, Kuwata Y. Chance-constrained dynamic programming with application to risk-aware robotic space exploration[J]., 2015, 39(4): 556-567.
[13] 劉大龍. 基于動態規劃的冗余機械臂液壓驅動系統能量優化[J]. 中國工程機械學報, 2018, 16(6): 483-496.
LIU Dalong. Energy optimization of hydraulic drive system of redundant manipulator based on dynamic programming[J]., 2018, 16(6): 483-496.
Control of Focusing System of Stepper Motor Based on Dynamic Programming
KUANG Xianyan,ZHOU Yalong,WU Yugang
(,,341000,)
To solve the problems of slow focusing in a stepper motor lens, caused by a stepper motor used for low-frequency driving, and the lack of focus, caused by an out-of-step stepper motor used for high-frequency driving, the open-loop control algorithm of a stepper motor for an STM lens is designed by analyzing the motor's acceleration and deceleration action and its acceleration-deceleration curves during the focusing process. Based on the constant speed of the motor during the unit control period, the algorithm transforms the position control problem of the stepper motor into a pulse output problem in the unit control cycle, which realizes a skillful combination of speed control and position control. The control circuits are built for the STM lens focusing motor. The experimental results show that this algorithm can improve the open-loop control precision of the stepper motor, effectively suppressing the out-of-focus problem caused by overshoot and out-of-step stepper motors.
STM lens, stepper motor, dynamic programming, acceleration-deceleration curve, position control
TN216
A
1001-8891(2022)02-0163-07
2020-06-17;
2020-08-10.
鄺先驗(1976-),男,博士,教授。主要研究方向:智能交通系統、系統建模與仿真、智能控制與信息技術。E-mail:xianyankuang@163.com