楊海光 劉文怡 朱思敏 張會新
(電子測試技術重點實驗室1,山西 太原 030051;中北大學儀器科學與動態測試教育部重點實驗室2,山西 太原 030051)
步進電機。系統總體結構框圖如圖1所示。
隨著航空航天和飛行武器的快速發展,物體姿態的控制精度和反應速度成為精確與快速打擊的關鍵因素。本文基于快速與精確調整設備姿態的目的,采用步進電機配合傾角傳感器[1-2],實現了簡易精確的姿態角度測量控制系統,為低成本、高精度測控系統的發展提供了參考。
本文將傾角傳感器鑲嵌在步進電機的轉軸上,控制計算機下發定位角度;通過FPGA將定位角度與當前實際角度進行對比運算,以控制輸出脈沖個數的方式來控制角位移量,從而達到準確定位的目的;并將傾角傳感器的實際測量值反饋給上位機進行實時監測,進而達到對電機轉軸偏轉水平面角度的測量。

圖1 系統總體結構框圖Fig.1 The overall structure of system
ROB100上電(12 V)即工作,并立刻通過RS-232串口輸出傾角數據,波特率為57600 bit/s,輸出的數據格式為每幀7個字節。數據幀格式如表1所示。

表1 數據幀格式Tab.1 Format of the data frame
本設計主要可分為5個部分,分別為數據產生單元——外接的數字式傾角傳感器、主控單元——FPGA、控制終端——上位機、驅動單元——功率放大器(步進電機驅動芯片)、執行單元——永磁式減速型
表1中,X軸方向表示橫滾角,Y軸方向表示俯仰角,本設計選用的是X軸方向的角度數據實現測量與定位的控制。經試驗證明,Y軸方向的控制與X軸的原理相同。
數據通過RS-232接口異步串行進入FPGA。通過FPGA內部邏輯運算和處理,將實際測量角度反饋給上位機進行實時監測。上位機下發定位角度,將角度轉換的脈沖數通過脈沖分配器輸出;再經電機驅動芯片的功率放大后給到電機上,使電機旋轉到設定的位置,并在當前位置保持動態平衡。
外部電源給傳感器供電,供電電壓為12 V。傳感器上電后下發傾角數據,通過串口逐位進入MAX3232中。MAX3232將12 V的電平數據轉化為5 V的電平數據后串行進入FPGA。RS-232串口通信原理圖如圖2所示。

圖2 RS-232串口通信原理圖Fig.2 Principle of RS-232 serial port communication
通過對底層邏輯程序的編寫,對串行進入FPGA內部的傾角數據進行采集、編碼、計算,最終將傾角數據轉化為脈沖個數,并根據電機工作原理重新分配輸出。FPGA將處理后的數據經ULN2003電機驅動芯片輸出給步進電機。
驅動電路如圖3所示。

圖3 驅動電路Fig.3 Driving circuit
本設計選用的步進電機型號為24BYJ48-5V,共有4對磁極即4相,5根線依次為紅、橙(A)、黃(B)、粉(C)、藍(D)五種顏色。其中藍線和黃線是一對,橙線和粉線是一對,紅線是這兩組線圈抽頭的公共線。藍線和黃線、橙線和粉線接控制脈沖輸出,所以只需要4個輸出接口。通過內部邏輯程序的管腳分配,選用的是驅動芯片的前4個管腳,輸出管腳即OUT1~OUT4。紅線接+5 V的直流電源。
步進電機是純粹的數字控制電動機,是將電脈沖信號轉換成角位移的執行元件。步進電機轉子的轉角與輸入的電脈沖數成正比,其轉速與輸入的脈沖頻率成正比,而電動機的旋轉方向則由脈沖的分配順序決定[4]。
2.2.1 步進電機技術指標
不同的步進電機有不同的啟動頻率和頻率上限,工作頻率應介于兩者之間,電機才能在非過載的情況下正常旋轉。經過多次計算和試驗,本設計將旋轉頻率設定為625Hz,選用的電機步距角為5.625°/64,所以旋轉一周需要4096個脈沖,每一個脈沖電機旋轉的角度約為0.088°。步進電機的運行方式為4相8拍,即A-ABB-BC-C-CD-D-DA-A,8個狀態為一個循環[5-7]。
2.2.2 傾角傳感器技術指標
選用的傳感器量程為-90°~90°。傾角傳感器產生的是二進制數據,解碼方式如下。
①接收的16位整數≤32768時,傾角值=16位整數×90/32768(正角)。
② 接收的16位整數>32768時,傾角值=(16位整數-65535)×90/32768(負角)。
由于16位數每變化一位,角度值也會隨之變化,所以傾角傳感器的精度理論值為(1/32768)°。
2.2.3 角度與脈沖個數的轉換
由上述分析可知,步進電機的精度為0.088°。為便于底層邏輯程序編寫時換算,將這個角度表示為N;傾角傳感器的精度為(1/32768)°,將這個角度表示為n,N/n約等于32。所以當傾角傳感器產生的數據變化約32個精度單位時,電機變化一個精度單位,即將產生的角度數據轉化成整數與32循環作差。當數據減到小于32時,停止作差循環。通過計數器將“32”的個數進行累加,即為實際輸出的脈沖數。對于實際位置偏離參考面的上下兩側,則通過控制步進電機的旋轉方式來實現調整要求[8]。
本設計應用VHDL作為邏輯程序編輯語言,在此重點介紹計算器和脈沖分配器的設計與實現。通過對底層邏輯程序編寫,經綜合編譯后生成的頂層圖如圖4所示。

圖4 計算器和脈沖分配器邏輯程序頂層圖Fig.4 Top layer of the logical program of calculator and pulse distributor
3.1.1 計算器
計算模塊連接通信的主要引腳的功能如下。
clk表示時鐘信號,使模塊正常工作的時鐘。rst表示復位信號,低電平有效。復位后計算器處于初始狀態。datain表示傾角傳感器下發的數據,計算器內部進行運算處理。wrin表示寫數據信號,每發生一次由低到高的變化就寫入一組數據。busy表示忙碌等待信號,脈沖分配器反饋給計算器的信號。當脈沖分配器處于工作執行狀態時,計算器停止數據的下發。cntoutX表示脈沖個數信號(最高位控制旋轉方向,剩下的為數據位),由計算器內部計算轉換產生,輸出給脈沖分配器,再由脈沖分配器分配啟動脈沖,最終由步進電機執行相應的步數。
以上信號中,除cntoutX為輸出信號外,其余均為輸入信號。
3.1.2 脈沖分配器
脈沖分配模塊連接通信的主要引腳的功能如下。
clk32表示時鐘信號,驅動準備時鐘1.25 MHz。rst表示復位信號,低電平有效。復位后脈沖分配器處于初始狀態。cntin表示脈沖個數信號,接收計算器給出的脈沖個數及旋轉方向。busy表示忙碌等待信號,脈沖分配器產生,當脈沖分配器處于忙碌狀態時,輸出為高電平。data表示執行信號,脈沖分配器輸出給步進電機時電機正常運轉的執行脈沖。
以上信號中,除data為輸出信號外,其余均為輸入信號。
為了直觀顯示,全面地表示出算法實現的過程,這里以45°所在的平面為參考平面,詳細介紹了算法的運用與實現。角度示意圖如圖5所示。
傾角傳感器輸出的角度落在第一象限并且大于45°時,用傳感器角度減去45°,即為調整角度,旋轉方向設定為順時針;當傾角傳感器輸出的角度落在第一象限并且小于45°時,用45°減去傳感器角度,即為調整角度,旋轉方向設定為逆時針;當傾角傳感器輸出的角度落在第四象限時,計算角度的方法為65535減去接收到的16位數據,將這個數據轉化成角度,即為傾角傳感器在第四象限中的實際角度(符號忽略不計),再加上參考面設定的45°,即為需要調整的角度,旋轉方向設定為逆時針。

圖5 角度示意圖Fig.5 Schematic diagram of angle
通過對本設計的研究,將開環器件步進電機與傾角傳感器有效結合,最終實現了帶反饋的閉環可控系統,提高了電機的實用性。
本設計邏輯簡單、可靠性好,設計理念可以有效地應用在各種需要維持動態平衡狀態的擺翼或舵盤上,也可以根據需求測量出實際應用中的俯仰角或橫滾角,具有廣泛的應用情景。
[1]汪厚新.采用FPGA的步進電機控制系統研究[D].成都:西南交通大學,2006.
[2]張維勝.傾角傳感器原理和發展[J].傳感器世界,2002,8(1):18-21.
[3]陳曉鴿,昂軍.Protel 99SE標準實例教程[M].北京:機械工業出版社,2010:139-183.
[4]王美川,王紫婷.基于FPGA控制的步進電機驅動設計[J].電子測量技術,2008,31(6):184-187.
[5]吳云,陸鍔,趙海洋,等.基于FPGA的步進電機細分驅動器的設計[J].自動化儀表,2009,30(10):61-63.
[6]林海波.基于單片機的步進電機均勻細分驅動器的實現[J].自動化儀表,2004,25(9):60-63.
[7]陳錫侯,陳濤,彭東林,等.基于時間細分技術的高精度自動定位控制方法研究[J].自動化儀表,2011,32(4):26-28.
[8]諶慧銘,湯曉華,郭小進.轉子微揚度測量儀的研制[J].自動化儀表,2008,29(10):47-50.