劉鵬孫有峰鄒杰任開春
(1.重慶通信學院 2.65631部隊通信裝備修供基地)
基于ARM+CPLD的步進電機控制系統(tǒng)設計
劉鵬1孫有峰2鄒杰1任開春1
(1.重慶通信學院 2.65631部隊通信裝備修供基地)
介紹了步進電機的控制原理,在分析步進電機和驅(qū)動程序接口的基礎上,給出了一個在嵌入式Linux平臺上編寫步進電機驅(qū)動的實例。本控制系統(tǒng)基于Samsung公司的S3C2410X CPU進行設計,采用Linux2.6內(nèi)核作為它的操作系統(tǒng),給出了Linux2.6內(nèi)核下步進電機驅(qū)動程序的關鍵代碼,并對應用層程序的設計進行了規(guī)劃。
嵌入式系統(tǒng);步進電機;Linux設備驅(qū)動;CPLD
步進電機在控制系統(tǒng)中具有廣泛的應用。它可以把脈沖信號轉(zhuǎn)換成角位移,用作電磁制動輪、電磁差分器或角位移發(fā)生器等[1]。當前,主流的步進電機控制系統(tǒng)多采用單片機進行控制,存在控制系統(tǒng)實時性能差、可重用性差、可定制性差等缺點。
隨著嵌入式技術(shù)的飛速發(fā)展,基于嵌入式系統(tǒng)的工業(yè)控制產(chǎn)品日益增多。同以往的控制器不同,新的控制系統(tǒng)多以32位嵌入式處理器為核心,并且配置嵌入式操作系統(tǒng),從而極大簡化了系統(tǒng)開發(fā)難度,同時大幅度提高了系統(tǒng)的處理能力[2]。在各種嵌入式操作系統(tǒng)中,嵌入式Linux是免費的自由軟件,其構(gòu)建的系統(tǒng)成本較低,而且Linux是單內(nèi)核的操作系統(tǒng),并可按要求進行任意剪裁,因此越來越多的研究人員開始在用Linux平臺來開發(fā)自己的產(chǎn)品。
嵌入式開發(fā)過程中,經(jīng)常需要為特定設備開發(fā)驅(qū)動程序。這些驅(qū)動程序的開發(fā)與Linux設備驅(qū)動開發(fā)相比存在明顯的差異,需要考慮的因素更多,實現(xiàn)過程更為復雜。本文以Samsung公司S3C2410X CPU與大規(guī)??删幊踢壿嬈骷﨏PLD為硬件平臺構(gòu)建步進電機控制系統(tǒng),并在ARM處理器中配以Linux2.6內(nèi)核作為系統(tǒng)軟件平臺,探討基于嵌入式Linux的步進電動機驅(qū)動程序開發(fā)。
2.1 感應子式步進電機[3]
步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角。由于這一線性關系,步進電機具有周期性的誤差而無累積誤差等特點,使得在速度、位置等控制領域運用步進電機進行控制變得非常簡單。雖然步進電機已被廣泛地應用,但步進電機并不能像普通的直流電機、交流電機一樣在常規(guī)下使用,步進電機控制系統(tǒng)通常由雙環(huán)形脈沖信號電路、功率驅(qū)動電路等組成。使用嵌入式系統(tǒng)能夠很好的實現(xiàn)對步進電機的控制。常用的步進電機分為反應式步進電機和感應子式步進電機,文中所述系統(tǒng)采用的是感應子式步進電機。
2.2 步進電機驅(qū)動原理
步進電機的運行需要電子裝置進行驅(qū)動,這種裝置就是步進電機驅(qū)動器。步進電機驅(qū)動器是把控制系統(tǒng)發(fā)出的脈沖信號加以放大以驅(qū)動步進電機。步進電機的轉(zhuǎn)速與脈沖信號的頻率成正比,控制步進脈沖信號的頻率,可以對電機精確調(diào)速;控制步進脈沖的個數(shù),可以對電機精確定位。
3.1 系統(tǒng)硬件方案設計
系統(tǒng)硬件平臺采用Samsung公司的S3C2410X CPU與大規(guī)??删幊踢壿嬈骷﨏PLD進行構(gòu)建,其中S3C2410X CPU作為系統(tǒng)中央處理器,負責系統(tǒng)任務調(diào)度、系統(tǒng)資源管理、外設接口管理等工作;CPLD作為S3C2410X CPU的外設,負責接收S3C2410XCPU控制命令和控制數(shù)據(jù),對后級步進電機驅(qū)動電路進行控制,完成具體的控制任務。系統(tǒng)中配置USB2.0接口、RS-232串口、10M/100M以太網(wǎng)口等接口電路,以方便步進電機控制系統(tǒng)與上位機及其他控制系統(tǒng)進行通信與級聯(lián)。控制系統(tǒng)硬件平臺結(jié)構(gòu)如圖1所示。
3.2 步進電機控制電路設計
步進電機驅(qū)動電路如圖2所示,其中ULN2803AP[4]芯片的作用是放大輸入電流,M1~M4的輸入電流大約10mA,從O1~O8輸出的電流放大到約100mA。M1~M4直接連在CPLD的I/O引腳上。系統(tǒng)中使用的是四相步進電機,在圖中標識為DDJ。
圖1 步進電機控制系統(tǒng)結(jié)構(gòu)圖
圖2 步進電機驅(qū)動電路
4.1 CPLD控制邏輯
在步進電機控制系統(tǒng)中由CPLD 來控制步進電機,所以步進電機的驅(qū)動程序需要和CPLD的接口程序相配合。ULN2803AP 的M1~M4 是直接連在CPLD 上,由CPLD 控制。控制邏輯如下:CPLD判斷到NGCS2 選中,并且地址線MA5~MA0為000110b 時,讀取數(shù)據(jù)線的低四位D3~D0,并作為M4~M1 的輸出。
4.2 步進電機驅(qū)動程序
驅(qū)動程序相主要工作是和CPLD 邏輯相配合,通過向D3~D0寫不同的數(shù)據(jù)來控制步進電機工作,關鍵代碼如下:
(1) 驅(qū)動程序的初始化模塊electromotor_init
electromotor_init 函數(shù)主要工作:映射GCS2 地址和CPLD 邏輯控制的入口地址;申請注冊設備。
(2) 驅(qū)動程序?qū)崿F(xiàn)了file_operations 的回調(diào)函數(shù):
electromotor_write 首先通過get_user 函數(shù)得到用戶傳送過來的數(shù)據(jù),接著(*(volatile unsigned char *) ELECTROMOTOR) = key;語句寫地址M5~M0 位000110b,也就是讓CPLD 進入控制邏輯。
應用程序打開步進電機驅(qū)動程序設備文件之后,通過對設備文件寫入不同的指令數(shù)據(jù)控制步進電機的運行。應用層程序的流程如圖3所示。
圖3 應用程序流程圖
圖3中cmdnumi(i=0~7)為控制步進電機運行的指令數(shù)據(jù)。當步進電機正轉(zhuǎn)時,指令數(shù)據(jù)的變化順序為cmdnum0~cmdnum7;當步進電機反轉(zhuǎn)時,指令數(shù)據(jù)的變化順序為cmdnum7~cmdnum0。cmdnumi(i=0~7)的值如表1所示[5]。t為延時時間,用于決定步進電機的轉(zhuǎn)速。
表1 指令數(shù)據(jù)表
本文綜合應用ARM處理器、復雜可編程邏輯器件CPLD、嵌入式Linux開發(fā)等相關技術(shù)設計了一款步進電機控制系統(tǒng)。該控制器與傳統(tǒng)的步進電機控制器相比,具有成本低、體積小、功耗低、功能接口豐富、控制精度高、運行穩(wěn)定等優(yōu)勢。文中設計的步進電機控制系統(tǒng)已在某型號的雷達跟蹤定位系統(tǒng)中得到應用,并取得較高的控制精度。該款步進電機控制系統(tǒng)的設計流程與設計思路為讀者開發(fā)基于嵌入式Linux解決方案的工控產(chǎn)品提供了一個良好的模板,具有廣闊的應用前景。
[1] 周明安,朱光忠,宋華曉等.步進電機驅(qū)動技術(shù)發(fā)展及現(xiàn)狀[J].機電工程技術(shù),2005,34(2):l6-17.
[2] 陳興文,劉燕.基于單片機控制步進電機細分驅(qū)動的實現(xiàn)[J].機械設計與制造,2005,178(12):91-92.
[3] 楊貴杰,李勇,陸永平,孫力.永磁感應子式無刷直流電動機的模型及控制[J].中國電機工程學報,2003,05.
[4] 王慶東,劉杰輝等.單片機在步進電機驅(qū)動控制中的應用[J].煤礦機械,2006,27(6):1001-1003.
[5] LIN Wei jie, ZHENG Zhuo. Simulation and Experiment of SensorlessDirect Torque Control of Hybrid Stepp ingMotor Based on DSP[C].Luoyang(China) :Proceedings of the 2006 IEEE, International Conference on Mechatronics and Automation, 2006:2133-2138.
劉鵬,男,1983年生,碩士學歷,助教,主要研究領域為嵌入式工業(yè)控制。
Design of Control System for Stepping Motor Based on ARM and CPLD
Liu Peng1Sun Youfeng2Zou Jie1Ren Kaichun1
(1.ChongQing Communication Institute 2.Communications equipment maintenance base of 65631 troops)
This paper introduces the control principle of Stepping Motor, On the basis of analysis for interface between Stepping Motor and Linux device driver, this paper presents a device driver instance base on Embedded Linux for Stepping Motor. This control system is developed based on S3C2410X CPU of Samsung Corporation, and Linux2.6 as its operation system. At Last, this paper gives the key code and application program of device driver for Stepping Motor based on Linux2.6.
Embedded System; Stepping Motor; Linux Device Driver; Cpld