技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 一種直接采用計(jì)算機(jī)串行口控制步進(jìn)電機(jī)的新方法

一種直接采用計(jì)算機(jī)串行口控制步進(jìn)電機(jī)的新方法

時(shí)間:2008-09-17 16:48:00來源:dujing

導(dǎo)語:?介紹了一種計(jì)算機(jī)串行口經(jīng)二次開發(fā),用作步進(jìn)電機(jī)控制器的新方法。計(jì)算機(jī)通過向串行口發(fā)送數(shù)據(jù)產(chǎn)生控制脈沖,實(shí)現(xiàn)對步進(jìn)電機(jī)的控制。
摘要:介紹了一種計(jì)算機(jī)串行口經(jīng)二次開發(fā),用作步進(jìn)電機(jī)控制器的新方法。計(jì)算機(jī)通過向串行口發(fā)送數(shù)據(jù)產(chǎn)生控制脈沖,實(shí)現(xiàn)對步進(jìn)電機(jī)的控制。 [font=宋體]關(guān)鍵詞:[/font]串行口 二次開發(fā) 控制脈沖 步進(jìn)電機(jī)控制器 步進(jìn)電機(jī)在數(shù)控機(jī)床、醫(yī)療器械、儀器儀表等自動或半自動設(shè)備中得到了廣泛應(yīng)用。用計(jì)算機(jī)控制步進(jìn)電機(jī)的通常作法是采用步進(jìn)控制卡,系統(tǒng)構(gòu)成如圖1所示[1][2]。其中Pulse、Dir分別為控制電機(jī)的轉(zhuǎn)換步數(shù)和旋轉(zhuǎn)方向的信號;CWL(Clock Wise Limit)、CCWL(Counter Clock Wise Limit)分別為電機(jī)順、逆時(shí)針旋轉(zhuǎn)的限位信號;ORG為定位信號。
[img=300,200]http://www.mcu99.com/Article/UploadFile/200612/20061203095849156.gif[/img]
這種方法不僅成本較高,而且不便于操作。在計(jì)算機(jī)擴(kuò)展槽上安裝控制卡,必需打開機(jī)箱才能操作,而且在小型平板電腦和嵌入式電腦中根本沒有安裝控制卡的空間和擴(kuò)展槽。將計(jì)算機(jī)串行口二次開發(fā),用于控制步進(jìn)電機(jī),代替控制卡的作用,具有成本低、操作簡單、兼容性好等優(yōu)點(diǎn)。 1 RS232串行口及編程 計(jì)算機(jī)串行接口采用RS232標(biāo)準(zhǔn):規(guī)定邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,常用的信號有8個(gè)(接口為DB9M插座時(shí),引腳號如表1所示),其中RXD、TXD為收、發(fā)數(shù)據(jù),可與RS232串行口設(shè)備直接進(jìn)行通訊,RTS、DTR、CD、DSR、CTS、BELL為控制與檢測MODEM的信號,在通訊過程中起聯(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 RS232接口各引腳定義 [table=98%][tr][td=1,1,33%]引腳號[/td][td=1,1,33%]
作 用
[/td][td=1,1,34%]方 向[/td][/tr][tr][td=1,1,33%]1 2 3 4 5 6 7 8 9[/td][td=1,1,33%]CD 數(shù)據(jù)載波檢測 RXD 接收數(shù)據(jù) TXD 發(fā)送數(shù)據(jù) DTR 數(shù)據(jù)終端準(zhǔn)備就緒 GND 信號地 DSR 數(shù)據(jù)設(shè)備準(zhǔn)備就緒 RTS 請求發(fā)送 CTS 清除發(fā)送 RI 振鈴指示[/td][td=1,1,34%]輸入 輸入 輸出 輸出 輸入 輸出 輸入 輸入[/td][/tr][/table] 1.1 硬件編程法 直接使用端口的輸入、輸出(I/O)函數(shù)對串行口的控制電路進(jìn)行編程。適用于DOS及Windows平臺(Windows Me以前的各版本),但在基于NT技術(shù)構(gòu)建的操作系統(tǒng)(Windows NT、Windows 2000、Windows XP等)中因不允許用戶程序直接操作硬件而不適用。常用的端口輸入、輸出函數(shù)(指令)有:匯編語言的IN、OUT指令及軟中斷調(diào)用,C語言的inport()、outport()、inportb()、outportb(),C++的_inp()、_outp()等。
[img=351,307]http://www.mcu99.com/Article/UploadFile/200612/20061203095849698.gif[/img]
計(jì)算機(jī)串行口采用Intel 8250異步串行通訊組件構(gòu)成,COM1、COM2、COM3、COM4的基地址分別為16#3F8(16進(jìn)制數(shù)3F8,表示法下同)、16#2F8、16#3E8、16E2E8,波特率因子(DR)計(jì)算方法為:DR=1.8432×1000000/16B,8250編程請見參考文獻(xiàn)[3]。 1.2 文件操作法[4] 文件操作法是將串行口作為系統(tǒng)的一個(gè)文件來處理,通過對這個(gè)文件的讀、寫操作引發(fā)串口對數(shù)據(jù)進(jìn)行收、發(fā)動作。這種方法在DOS、Windows、Windows NT、Windows 2000及Windows XP等平臺下都能正常工作。例如在BASIC語言中可用語句:OPEN “COM1,1200,n,8,1,rs,cs,ds,cd”AS #1將串行口COM1作為文件#1進(jìn)行讀寫操作。在VC++中,可用CreateFile()、BuildCommDCB()、Read()、Write()、EscapeCOMMFunction()等函數(shù)將串行口作為文件進(jìn)行操作。 1.3 串口控件法 用VB及VC++編程時(shí),可用控件對串行口進(jìn)行編程。這種方法通用性好,在Windows、Windows NT、Windows2000及Windows XP等平臺下都能正常工作。在VB中,使用MSCOMM控件;在VC++下使用Microsoft Communication Control這一ActiveX類控件。串口控制使用方法請參考MSDN。 2 串行口步進(jìn)電機(jī)控制器工作原理 2.1 串行口發(fā)送數(shù)據(jù)過程研究
[img=294,259]http://www.mcu99.com/Article/UploadFile/200612/20061203095849892.gif[/img]
在串行口發(fā)送數(shù)據(jù)的過程中,串行口先發(fā)送起始位(邏輯0)進(jìn)行同步,接著按規(guī)定的波特率(B)從低位到高位依次發(fā)送通訊數(shù)據(jù)的各二進(jìn)制位,最后發(fā)送停止位(邏輯1)。表示每個(gè)二進(jìn)制位的邏輯電平在TXD端的保持時(shí)間為1/B秒。如果按8位數(shù)據(jù)位、1位停止位、無奇偶校驗(yàn)方式發(fā)送數(shù)據(jù),所發(fā)送數(shù)據(jù)的二進(jìn)制位是0、1交替的。例如:數(shù)據(jù)取01010101(即16進(jìn)制的16#55),其發(fā)送過程如圖2中5所示,每發(fā)送一個(gè)字節(jié),在TXD端發(fā)出5個(gè)脈沖,周期T=2/B,即頻率f=B/2。改變發(fā)送數(shù)據(jù)的各二進(jìn)制位,便可在TXD端得到不同的波形。圖2示出欲產(chǎn)生1~5個(gè)脈沖時(shí)應(yīng)發(fā)出的數(shù)據(jù)及對應(yīng)的波形。 2.2 串行口步進(jìn)電機(jī)控制器工作原理 通過分析串行口發(fā)送數(shù)據(jù)的過程可知,從TXD端所發(fā)出的脈沖完全滿足控制步進(jìn)電機(jī)的需要: ①改變發(fā)送的字節(jié)數(shù)及所發(fā)送的字節(jié)內(nèi)容,可在TXD端產(chǎn)生任意數(shù)量的脈沖; ②改變波特率可動態(tài)改變發(fā)送脈沖的頻率。 所以,可用TXD作為控制步進(jìn)電機(jī)的脈沖信號(Pulse)。 串行口的DTR、RTS、CTS、DSR、CD、RI雖然在串行通訊接口中被定義為不同功能的握手信號,但通過對8520的分析可知,它們均可作為一般的I/O量使用,而且不論采用哪種編程方法,都能很方便地對這些信號進(jìn)行讀寫操作。若以DTR(或RTS)作為方向控制信號(Dir),同時(shí)分別以CD、DSR、CTS、RI作為狀態(tài)檢測信號(CWL、CCWL、ORG等),則僅用一個(gè)串行口就已提供了步進(jìn)電機(jī)控制器需要的所有信號。正是基于此原理,我們開發(fā)了串行口步進(jìn)電機(jī)控制器,并成功應(yīng)用在板材多點(diǎn)成形設(shè)備的控制系統(tǒng)中。由于串行口已直接提供了控制步進(jìn)電電機(jī)所需的所有信號,只需將各信號由RS232電平變成TTL電平即可。常用的電平轉(zhuǎn)換器件有DS1488、DS1489、MAX232等[5]。用計(jì)算機(jī)串行口開發(fā)的步進(jìn)電機(jī)控制器工作原理如圖3所示。
[img=392,144]http://www.mcu99.com/Article/UploadFile/200612/20061203095849573.gif[/img]
3 軟件設(shè)計(jì)及計(jì)算 為避免電機(jī)失步和提高電機(jī)運(yùn)行速度,將步進(jìn)電機(jī)運(yùn)行過程為分三個(gè)階段:低速起動并加速、高速運(yùn)行、減速并停止;相應(yīng)地控制脈沖也分為:升頻、高頻、降頻三段[6],如圖4所示。 在用串行口發(fā)送數(shù)據(jù)產(chǎn)生控制脈沖時(shí),雖然通過改變所發(fā)字節(jié)內(nèi)容的辦法能產(chǎn)生1~5中間任意個(gè)數(shù)的脈沖,但若發(fā)送一個(gè)字節(jié)所字節(jié)的脈沖少于5個(gè),后面接著發(fā)送數(shù)據(jù)產(chǎn)生的脈沖時(shí),兩個(gè)字節(jié)銜接時(shí)所產(chǎn)生的脈沖頻率和占空比均會產(chǎn)生波動。為使電機(jī)運(yùn)行的三個(gè)階段能平滑過濾,需要對每個(gè)階段的脈沖數(shù)量進(jìn)行調(diào)整,使Ⅰ、Ⅱ兩個(gè)階段的步數(shù)均為5的整數(shù)倍(分別為n1×5、n2×5);將非5整數(shù)倍的步數(shù)安排在減速停車的Ⅲ階段,發(fā)出脈沖數(shù)為n3×5+[font=Arial]Δp[/font],其中[font=Arial]Δp=(1[/font]~4)。這可通過改變Ⅲ階段發(fā)送的最后一個(gè)字節(jié)內(nèi)容實(shí)現(xiàn)任意數(shù)量的脈沖輸出。產(chǎn)生1~4個(gè)脈沖應(yīng)發(fā)送的數(shù)據(jù)分別為16#FF、16#FB、16#F5、16#D5。
[img=365,733]http://www.mcu99.com/Article/UploadFile/200612/20061203095850143.gif[/img]
由圖4所示的電機(jī)運(yùn)行過程可知,在電機(jī)運(yùn)行過程中,控制脈沖的頻率f應(yīng)隨時(shí)變化以滿足電機(jī)低速起停及高速運(yùn)行的需要。脈沖頻率由發(fā)送數(shù)據(jù)的波特率(B)決定,每發(fā)出一個(gè)脈沖需用兩個(gè)二進(jìn)制位1和0來構(gòu)成其高、低電平,所以f=B/2,通過調(diào)整發(fā)送數(shù)據(jù)的波特率可改變所發(fā)出的控制脈沖的頻率。按常規(guī)則波特率系列發(fā)送數(shù)據(jù)時(shí)所產(chǎn)生的控制脈沖頻率變化較大,不能滿足電機(jī)正常起停及調(diào)速的要求,為此計(jì)算機(jī)需按非標(biāo)準(zhǔn)的濾特率發(fā)送數(shù)據(jù)以產(chǎn)生任意頻率的控制脈沖。一般在電機(jī)起動及停止階段(Ⅰ、Ⅲ)每發(fā)送一個(gè)字節(jié)調(diào)整一次波特率,以使電機(jī)起停得盡量平滑。 Ⅰ、Ⅲ階段頻率的調(diào)整量[font=Arial]Δf1[/font]、[font=Arial]Δf2[/font]分別為: [font=Arial]Δf1=(FH-FL)/n1 (1)[/font] [font=Arial]Δf2=(FH-FL)/n3+1 (2)[/font] 相應(yīng)的波特率的調(diào)整量[font=Arial]ΔB1[/font]、[font=Arial]ΔB2[/font]分別為: [font=Arial]ΔB1=[/font](BH-BL)/n1=(2FH-2FL)/n1 (3) [font=Arial]ΔB2=[/font](BH-BL)/(n3+1)=(2FH-2FL)/(n3+1) (4) 發(fā)送第i個(gè)字節(jié)的波特率Bi為: [img=369,165]http://www.mcu99.com/Article/UploadFile/200612/20061203095850376.gif[/img] 用串行口直接控制步進(jìn)電機(jī)的控制軟件流程圖如圖5所示。 4 高級控制功能 對步進(jìn)電機(jī)的高級控制,主要是指自動找零及多機(jī)聯(lián)動差補(bǔ)。 找零功能是指控制步進(jìn)電機(jī)驅(qū)動運(yùn)行機(jī)構(gòu),完成定位的過程。在找零時(shí),電機(jī)一般以低速運(yùn)行,當(dāng)測到ORG信號進(jìn)電機(jī)停止。由于運(yùn)行速度低,為簡化程序設(shè)計(jì),每發(fā)送一個(gè)字節(jié),在TXD端可以只輸出一個(gè)脈沖,測到ORG信號則停止發(fā)送。為保證輸出脈沖的占空比為50%,發(fā)送字節(jié)定為16#F0。找零程序的設(shè)計(jì)可參照圖5所示。 差補(bǔ)是指控制兩臺或兩臺以上電機(jī)按規(guī)定的速比運(yùn)行,進(jìn)而控制執(zhí)行機(jī)構(gòu)沿規(guī)定的軌跡運(yùn)行。由于一般計(jì)算機(jī)只有兩個(gè)串行口,這種方法只適用于二維差補(bǔ)控制。通常兩個(gè)串行口用相同的波特率進(jìn)行發(fā)送,通過調(diào)整發(fā)送的字節(jié)數(shù)及發(fā)送每個(gè)字節(jié)所產(chǎn)生的脈沖個(gè)數(shù)的不同來調(diào)整兩個(gè)電機(jī)的運(yùn)行速度和位置。 實(shí)際運(yùn)行證明,用串行口設(shè)備的步進(jìn)電機(jī)控制器具有使用方便、性能穩(wěn)定、成本低、可移植性好、不需安裝硬件設(shè)備驅(qū)動程序等優(yōu)點(diǎn)。 直接采用計(jì)算機(jī)串行口設(shè)計(jì)的步進(jìn)電機(jī)控制器適用于對全數(shù)字式伺服電機(jī)進(jìn)行控制。 本文對計(jì)算機(jī)串行口、并行口資源的二次開發(fā)應(yīng)用起到了一定的借鑒應(yīng)用。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于MSP430F149單片機(jī)實(shí)現(xiàn)的...

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

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

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

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

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

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

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