文獻標識碼: A
文章編號: 0258-7998(2011)06-0048-04
步進電機是一種將電脈沖轉(zhuǎn)換為角位移或直線運動的執(zhí)行設(shè)備。在非超載的情況下,,電機轉(zhuǎn)速和停止位置只取決于脈沖信號的頻率和脈沖數(shù),,而不受負載變化的影響,,因此步進電機廣泛應(yīng)用于精密控制場合[1]。
在基于圖像處理評價函數(shù)的調(diào)焦系統(tǒng)中,,常用的調(diào)焦策略包括斐波那契搜索法和爬山搜索法,,其中又以爬山搜索法應(yīng)用最為廣泛[2]。根據(jù)爬山搜索的原理,,在開始搜索時,,先復(fù)位調(diào)焦鏡頭到起始搜索位置,在搜索焦點的過程中,,要防止由于圖像噪聲等干擾造成程序判斷錯誤,,導(dǎo)致調(diào)焦鏡頭越出調(diào)焦范圍邊界。
為了適應(yīng)這種控制需求,,對通用步進電機控制器進行了改進,,使其在具有自動和手動控制功能的同時,引入限位信號反饋控制,。電機控制器使用硬件描述語言(HDL)編寫,,而限位信號則由位置感應(yīng)電路中的光電開關(guān)器件自動反饋。
1 步進電機驅(qū)動原理
步進電機與直流電機的驅(qū)動方式不同,,它需要邏輯控制器與功率驅(qū)動電路配合使用,。具有位置感應(yīng)電路的步進電機驅(qū)動原理圖如圖1所示。
電機控制器接受指令單元的控制指令,,同時檢測位置感應(yīng)電路反饋的限位信號,,然后向功率驅(qū)動單元傳遞驅(qū)動邏輯,功率驅(qū)動單元轉(zhuǎn)換這些驅(qū)動邏輯,,并輸出功率脈沖驅(qū)動步進電機運行,。
2 步進電機控制器
通用步進電機控制器主要用于輸出驅(qū)動邏輯信號,控制步進電機的運行方向,、速度,、步數(shù)和停止。本文的步進電機控制器要求具有手動和自動控制功能,,同時加入復(fù)位和限位處理模塊,,控制目標為一種二相四線制步進電機。加入限位信號(LIMIT)控制功能的控制器頂層信號如圖2所示,。
圖2中DATA為電機自動運行的步數(shù),,HOLD控制電機停止,MANUAL為手動觸發(fā)信號,,DIRECTION用于控制運行方向,,RESET_TRI為爬山搜索復(fù)位信號,四路OUT信號為步進電機的輸出邏輯,,用于四線制步進電機的驅(qū)動控制,。通過控制輸出邏輯的頻率DRI_CLK可以控制步進電機運行速度,,而輸出邏輯的轉(zhuǎn)換方向則控制了步進電機的運行方向[3]。
2.1 模塊實現(xiàn)
步進電機在具有一定轉(zhuǎn)換方向的驅(qū)動脈沖下運行,,據(jù)此將電機控制器劃分為方向控制和邏輯輸出兩個部分,。限位信號用于復(fù)位和限定運行方向,因此在方向控制部分同時處理限位,;在邏輯輸出部分,,按照控制需求再次劃分為復(fù)位、自動和手動三個邏輯處理模塊,,在邏輯輸出的實現(xiàn)方式上,,復(fù)位、自動和手動通過一定的優(yōu)先級邏輯,,通過發(fā)送電機占用請求復(fù)用邏輯輸出模塊,。圖3為控制器模塊劃分示意圖。
(1)爬山復(fù)位
爬山復(fù)位模塊用于復(fù)位調(diào)焦鏡頭到爬山搜索的起始位置,。電機控制器在捕獲到指令單元的復(fù)位信號后,,按預(yù)定的運行方向產(chǎn)生驅(qū)動邏輯,直至控制器收到限位信號LIMIT的有效反饋后停止,。復(fù)位過程中,,自動和手動請求無效。
(2)自動控制
步進電機控制器的步數(shù)數(shù)據(jù)接收端DATA在接收到指令單元傳入的運行步數(shù)后,,首先檢查當(dāng)前是否有其他電機占用請求,如果電機空閑,,就按照同時傳入的方向信號輸出指定步數(shù)的驅(qū)動邏輯,;否則忽略本次自動控制請求。
(3)手動微調(diào)
手動微調(diào)在控制器中作為一種輔助控制手段,,允許人工微調(diào)調(diào)焦鏡頭的位置,。每啟動一次手動微調(diào),電機就按照設(shè)定的運行方向,,運行一段固定的微調(diào)距離,。控制器在捕獲到手動輸入信號后,,同時讀取手動運行方向DIRECTION的設(shè)置值,,如果當(dāng)前電機空閑,則按照手動輸入的方向信號輸出固定步數(shù)的驅(qū)動邏輯,;否則手動請求無效,。
(4)方向和限位處理
當(dāng)控制器運行在手動微調(diào)或自動控制時,需要防止調(diào)焦鏡頭越出邊界,。方向模塊在收到有效的限位信號LIMIT后,,對正在輸出的方向信號取反,,控制步進電機反方向運行,實現(xiàn)限位要求,。當(dāng)控制器沒有收到限位信號反饋時,,則讀取DIRECTION端口的方向,傳遞給邏輯輸出模塊,,用于控制驅(qū)動邏輯的轉(zhuǎn)換方向,。
(5)邏輯輸出
邏輯輸出模塊內(nèi)置邏輯發(fā)生器,邏輯發(fā)生器按照電機請求和方向信號輸出驅(qū)動邏輯,。方向信號用于控制驅(qū)動邏輯的轉(zhuǎn)換方向,;自動和手動模塊的核心是計數(shù)器,電機請求信號是步數(shù)計數(shù)器的輸出,,因此電機請求信號的有效時間表示允許邏輯發(fā)生器運行的時鐘周期數(shù),。
2.2 邏輯發(fā)生器
邏輯發(fā)生器的輸出邏輯與步進電機的驅(qū)動方式密切相關(guān)。本文控制目標的驅(qū)動方式為二相雙四拍式,。標記步進電機的兩相繞組為:A(+),、B(-)、C(+),、D(-),,AB為一相,CD為另一相,,則二相雙四拍的驅(qū)動方式為AC-AD-BD-BC[4],。二相雙四拍的驅(qū)動方式是指電機輸入線的通電方式,也即功率驅(qū)動單元的輸出通電脈沖,,而邏輯發(fā)生器的輸出還要考慮功率驅(qū)動單元的轉(zhuǎn)換方式,。
功率驅(qū)動單元可以使用MOS管等分立元件或?qū)S眉呻娐穼崿F(xiàn)[5]。為了減少電路規(guī)模,,采用專用驅(qū)動芯片BA6845FS完成功率轉(zhuǎn)換,。該芯片具有四路電平轉(zhuǎn)換,支持二相雙四拍驅(qū)動方式,;輸出飽和電壓低,、內(nèi)置節(jié)電和過熱保護電路,可以降低電路功耗,,同時提高電路可靠性,。其真值表如表1所示[6]。從表1中可以看出,,當(dāng)控制器沒有接到電機運行指令時,,可以設(shè)置邏輯發(fā)生器的輸出B/D為0,使步進電機的繞組處于開路狀態(tài),防止電機發(fā)熱,。
根據(jù)表1的功率轉(zhuǎn)換方式,,可以得到邏輯發(fā)生器的輸出邏輯與二相雙四拍繞組通電方式的對應(yīng)轉(zhuǎn)換關(guān)系,如表2所示,。表2中1代表高電平,,磁極繞組通電;0代表低電平,,磁極繞組不通電,。
表2中,繞組任意一次通電方式間的變化(1-2,、2-3,、3-4、4-1),,步進電機都會轉(zhuǎn)動一個步距角,,即移動一步,所以可以通過控制驅(qū)動邏輯轉(zhuǎn)換的次數(shù)來控制步進電機轉(zhuǎn)動的步數(shù),。邏輯發(fā)生器按照脈沖計數(shù)的順序,,從1到4循環(huán)輸出驅(qū)動邏輯時,繞組按照二相雙四拍的方式通電,,驅(qū)動步進電機正向轉(zhuǎn)動,,反之實現(xiàn)反向轉(zhuǎn)動。
按照表2中的邏輯輸出電平即可設(shè)計邏輯發(fā)生器,。其VerilogHDL代碼如下:
always @(negedge clk or negedge reset)
begin
if(!reset) q = 4’b0000;
else if(!hold || !run_en) q = 4’b0000;
//輸出0可以使功率芯片輸出開路狀態(tài),,
//防止電機發(fā)熱
else begin//電機請求有效
if(!direc_i)//反方向
case (q) //表2中的邏輯輸出
4'b0111 : q = 4'b1111;
4'b1111 : q = 4'b1101;
4'b1101 : q = 4'b0101;
4'b0101 : q = 4'b0111;
default : q = 4'b0101;
endcase
else if(direc_i)//正方向
case (q)
4'b0111 : q = 4'b0101;
4'b0101 : q = 4'b1101;
4'b1101 : q = 4'b1111;
4'b1111 : q = 4'b0111;
default : q = 4'b0101;
endcase
end
end
3 仿真與實驗
為了驗證所設(shè)計的步進電機控制器是否能正常工作,使用EDA工具和Nios II嵌入式系統(tǒng)對控制器進行功能仿真和實驗驗證,。
3.1 功能仿真
使用測試臺(testbench)程序在Modelsim中對步進電機控制器進行功能仿真,。仿真時鐘周期為100 ns,仿真結(jié)果如圖4所示,。測試臺程序在預(yù)定的時間點自動修改輸入端口寄存器的值,并監(jiān)視邏輯發(fā)生器的輸出,。在評價功能仿真輸出結(jié)果時,,主要查看自動、手動和復(fù)位3個模塊的仿真輸出邏輯是否按測試臺程序要求轉(zhuǎn)換了預(yù)定的次數(shù),,同時檢查限位和停止功能是否有效,。
圖4中,測試臺首先設(shè)置爬山復(fù)位(reset_tri)為有效,,邏輯發(fā)生器開始輸出驅(qū)動邏輯,,直到限位信號(limit)下降沿到來,A/B/C/D恢復(fù)為0;接著置手動觸發(fā)信號(manual)有效,,邏輯發(fā)生器在輸出手動控制模塊預(yù)置的7次驅(qū)動邏輯轉(zhuǎn)換后,,A/B/C/D恢復(fù)為0;然后向自動步數(shù)(data)寫入數(shù)據(jù)’00001001’,,邏輯發(fā)生器輸出了9次邏輯轉(zhuǎn)換,;在手動和自動控制過程中,測試臺在邏輯輸出過程中插入了有效的限位信號,。由圖4可以看出,,在1600 ns和3 μs 處,驅(qū)動邏輯的轉(zhuǎn)換方向發(fā)生了變化,;最后,,向data寫入數(shù)據(jù)’00000100’,驅(qū)動邏輯重新開始輸出,,輸出過程中遇到停止信號(hold)有效,,強制輸出A/B/C/D為0。仿真結(jié)果表明所設(shè)計的步進電機控制器的功能正確,。
3.2 實驗驗證
步進電機控制器的實驗驗證電路如圖5所示,。嵌入Nios II處理器的片上可編程系統(tǒng)(SoPC)在ALTERA DE2開發(fā)板的FPGA中建立,同時設(shè)計了位置感應(yīng)電路和功率驅(qū)動電路,,用來驗證復(fù)位和限位功能以及驅(qū)動步進電機,。
位置感應(yīng)電路如圖6所示。采用光電開關(guān)(optoiso)作為限位信號傳感器,,當(dāng)調(diào)焦鏡頭在設(shè)定區(qū)域內(nèi)運行時,,限位傳感器輸出高電平信號,到達邊界時則輸出低電平信號,。光電開關(guān)輸出的電平信號經(jīng)存儲后,,輸出限位信號LIMIT。
步進電機的功率驅(qū)動電路如圖7所示,,圖中A/B/C/D是步進電機控制器輸出的邏輯電平信號,,經(jīng)存儲后送入BA6845FS進行功率轉(zhuǎn)換,而功率芯片的輸出端口直接與二相四線制步進電機的繞組控制線相連,。
完成功率電路和位置反饋電路制作后,,把它們連接在DE2開發(fā)板上。將步進電機控制器與Avalon總線信號連接后添加到Nios II系統(tǒng)集成工具SoPC Builder中,,然后添加其他Nios II系統(tǒng)模塊構(gòu)成一個SoPC并下載到FPGA,。最后編寫面向Nios II處理器的步進電機控制程序,其中手動控制采用按鍵中斷方式,。通過程序向步進電機發(fā)送自動和手動以及復(fù)位控制命令,,驗證步進電機的運行狀況,。實驗結(jié)果表明,步進電機可以響應(yīng)自動控制和手動微調(diào)請求,,同時有效的限位信號可以復(fù)位調(diào)焦鏡頭到達爬山起始位置和限定鏡頭的移動范圍,。
參考文獻
[1] 郭麗霞.基于AMIS30522的步進電機控制器設(shè)計及實現(xiàn)[J].自動化與儀表,2009(8):14-17.
[2] 程永強,,黃英男,,謝克明.一種攝像頭自動聚焦方法及硬件實現(xiàn)[J].電子技術(shù)應(yīng)用,2009,,(1):28-31.
[3] 張文愛,,李逢磊,程永強.基于FPGA的步進電機驅(qū)動及自動聚焦的實現(xiàn)[J].電子技術(shù)應(yīng)用,,2008(5):33.
[4] 王美川,,王紫婷.基于FPGA控制的步進電機驅(qū)動設(shè)計[J]. 電子測量技術(shù),2008,,31(6):184-187.
[5] 蔚永強,,張秦嶺,郭宏.一種低成本的新型步進電機驅(qū)動器的研制[J].微計算機信息,,2007,,23(10):95-97.
[6] Rohm CO.,LTD.Stepping motor driver BA6845FS[EB/OL].2005[2010-09-28].http://www.rohm.com.cn/.