技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 用串行口控制步進(jìn)電機(jī)兩維運(yùn)動(dòng)系統(tǒng)

用串行口控制步進(jìn)電機(jī)兩維運(yùn)動(dòng)系統(tǒng)

時(shí)間:2009-05-13 10:20:26來源:ronggang

導(dǎo)語:?串行口|步進(jìn)電機(jī)|運(yùn)動(dòng)控制

摘 要:本文介紹了一種通過微機(jī)的串行口控制兩維坐標(biāo)定位系統(tǒng)的新方法。該方法不需要MCU,可以方便的通過改變串口的波特率來改變步進(jìn)電機(jī)的運(yùn)行速度,可以通過RS232串口中控制Modem狀態(tài)的輸入、輸出信號(hào)來控制運(yùn)動(dòng)的方向和讀入不同的位置信息。該方法使用邏輯電路實(shí)現(xiàn)控制功能,比用MCU的方法不僅簡(jiǎn)單,省卻了編程的麻煩,而且提高了可靠性。

關(guān)鍵詞:串行口;步進(jìn)電機(jī);運(yùn)動(dòng)控制

1. 引言   步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)可以作為一種控制用的特種電機(jī),利用其沒有積累誤差(精度為100%)的特點(diǎn),廣泛應(yīng)用于各種開環(huán)控制。步進(jìn)電機(jī)在數(shù)控機(jī)床、醫(yī)療器械、儀器儀表等自動(dòng)或半自動(dòng)設(shè)備中得到了廣泛應(yīng)用。用計(jì)算機(jī)控制步進(jìn)電機(jī)的通常作法是采用步進(jìn)控制卡, 這種方法不僅成本較高,而且不便于操作。在計(jì)算機(jī)擴(kuò)展槽上安裝控制卡,必需打開機(jī)箱才能操作,而且在小型平板電腦和嵌入式電腦中根本沒有安裝控制卡的空間和擴(kuò)展槽。進(jìn)年來出現(xiàn)了將計(jì)算機(jī)串行口二次開發(fā),用于控制步進(jìn)電機(jī)的技術(shù),代替控制卡的作用,具有成本低、操作簡(jiǎn)單、兼容性好等優(yōu)點(diǎn)。本文介紹了一種通過微機(jī)的串行口控制兩維坐標(biāo)定位系統(tǒng)的新方法。

  串行口是微機(jī)系統(tǒng)的標(biāo)準(zhǔn)配置,在儀器儀表控制系統(tǒng)中得到廣泛的應(yīng)用。計(jì)算機(jī)串行接口采用RS232標(biāo)準(zhǔn)[1]:規(guī)定邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,常用的信號(hào)有8個(gè)(接口為DB9M和DB25M插座時(shí),引腳號(hào)如表1所示),其中RXD、TXD為收、發(fā)數(shù)據(jù),可與RS232串行口設(shè)備直接進(jìn)行通訊,RTS、DTR、CD、DSR、CTS、BELL為控制與檢測(cè)MODEM的信號(hào),在通訊過程中起聯(lián)絡(luò)與控制作用。數(shù)據(jù)格式有5、6、7、8位幾種,1位起始位(邏輯0),1、1.5、或2位停止位 (邏輯1),可以選擇奇校驗(yàn)、偶校驗(yàn)和無校驗(yàn),常用波特率為2400、4800、7200、9600bps等。

  表1 標(biāo)準(zhǔn)9針和25針串口的管腳定義

  用串行口控制步進(jìn)電機(jī)驅(qū)動(dòng)的運(yùn)動(dòng)系統(tǒng)的一般方法是通過單片機(jī)或其它嵌入式控制系統(tǒng),由計(jì)算機(jī)向單片機(jī)系統(tǒng)發(fā)送控制信息,單片機(jī)系統(tǒng)再直接控制運(yùn)動(dòng)系統(tǒng),從而計(jì)算機(jī)可以間接的控制系統(tǒng)的行為。這種方法有一些缺點(diǎn)。比如控制缺少靈活性,往往只能按照事先定好的模式運(yùn)動(dòng),不能通過控制軟件任意改變。單片機(jī)要同時(shí)接受計(jì)算機(jī)命令和發(fā)送狀態(tài)給計(jì)算機(jī),又要控制運(yùn)動(dòng)系統(tǒng),多任務(wù)并行,給程序編制帶來一定麻煩。單片機(jī)程序容易跑飛,給系統(tǒng)可靠性帶來很大威脅,甚至有時(shí)需要人工復(fù)位操作。為了克服這些缺點(diǎn),在實(shí)際應(yīng)用中,我們?cè)O(shè)計(jì)了一個(gè)串行口直接控制運(yùn)動(dòng)系統(tǒng)的方法。該方法不需要MCU,可以方便的通過改變串口的波特率來改變步進(jìn)電機(jī)的運(yùn)行速度,可以通過RS232串口中控制Modem狀態(tài)的輸入、輸出信號(hào)來控制運(yùn)動(dòng)的方向和讀入不同的位置信息。由于是直接控制,沒有中間的處理器系統(tǒng),克服了上面的缺點(diǎn),降低了成本。下面介紹這種控制系統(tǒng)實(shí)現(xiàn)的方法。

2. 二維運(yùn)動(dòng)步進(jìn)電機(jī)驅(qū)動(dòng)的控制方法

  步進(jìn)電機(jī)驅(qū)動(dòng)的二維運(yùn)動(dòng)定位系統(tǒng)中,每一個(gè)維度都是由步進(jìn)電機(jī)驅(qū)動(dòng)絲杠轉(zhuǎn)動(dòng),絲杠再把運(yùn)動(dòng)轉(zhuǎn)化為直線運(yùn)動(dòng)。如圖1所示。對(duì)該系統(tǒng)的控制,除了要發(fā)出步進(jìn)電機(jī)的方向控制和步進(jìn)脈沖信號(hào)外,還要讀入絕對(duì)定位用的開關(guān)信號(hào),這樣才能達(dá)到絕對(duì)坐標(biāo)控制的目的。圖中S1是坐標(biāo)零點(diǎn)的限位開關(guān),它輸出高電平時(shí),表示運(yùn)動(dòng)已經(jīng)到了絕對(duì)零點(diǎn)。因?yàn)檫@種機(jī)械或光電開關(guān)的精度有限,所以由S1輸出的零點(diǎn)脈沖精度不高。為了提高零點(diǎn)的位置精度,還設(shè)置了開關(guān)S0,步進(jìn)電機(jī)每旋轉(zhuǎn)一圈,它輸出一個(gè)脈沖。雖然S0輸出的脈沖寬度和S1比并沒有什么改變,但由于絲杠的作用,使S0輸出的脈沖相對(duì)于線性位置的精度大大提高。因此,零點(diǎn)的判斷方法應(yīng)該是:當(dāng)向左運(yùn)動(dòng)時(shí),首先判斷S1是否輸出高電平。如果輸出高電平,表示已經(jīng)基本到達(dá)零點(diǎn),只是精度還要繼續(xù)提高。這時(shí)繼續(xù)驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng),判斷S0是否輸出高電平。如果S0輸出也達(dá)到高電平,才表明真正達(dá)到了零點(diǎn)。開關(guān)S2是坐標(biāo)最大值的限位開關(guān),它輸出高電平表明已經(jīng)達(dá)到了坐標(biāo)的最大值,不能再向右運(yùn)動(dòng)。 [align=center] 圖1 步進(jìn)電機(jī)驅(qū)動(dòng)示意圖[/align]  

 圖1只是畫出了一維運(yùn)動(dòng)的示意圖,另一維的控制完全相同。下面著重討論具體的實(shí)現(xiàn)方法。

3. 步進(jìn)脈沖的產(chǎn)生和速度計(jì)算

  每給步進(jìn)電機(jī)的驅(qū)動(dòng)器一個(gè)脈沖,步進(jìn)電機(jī)就轉(zhuǎn)動(dòng)一步,而方向是由另外一個(gè)電平信號(hào)控制的。對(duì)于某種步進(jìn)電機(jī)來說,每轉(zhuǎn)動(dòng)一周需要的脈沖個(gè)數(shù)是一個(gè)固定的常數(shù)n,因此,每發(fā)送一個(gè)脈沖電機(jī)轉(zhuǎn)動(dòng)的角度也是固定的,稱為步距角s。s和n的關(guān)系是:s=360/n度。比如,一種四相八拍運(yùn)行的步進(jìn)電機(jī)每周需要400個(gè)脈沖,則步距角s=0.9度。

  步進(jìn)脈沖采用巧妙的利用計(jì)算機(jī)串行數(shù)據(jù)的格式經(jīng)過恰當(dāng)?shù)脑O(shè)置產(chǎn)生。計(jì)算機(jī)的串口數(shù)據(jù)幀一般由起始位、數(shù)據(jù)位、校驗(yàn)位、停止位組成,如圖二所示是傳送B10010011的情況,這里起始位設(shè)定為1位,下面是8個(gè)數(shù)據(jù)位,奇偶位設(shè)置為“Mark”,即為1,停止位為1位,是邏輯1。停止位的作用是如果連續(xù)發(fā)送數(shù)據(jù)時(shí),保證一個(gè)數(shù)據(jù)幀的接受完畢和另一個(gè)數(shù)據(jù)幀的起始保持一定的時(shí)間間隔。這樣,我們?cè)O(shè)定的一個(gè)數(shù)據(jù)幀有11位。隨著發(fā)送的數(shù)據(jù)不同,我們可以在這11個(gè)數(shù)據(jù)幀中得到不同個(gè)數(shù)、不同時(shí)間寬度的脈沖。比如,發(fā)送二進(jìn)制數(shù)B11110000,則起始位0后緊接著4位0,后面4位連續(xù)的1,再加上奇偶位和停止位兩個(gè)1,整個(gè)數(shù)據(jù)幀組成由前面5個(gè)連續(xù)的0和后面6個(gè)連續(xù)的1組成的1個(gè)脈沖信號(hào)。如果選擇不同的發(fā)送數(shù)據(jù),還可以得到不同個(gè)數(shù)的脈沖。比如,發(fā)送B10101010可以得到連續(xù)4個(gè)脈沖。這里,為了得到均勻的占空比,總是采用發(fā)送B11110000數(shù)據(jù)的方式每個(gè)數(shù)據(jù)幀產(chǎn)生一個(gè)脈沖。 [align=center] 圖二、傳送二進(jìn)制數(shù)B10010011的示意圖[/align]   串行通訊的波特率B定義為每秒發(fā)送數(shù)據(jù)的位數(shù),一個(gè)數(shù)據(jù)幀11位,則需要的時(shí)間T位11/B,而每個(gè)數(shù)據(jù)幀只產(chǎn)生一個(gè)脈沖,則脈沖頻率v可以確定為v=B/11,如果步進(jìn)電機(jī)每周需要的脈沖個(gè)數(shù)為n,則電機(jī)轉(zhuǎn)速ω=60B/11n轉(zhuǎn)/分。例如,如果B取9600b/s,n取400,則ω=131轉(zhuǎn)/分。

4. 位置信號(hào)和方向信號(hào)的讀入和輸出

  計(jì)算機(jī)的9針標(biāo)準(zhǔn)RS232串行口信號(hào)除了數(shù)據(jù)發(fā)送接受用的TxD/RxD外還有RTS/CTS、DTR/DSR、DCD等信號(hào)。這些信號(hào)原本定義控制Modem用的,我們這里用來讀入位置信號(hào)和輸出方向信號(hào)以及維度選擇。具體的說,我們用DTR輸出維度選擇信號(hào),如為“1”,則表示這時(shí)的所有輸出和輸入都是針對(duì)X方向的運(yùn)動(dòng),如為“0”,則選擇Y方向。信號(hào)RTS用來輸出運(yùn)動(dòng)的方向,即控制步進(jìn)電機(jī)正傳和反轉(zhuǎn)。輸入信號(hào)CTS、DSR、DCD用來輸入限位開關(guān)和零位開關(guān)的信號(hào)。

  另外,還要有RS232電平和TTL電平之間的轉(zhuǎn)換電路。RS232電平是負(fù)邏輯電平,為了實(shí)現(xiàn)RS232電平和5VTTL電平之間的轉(zhuǎn)換,這里我們采用MAX232專用芯片,該芯片核心是一個(gè)“電荷泵”,只需要單5V供電即可。   電路的示意圖如圖三所示,整個(gè)電路的邏輯可以用一片可編程邏輯芯片EPM7064實(shí)現(xiàn)。在實(shí)現(xiàn)上面電路的同時(shí),在可編程邏輯芯片中,我們同時(shí)實(shí)現(xiàn)了步進(jìn)電機(jī)的脈沖分配邏輯和保護(hù)邏輯,在坐標(biāo)達(dá)到最大和最小值后,電機(jī)不再允許向右和向左運(yùn)動(dòng)。

5. 實(shí)際應(yīng)用和編程

  本文提供的方法對(duì)計(jì)算機(jī)控制軟件軟件的編制給予了極大的方便[2]。以MSVB6為例[3],放置串口控件MSCOMM32后可以方便的通過程序設(shè)置DTR、RTS的值來控制運(yùn)動(dòng)的維度和方向,通過讀取控件屬性CTS、DSR、DCD的值來得到運(yùn)動(dòng)的情況,通過設(shè)置不同的發(fā)送波特率來改變步進(jìn)電機(jī)的速度,通過在發(fā)送緩沖區(qū)中放置字符個(gè)數(shù)控制步進(jìn)電機(jī)的運(yùn)動(dòng)步數(shù)。我們也可以在Delphi下方便的編程[4],在其它計(jì)算平臺(tái)上,我們也可以方便的編程,比如,在linux上[5],我們可以通過對(duì)ttyS0設(shè)備編程方便的控制串口設(shè)備。   本文的方法作者已經(jīng)成功地應(yīng)用在金相顯微鏡載物臺(tái)的自動(dòng)控制中。

本文作者創(chuàng)新點(diǎn):

  1. 通過串口的波特率、格式設(shè)置和輸出字符來產(chǎn)生不同頻率和占空比的步進(jìn)電機(jī)驅(qū)動(dòng)脈沖。

  2. 通過標(biāo)準(zhǔn)串口的輸入、輸出控制信號(hào),輸入和輸出兩維運(yùn)動(dòng)系統(tǒng)的控制信號(hào)和位置信號(hào)。

參考文獻(xiàn):

  1. 《微型計(jì)算機(jī)接口技術(shù)及應(yīng)用》,劉樂善等,華中理工大學(xué)出版社,2000.4。

  2. 《Visual C++/Turbo C串口通信編程實(shí)踐》,龔建偉,熊光明,電子工業(yè)出版社,2004.10。

  3. 胡慶云,羅飛路,Visual Basical 6.0中通信控件的應(yīng)用,微計(jì)算機(jī)信息,2001 Vol.17 No.2,40頁。

  4. 張立材,Delphi編程中用MSComm控件實(shí)現(xiàn)串行通訊,微計(jì)算機(jī)信息,2001 Vol.17 No.3,26頁。

  5. 《linux程序設(shè)計(jì)權(quán)威指南》,于明儉等,機(jī)械工業(yè)出版社,2001.4。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:運(yùn)動(dòng)控制系統(tǒng)抗干擾分析

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)