一種基于FPGA的三坐標測量機電機控制系統
1、控制系統概述
本文引用地址:http://dyxdggzs.com/article/193590.htm隨著(zhù)工業(yè)的發(fā)展,三坐標測量機越來(lái)越顯示出其重要作用。而電機控制系統對三坐標測量機的運行有著(zhù)非常重要的作用。由于FPGA可以現場(chǎng)可編程,可以實(shí)現專(zhuān)用集成電路,能滿(mǎn)足片上系統設計(SOC)的要求,使其日益成為系統的關(guān)鍵部件。[1]本文介紹一種基于FPGA的電機控制系統,用于控制三坐標測量機電機運行。
系統主要由PC機、控制電路、驅動(dòng)器[2]和電機組成。系統結構圖見(jiàn)圖1。
其中PC 機,由VC++實(shí)現用戶(hù)界面,發(fā)出的命令由FPGA進(jìn)行接收和緩存,單片機進(jìn)行分析處理產(chǎn)生控制命令,控制命令再經(jīng)過(guò)FPGA傳入驅動(dòng)器,控制電機運行。同時(shí)電機狀態(tài)信息反饋回PC機,用于人機交互。系統中FPGA選用的是Altera公司的Cyclone系列。
2、系統功能實(shí)現
下面分別介紹FPGA實(shí)現電機控制功能的幾個(gè)重要部分。
2.1 編碼器進(jìn)行速度、位移量測量的實(shí)現方法
編碼器為傳感器類(lèi)的一種,主要用來(lái)偵測機械運動(dòng)的速度、位置、角度、距離或計數,在電機控制中用于換相、速度及位置的檢出,作用十分重要?!」怆娋幋a器具有分辨率高,響應速度快,體積小,重量輕,耐惡劣環(huán)境等特點(diǎn),故常被用作高精度位置檢測傳感器。它的精度或分辨率主要決定于每轉輸出的脈沖數(對增量式編碼器而言) 。根據控制需要,還可以利用倍頻技術(shù)來(lái)提高位置檢測精度。[5]本系統使用增量式編碼器即增量編碼盤(pán)。
增量編碼盤(pán)輸出信號A 和B 具有90°的相位差。A和B的相位關(guān)系反映了被測對象的旋轉方向,若A 超前于B ,表明編碼器是順時(shí)針旋轉的,反之,編碼器為逆時(shí)針旋轉。當增量編碼盤(pán)的細分數為N 時(shí),增量編碼盤(pán)的每一個(gè)脈沖代表的角位移為360° /N,A、B 信號的頻率相同,頻率大小反映當前電機速度,由這兩個(gè)信號就可得到電機轉向、轉角和轉速。[6]如圖2所示,在A(yíng)和B的上升沿和下降沿計數器均做相應變化,得到count 脈沖,在FPGA中計數,即可得到編碼器輸出的脈沖數,經(jīng)過(guò)計算就可以得到電機一定時(shí)間內實(shí)際走過(guò)的路程或者單位時(shí)間內的速度。
本系統主要在FPGA中編程實(shí)現對編碼器的硬件解碼。主要程序如下:
if(shift_a == 2’b01)
begin
if(b)
cnt = #2 cnt - 1’b1;
else
cnt = #2 cnt + 1’b1;
end
else if(shift_a == 2’b10)
begin
if(b)
cnt = #2 cnt + 1’b1;
else
cnt = #2 cnt - 1’b1;
end
else if(shift_b == 2’b01)
begin
if(a)
cnt = #2 cnt + 1’b1;
else
cnt = #2 cnt - 1’b1;
end
else if(shift_b == 2’b10)
begin
if(a)
cnt = #2 cnt - 1’b1;
else
cnt = #2 cnt + 1’b1;
其中,cnt為十六位寄存器,shift_a =2’b01和shiftb=2’b01分別表示A和B出現上升沿,同理如果是等于2’b10則表示下降沿。電機編碼器硬件解碼程序仿真模擬后效果如圖3所示。圖中number為FPGA計算所得的編碼器輸出脈沖數。
2.2 脈沖控制實(shí)現運動(dòng)過(guò)程
利用脈沖控制電機速度即利用脈沖頻率決定電機速度。這種方法能夠得到較高的運行精度,適用于三坐標機電機控制系統。首先,上位機給定運行速度,命令傳到單片機,單片機進(jìn)行計算,獲得單位脈沖周期內需要時(shí)鐘數,再將數據傳入FPGA,由其相應模塊處理。FPGA中相應的處理模塊實(shí)現的基本原理是:根據單片機給出的時(shí)鐘數進(jìn)行判定。程序開(kāi)始運行,開(kāi)始計數周期,時(shí)鐘數目不斷累加,當累加數目到達單片機給定值的時(shí)候完成一個(gè)計數周期。然后計數器清零,重新開(kāi)始計數,輸出信號狀態(tài)翻轉。程序如下所示:
if(cnt >= currentSpd)
begin
puls = ~puls;
cnt = 25’h1;
end
else
cnt = cnt + 1’b1;
其中cnt為計數器,currentSpd為單片機計算所得的時(shí)鐘數,puls為輸出脈沖。電機運動(dòng)加速的過(guò)程就是一個(gè)脈沖頻率逐漸加大的過(guò)程,也就是說(shuō)單位周期內時(shí)鐘數量逐漸增加的過(guò)程。相應的減速過(guò)程與之相反。勻速過(guò)程則是一個(gè)以給定頻率保持不變的運動(dòng)過(guò)程。下圖便是一個(gè)勻速、減速的仿真結果。
2.3 限位和解除限位的方法
最后講述限位及其解除方法。在電機控制過(guò)程中應用限位是一種減少事故發(fā)生的有效方法。限位功能的實(shí)現需要由限位開(kāi)關(guān)實(shí)現。限位開(kāi)關(guān)按其檢測方式可分為接觸式(行程開(kāi)關(guān))和非接觸式(接近開(kāi)關(guān))。[7]本系統采用非接觸式。接近開(kāi)關(guān)式一種非接觸式檢測,當運動(dòng)的金屬物體接近開(kāi)關(guān)的感應面而達到動(dòng)作距離時(shí),便無(wú)接觸無(wú)壓力的自動(dòng)發(fā)出檢測信號,用于驅動(dòng)器,也可以將其輸出信號送入控制單元,以控制系統動(dòng)作。[8]電機運行過(guò)程中,如果運動(dòng)軸到達限位開(kāi)關(guān),即產(chǎn)生限位信號,信號傳到控制電路,FPGA接收限位信號,做出處理后發(fā)出停止前進(jìn)信號傳給驅動(dòng)器,驅動(dòng)器控制電機停止,避免發(fā)生碰撞危險。一旦出現限位,前進(jìn)命令即被禁止,電機只能帶動(dòng)運行軸反方向運行,在運行軸反向運動(dòng)同時(shí)單片機監測FPGA測得編碼器反饋的位移值,如果判斷運行軸反方向運動(dòng)的位移值達到安全值,便認定限位解除,電機運行恢復正常狀態(tài)。
3、總結
本文較為詳細的介紹了一種基于FPGA的三坐標測量機電機控制系統。實(shí)現了較為精確的電機運行控制,實(shí)現了運行狀態(tài)監測和限位,運行過(guò)程中遇到危險時(shí)能夠及時(shí)停止,運動(dòng)整體的安全性有了很大保障。
參考文獻
[1] 王開(kāi)軍 基于FPGA的測控技術(shù)研究及應用 中國優(yōu)秀碩士學(xué)位論文全文數據庫
[2] 松下公司.A4使用說(shuō)明書(shū)[Z].日本 松下公司.
[3]王冠、俞一鳴等編著(zhù) 面向CPLD/FPGA的Verilog設計 機械工業(yè)出版社
[4] Cyclone FPGA Family Datasheet ALTERA Corporation March 2003
[5]張團善 陳朝奎 光電編碼器的單片機減振電路設計 國外電子測量技術(shù) 2005年第8期
[6] 吳振宇 李策 馮林 一種基于DSP和FPGA的多路微特電機控制系統 微特電機 2007年第一期
[7] 劉井燕 限位開(kāi)關(guān)的工程應用實(shí)例 自動(dòng)化博覽
[8] 羅濤 接近開(kāi)關(guān)的原理應用及發(fā)展趨勢 電子技術(shù)應用 1993年第七期
評論