新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的三坐標測量機電機控制系統

        基于FPGA的三坐標測量機電機控制系統

        作者: 時間:2017-02-27 來源:網絡 收藏

        1、控制系統概述

        本文引用地址:http://www.104case.com/article/201702/338798.htm

        隨著工業的發展,三坐標測量機越來越顯示出其重要作用。而電機控制系統對三坐標測量機的運行有著非常重要的作用。由于FPGA可以現場可編程,可以實現專用集成電路,能滿足片上系統設計(SOC)的要求,使其日益成為系統的關鍵部件。[1]本文介紹一種基于FPGA的電機控制系統,用于控制三坐標測量機電機運行。

        系統主要由PC機、控制電路、驅動器[2]和電機組成。系統結構圖見圖1。

        其中PC機,由VC++實現用戶界面,發出的命令由FPGA進行接收和緩存,單片機進行分析處理產生控制命令,控制命令再經過FPGA傳入驅動器,控制電機運行。同時電機狀態信息反饋回PC機,用于人機交互。系統中FPGA選用的是Altera公司的Cyclone系列。

        2、系統功能實現

        下面分別介紹FPGA實現電機控制功能的幾個重要部分。

        2.1編碼器進行速度、位移量測量的實現方法

        編碼器為傳感器類的一種,主要用來偵測機械運動的速度、位置、角度、距離或計數,在電機控制中用于換相、速度及位置的檢出,作用十分重要。 光電編碼器具有分辨率高,響應速度快,體積小,重量輕,耐惡劣環境等特點,故常被用作高精度位置檢測傳感器。它的精度或分辨率主要決定于每轉輸出的脈沖數(對增量式編碼器而言)。根據控制需要,還可以利用倍頻技術來提高位置檢測精度。[5]本系統使用增量式編碼器即增量編碼盤。

        增量編碼盤輸出信號A和B具有90°的相位差。A和B的相位關系反映了被測對象的旋轉方向,若A超前于B,表明編碼器是順時針旋轉的,反之,編碼器為逆時針旋轉。當增量編碼盤的細分數為N時,增量編碼盤的每一個脈沖代表的角位移為360°/N,A、B信號的頻率相同,頻率大小反映當前電機速度,由這兩個信號就可得到電機轉向、轉角和轉速。[6]如圖2所示,在A和B的上升沿和下降沿計數器均做相應變化,得到count脈沖,在FPGA中計數,即可得到編碼器輸出的脈沖數,經過計算就可以得到電機一定時間內實際走過的路程或者單位時間內的速度。


        本系統主要在FPGA中編程實現對編碼器的硬件解碼。主要程序如下:

        if(shift_a==2’b01)
        begin
        if(b)
        cnt<=#2cnt-1’b1;
        else
        cnt<=#2cnt+1’b1;
        end
        elseif(shift_a==2’b10)
        begin
        if(b)
        cnt<=#2cnt+1’b1;
        else
        cnt<=#2cnt-1’b1;
        end
        elseif(shift_b==2’b01)
        begin
        if(a)
        cnt<=#2cnt+1’b1;
        else
        cnt<=#2cnt-1’b1;
        end
        elseif(shift_b==2’b10)
        begin
        if(a)
        cnt<=#2cnt-1’b1;
        else
        cnt<=#2cnt+1’b1;

        其中,cnt為十六位寄存器,shift_a=2’b01和shiftb=2’b01分別表示A和B出現上升沿,同理如果是等于2’b10則表示下降沿。電機編碼器硬件解碼程序仿真模擬后效果如圖3所示。圖中number為FPGA計算所得的編碼器輸出脈沖數。


        2.2脈沖控制實現運動過程

        利用脈沖控制電機速度即利用脈沖頻率決定電機速度。這種方法能夠得到較高的運行精度,適用于三坐標機電機控制系統。首先,上位機給定運行速度,命令傳到單片機,單片機進行計算,獲得單位脈沖周期內需要時鐘數,再將數據傳入FPGA,由其相應模塊處理。FPGA中相應的處理模塊實現的基本原理是:根據單片機給出的時鐘數進行判定。程序開始運行,開始計數周期,時鐘數目不斷累加,當累加數目到達單片機給定值的時候完成一個計數周期。然后計數器清零,重新開始計數,輸出信號狀態翻轉。程序如下所示:

        if(cnt>=currentSpd)
        begin
        puls<=~puls;
        cnt<=25’h1;
        end
        else
        cnt<=cnt+1’b1;
        其中cnt為計數器,currentSpd為單片機計算所得的時鐘數,puls為輸出脈沖。電機運動加速的過程就是一個脈沖頻率逐漸加大的過程,也就是說單位周期內時鐘數量逐漸增加的過程。相應的減速過程與之相反。勻速過程則是一個以給定頻率保持不變的運動過程。下圖便是一個勻速、減速的仿真結果。


        2.3限位和解除限位的方法

        最后講述限位及其解除方法。在電機控制過程中應用限位是一種減少事故發生的有效方法。限位功能的實現需要由限位開關實現。限位開關按其檢測方式可分為接觸式(行程開關)和非接觸式(接近開關)。[7]本系統采用非接觸式。接近開關式一種非接觸式檢測,當運動的金屬物體接近開關的感應面而達到動作距離時,便無接觸無壓力的自動發出檢測信號,用于驅動器,也可以將其輸出信號送入控制單元,以控制系統動作。[8]電機運行過程中,如果運動軸到達限位開關,即產生限位信號,信號傳到控制電路,FPGA接收限位信號,做出處理后發出停止前進信號傳給驅動器,驅動器控制電機停止,避免發生碰撞危險。一旦出現限位,前進命令即被禁止,電機只能帶動運行軸反方向運行,在運行軸反向運動同時單片機監測FPGA測得編碼器反饋的位移值,如果判斷運行軸反方向運動的位移值達到安全值,便認定限位解除,電機運行恢復正常狀態。
        3、總結
        本文較為詳細的介紹了一種基于FPGA的三坐標測量機電機控制系統。實現了較為精確的電機運行控制,實現了運行狀態監測和限位,運行過程中遇到危險時能夠及時停止,運動整體的安全性有了很大保障。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 漳平市| 丰顺县| 嵊州市| 商水县| 惠东县| 盐城市| 永仁县| 福州市| 汉寿县| 梓潼县| 格尔木市| 闵行区| 大足县| 安国市| 南乐县| 漳州市| 石城县| 怀集县| 栖霞市| 盖州市| 花莲市| 南华县| 合山市| 潍坊市| 汾西县| 永平县| 长丰县| 行唐县| 内江市| 阿尔山市| 夏河县| 临武县| 翁牛特旗| 南川市| 额敏县| 林西县| 将乐县| 西峡县| 双牌县| 龙川县| 韶关市|