張曉燕,盧照新,劉學君,張 凱,楊嗣源
(北京石油化工學院 信息工程學院,北京 102617)
基于MSP430的直線導軌定位裝置的設計與實現
張曉燕,盧照新,劉學君,張 凱,楊嗣源
(北京石油化工學院 信息工程學院,北京 102617)
直線導軌是數控技術的重要組成部件,它的精確程度非常重要;以MSP430單片機為核心,設計了一個直線導軌精確定位裝置;此裝置采用兩相四線的ST57型步進電機和60CM的螺紋絲桿組成一個直線導軌組,選用M7128驅動器驅動步進電機,使用PWM波精確定位算法程序精確控制電機轉速;MSP430的IO端口控制步進電機的正反轉,使得步進電機帶動螺紋絲桿轉動,讓滾動絲杠上的物體往復移動,并在電腦上顯示當前位移值;試驗證明,其定位精度為0.01 cm,具有較高的可靠性和準確性,低成本,穩定性好。
直線導軌;螺紋絲桿;步進電機;MSP430
數控技術水平影響一個國家的先進制造技術的發展,體現了國家綜合國力和工業戰略地位,推動了國家經濟發展和社會進步。直線導軌作為數控技術、機電一體化和工業機器人重要部件,它的精確程度關系到這些領域內產品的優良程度,所以近年來現代科學對精確定位的要求也越來越高,從測量精度上,使用壽命上,還是從噪聲上,都要求非常高。一個直線導軌若能精確定位,對于整個產品的運行操作的失誤,將會大大減少[1]。
步進電機作為直線導軌裝置的主要部件,它定位的精確度就關系到直線導軌的精確度,這在科學領域上同樣具有很大的發展空間。因其涉及行業較多,具有一定的現實意義和較高的使用價值[2]。步進電機,一般有兩種控制方式:第一,通過控制脈沖的數量來控制角位移量[3];第二,通過控制脈沖頻率來控制電機轉動的速度和加速度[4]。因為沒有積累誤差(精度為100%),所以步進電機被廣泛應用于各種開環控制[5]。
設計的裝置系統采用上述第一種控制方式來達到準確定位。此系統由硬件和軟件兩部分組成,具有準確性、實用性及可靠性的特點。其中,硬件主要是步進電機,MSP430,M7128步進電機驅動器,CH340串口通訊模塊、PC機實現的信號。輸入及其顯示部分。軟件包括串口通信模塊、PWM波步進電機定位脈沖算法等程序。編程采用在IAR for MSP430軟件環境下編寫的C語言。
2.1 硬件結構
硬件結構以單片機MSP430為核心作為控制單元,通過串口通信傳送數據到MSP430,然后將收到的數據再通過串口通信返回,在電腦上顯示發送的數據是否正確;通過發的數據給出對應的脈沖數量,控制步進電機轉動的圈數(轉速)和方向,來對直線導軌上的物體進行位移,結構如圖1所示。

圖1 系統結構圖
對應原理總圖如下圖2所示。

圖2 兩相四線步進電機等效電路圖
2.2 滾珠絲桿直線導軌滑臺組
硬件結構采用的是二相四線混合式步進電機和1204型滾珠絲桿直線導軌組,它是由60CM的12044型螺紋絲桿,57式56步進電機,以及配套的滑臺組成。
直線導軌所有方向皆有高剛性、互換性、自動調節、無限滾動循環等特點,同時,它還能實現高速進給。在保證會小于滾珠絲杠副轉速臨界值的前提下,大導程滾珠絲杠副可以實現100 m/min的速度值以上的進給速度[6-8]。
2.3 步進電機的選型
步進電動機能直接接收數字量的輸入,所以特別適合于微機控制。一臺兩相四線式步進電機的等效電路圖如圖2所示,它有四條勵磁信號線,通過這四條勵磁信號線給步進電機發出一定順序的驅動脈沖,步進電機就可以按相應的電流信號運動。每給一個驅動脈沖信號,步進電機就運行一個步進角,各相繞組的通電狀態每循環改變一次,步進電機就運行一個齒距。根據要求,本設計選用的二相四線混合式步進電機型號是57H56。
在任意瞬間,步進電機的繞組只有一相通電,控制器每發出一個驅動脈沖信號,步進電機就運行一個步距角1.8°。
2.4 M7128步進電機驅動器
根據需要選擇了M7128步進電機驅動器,其可實現電壓和電流放大,驅動步進電機的各相繞組驅動器上對應的DIR管腳控制電機旋轉方向,ENA端口控制電機啟停(未用),PUL端口通過脈沖控制步進電機轉速。驅動器面板上六位撥碼開關中的第4位、第5位和第6位可組合出不同的狀態[9],選擇如圖3所示共陰極接法。

圖3 電機驅動器共陰接線法圖
2.5 串口通訊模塊CH340
為了實現單片機串行接口與計算機USB接口之間的通訊功能,采用了USB轉串口模塊CH340。P1.1為串口數據發送端口(TXD),高電平;P1.2為串口數據接收端口(RXD),低電平[10]。
2.6 硬件系統連接
系統總聯接圖如圖4所示和protel原理圖如圖5所示,核心控制芯片采用MSP430G2553,步進電機驅動器為M7128,串口通信的硬件采用CH340模塊。

圖4 系統總接線圖

圖5 系統protel原理圖
3.1 定位控制算法設計
要保證系統的定位精度,步進電機轉動一個步距角所改變的距離不能太大。系統采用的57式的二相步進電機步距角是1.8°,即走一圈是360°,對應360°/18°=200步。對于直徑12 mm的螺紋絲桿,給定的導程是4 mm(絲桿轉一圈,給進量是4 mm),假如先定電機正轉,設定電機當前位移量(即當前位置)為X,則共需走的步數為X/4 mm為螺紋絲桿轉動圈數,轉一圈需要200步,且電機走1步需要1個脈沖,則總共需要200X/4個脈沖。
如更改位移量(即移動到的位置)為Y,那么需要跟位移量X進行比較:
當Y>X,電機保持正轉(正向運動),則需要繼續走:200(Y/X)/4步。
當Y 因電機驅動器M7128最多細分能達到1/128(為了最小誤差選擇),則電機的步距角細分到1.8/128°=0.014°,所以得出最后脈沖數量都需再乘以128。 其中ΔX為輸入位移量,單位為mm,M為所需脈沖數。 對應實現算法,部分程序節選如下: {step=0; step+=((long)state_parameter[3]*16777216); step+=((long)state_parameter[4]*65536); step+=((long)state_parameter[5]*256); step+=((long)state_parameter[6]); pulse_out(step,state_parameter[2]); RX_sign=0; } 因上面已提到采用通過控制脈沖的數量來控制電機的位移量,所以電機只需識別脈沖個數,則單片機MSP430由串口P1.2讀取到的十六進制位移量,通過上述語句轉換出脈沖個數。 3.2 串口調試設計 本系統所設計的串口通信是將8個字節的十六進制數據傳送到MSP430芯片,在輸入位移量前,需要手動把十進制的位移量轉換成十六進制的位移量,利用串口調試助手軟件sscom42輸入十六位數據量進行串口連接。在PC上打開sscom42軟件,接上CH340后,再打開串口,如圖6所示,輸入的通信協議數據為:BB 4C 02 00 01 90 00 AA(BB和AA是協議的包頭和包尾,4C只是占了一個數據位,01和02分別代表著步進電機的正反轉,01代表正轉,02代表反轉,中間的四組00 01 90 00是輸入的十六進制位移量。先選擇電機正反轉,輸入十六進制位移量,點擊發送,就可以發送數據,讓步進電機轉動。發送數據后,把在PC上顯示所發送的數據與CH340返還發回來的數據進行對比,通過對比數據的一致性,來保證MSP430接收數據的正確性。 圖6 串口發送、接收數據圖 3.3 軟件設計 電機控制驅動模塊,端口P2.3為PWM波的輸出端口,連接電機驅動模塊的PUL端口控制電機的轉速;端口P2.4為連接驅動模塊的DIR端口,控制電機的旋轉方向。 編程時,為使步進電機在轉換方向時能平滑過渡,不產生錯步,在每一步中都設置標志位。這樣,每當步進電機換向時,就以上一步作為起點來反向運動,避免了在電機轉換方向時產生錯步[11]。 1)主程序流程如圖7所示,控制芯片MSP430通過其I/O口P1.2串口取得由PC機傳給串口通信模塊CH340需要步進電機動作所執行的位移量,先判斷需要正轉還是反轉,然后再調用子函數給驅動模塊指令,控制電機運行,再由MSP430通過P1.1串口返回數據給串口通信模塊CH340,并在PC機屏幕上顯式。 圖7 主程序流程圖 2)脈沖輸出流程圖如圖8所示,首先由控制芯片MSP430的I/O口P2.4輸出為0(0即低電平,要求電機正轉向,或者為1 (1為高電平要求電機正轉),其與M7128電機驅動器的DIR+端口相連,控制電機旋轉方向,同時由MSP430的I/O口P2.3向PUL+端口發送PWM (Pulse Width Modulation脈沖寬度調制)波脈沖信號,控制電機旋轉位移量。 實現程序部分節選如下: for(i=0;i { LASER_IO_OUT &= ~LASER_IO; delay_us(50); LASER_IO_OUT |= LASER_IO; delay_us(50); } 圖8 脈沖輸出流程圖 3)串口發送與接收數據流程圖如圖9所示,實現MSP430與PC的串口通信模塊CH340實現協議通信。 圖9 串口發送接收數據流程圖 串口發送數據子程序: voidUART_sent(void) { unsigned char j; for (j=0;j<8;j++) //發送當前IP的數據,即一次發射8個字節, { UART_sent_char(state_parameter[j]); } } #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { unsigned char i; 串口接收數據中斷子程序: global_RX_buf[RX_count] = UCA0RXBUF; RX_count++; if((RX_count>=8)&&(UCA0RXBUF==0XAA) ) {for(i=0;i<8;i++) { state_parameter[i]=global_RX_buf[i]; } RX_count=0; RX_sign =1; } 3.4 系統驗證 設物體移動4 mm,即轉1圈,需要25600個脈沖,轉換成十六進制6400H。 又設物體移動16 mm,需要4×25600=102400個脈沖 ,再轉換成十六進制19000H。 通過實驗可知,使用開環控制算法,控制精度在 0.1 mm左右,即0.01 cm,系統運行穩定,基本滿足直線導軌精確定位的要求,數據如表1所示。 表1 精確定位控制算法實驗結果 以MSP430G2553為核心控制芯片,實現了整個直線運動導軌精確定位的設計。試驗結果表明,測量誤差在允許范圍內,本系統能做到直線運動導軌上的步進電機帶動螺紋絲桿轉動,且其能夠同時承受上下左右方向的負荷,并讓滾動絲杠上的物體來回移動,同時在電腦上顯示位移值,精確到0.01 cm。設計的直線導軌定位裝置具有較高的可靠性和準確性,低成本,穩定性好,在數控技術應用方面具有實際意義。 [1] 姜洪奎,趙佳佳,宋現春,等. 滾動直線導軌副運動精度測控系統設計[J].制造業自動化,2015(5):15-17. [2] 金 亮. 高剛度滾動直線導軌設計及精度分析[J].山東工業技術,2015,10:207. [3] Hwajeong Seo, Kyung-Ah Shim, Howon Kim. Performance enhancement of Tiny ECC based on multiplication optimizations[J]. Security Comm. Networks,2012,62:. [4] Chang Kangming, Liu Shinhong, Wu Xuanhan. A wireless sEMG recording system and its application to muscle fatigue detection.[J]. Sensors,2012,121:. [5] 郭林峰. 最輕的直線導軌易格斯碳纖維軌道[J]. 農業機械,2015,19:113. [6] 楊 帆. 液體靜壓直線導軌專用磨合機研制方法[J]. 機械設計與制造,2014(1):97-99. [7] 孫守林,白晨光,董惠敏.滾動直線導軌結構特征與靜態特性分析[J]. 組合機床與自動化加工技術,2014(2):64-68. [8] 孫 偉,魯 明,汪 博,等. 直線滾動導軌動力學特性分析方法研究[J]. 制造技術與機床,2011(3):48-53. [9] 李玲娟. 多細分二相混合式步進電機驅動器的研制[D].西安:西北工業大學,2007. [10] 黃 同,邵思飛.基于CH340T的STC89C52RC編程器設計[J].電子測試,2013,12:16-17. [11] 衡 豪,王禹林,馮虎田. 滾動直線導軌副靜剛度試驗裝置設計及試驗方案研究[J].組合機床2自動化加工技術,2014(2):106-109. Design and Realization of Linear Guide Rail Positioning Device Based on MSP430 Zhang Xiaoyan, Lu Zhaoxin, Liu Xuejun, Zhang Kai, Yang Siyuan (College of Information Engineering,Beijing Institute of Petrochemical Technology (BIPT),Beijing 102617, China) Linear guide rail is an important component of the numerical control technology which is very important to the degree of accuracy. With the core of MSP430 single chip microcomputer, a precise positioning device for linear guide rail is designed. The device adopts two phase four wire ST57 type step motor and 60CM screw thread rod to form a linear guide rail group which use M7128 driver to drive the stepper motor, using the program of PWM positioning algorithm to precisely control motor speed.MSP430 IO port control stepper motor positive inversion,making the stepper motor driven screw thread rod rotation, so that the object on the rolling screw to move back and forth, and the computer shows the value of the current displacement. Experiments show that the positioning accuracy is 0.01 cm, which has high reliability and accuracy, low cost and good stability. linear guide; thread screw rod; stepper motor; MSP430 2016-12-20; 2017-02-27。 2015年北京市大學生科研訓練計劃深化項(16032082003/005);2015年北京高校高水平人才交叉培養畢業(16032021003/029);2017年北京市大學生URT項目(2017J00017)。 張曉燕(1972-),女,山東萊蕪人,碩士,講師,主要從事電子系統設計、EDA技術應用、單片機開發等方向的研究。 劉學君(1977-),男,河北唐山人,工學博士,副教授,主要從事光通信、單片機開發等方向的研究。 1671-4598(2017)07-0186-04 10.16526/j.cnki.11-4762/tp.2017.07.046 TP211 A





4 結論