基于LabVIEW的步進(jìn)電機(jī)控制
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為了實(shí)現(xiàn)PC機(jī)對(duì)步進(jìn)電機(jī)的自動(dòng)調(diào)節(jié),設(shè)計(jì)了基于虛擬儀器技術(shù)的步進(jìn)電機(jī)控制方案。系統(tǒng)采用L298N芯片進(jìn)行驅(qū)動(dòng),以LabVIEW作為開(kāi)發(fā)平臺(tái),并通過(guò)串口實(shí)現(xiàn)數(shù)據(jù)通信。結(jié)果顯示,該系統(tǒng)能夠很方便地實(shí)現(xiàn)步進(jìn)電機(jī)的轉(zhuǎn)速轉(zhuǎn)向控制,而且利用虛擬儀器開(kāi)發(fā)平臺(tái)LabVIEW編寫(xiě)上位機(jī)程序,具有編程簡(jiǎn)單,控制界面友好,程序可移植性強(qiáng)的特點(diǎn)。
關(guān)鍵詞:步進(jìn)電機(jī);串口;LabVIEW;VISA
步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成角位移或線位移的機(jī)電元件。它在在工業(yè)自動(dòng)化控制、數(shù)控機(jī)床、機(jī)器人等領(lǐng)域有著廣泛的應(yīng)用。在遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)中,經(jīng)常有需要利用步進(jìn)電機(jī)對(duì)一些旋鈕、位置等進(jìn)行自動(dòng)調(diào)節(jié)。本文設(shè)計(jì)了基于虛擬儀器技術(shù)的步進(jìn)電機(jī)控制方案。該方案采用虛擬儀器控制步進(jìn)電機(jī),編程簡(jiǎn)單,界面友好,易于更改程序功能,控制靈活性得到了提高。
1 步進(jìn)電機(jī)工作原理
步進(jìn)電機(jī)按其力矩產(chǎn)生原理可以分為反應(yīng)式、永磁式和混合式幾種。本文采用的是反應(yīng)式二相四線步進(jìn)電機(jī),定子有兩個(gè)線圈繞組,設(shè)其中一個(gè)線圈繞組為A相,另一個(gè)線圈繞組為B相。當(dāng)給A相繞組通電時(shí),該繞組即產(chǎn)生磁場(chǎng),轉(zhuǎn)子齒與A相繞組各齒對(duì)齊;當(dāng)給B相繞組通電時(shí),轉(zhuǎn)子齒將與B相繞組各齒對(duì)齊,這樣,轉(zhuǎn)子就旋轉(zhuǎn)了一個(gè)角度。依次給A相、B相繞組通電,就可以實(shí)現(xiàn)步進(jìn)電機(jī)的旋轉(zhuǎn),改變通電的順序(即先給B相繞組通電,再給A相繞組通電)就可以改變電機(jī)旋轉(zhuǎn)的方向。另外,由于步進(jìn)電機(jī)是由脈沖信號(hào)進(jìn)行控制的,給電機(jī)發(fā)一個(gè)控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個(gè)脈沖,它會(huì)再轉(zhuǎn)一步。兩個(gè)脈沖的時(shí)間間隔越短,步進(jìn)電機(jī)就轉(zhuǎn)得越快。調(diào)整單片機(jī)發(fā)出的脈沖頻率,就可以對(duì)步進(jìn)電機(jī)進(jìn)行調(diào)速。
2 步進(jìn)電機(jī)控制硬件電路
2.1 串行接口電路
串行接口電路由RS 232串行接口、MAX232芯片和AT89S51單片機(jī)三部分構(gòu)成。其中,RS 232串行接口用于連接PC的RS 232串行接口,MAX 232芯片用于銜接RS 232串行接口與AT89S51單片機(jī),實(shí)現(xiàn)單片機(jī)輸入/輸出的串口信息到PC的串行接口信息的轉(zhuǎn)換,即AT89S51單片機(jī)信號(hào)的TTL電平到RS 232電平的轉(zhuǎn)換,從而實(shí)現(xiàn)二者之間電氣特性上的兼容。具體串行接口硬件電路如圖1所示。
2.2 驅(qū)動(dòng)電路
步進(jìn)電機(jī)的驅(qū)動(dòng)電路有多種方案,本文采用芯片L298N進(jìn)行驅(qū)動(dòng)。該芯片是專用驅(qū)動(dòng)集成電路,輸出電流大,輸出功率強(qiáng)。其輸出電流為2 A,最高電流4 A,最高工作電壓50 V,可以驅(qū)動(dòng)感性負(fù)載,如大功率直流電機(jī)、步進(jìn)電機(jī)、電磁閥等,特別是其輸入端可以與單片機(jī)直接相連,從而很方便地受單片機(jī)控制。
采用L298N芯片可以直接控制步進(jìn)電機(jī),并可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),實(shí)現(xiàn)此功能只需改變輸入端的邏輯電平。同時(shí),為了避免電機(jī)對(duì)單片機(jī)的干擾,在驅(qū)動(dòng)電路中加入光耦TPL-521,進(jìn)行光電隔離,從而使系統(tǒng)能穩(wěn)定可靠的工作。具體驅(qū)動(dòng)電路如圖2所示。
3 步進(jìn)電機(jī)控制程序設(shè)計(jì)
3.1 下位機(jī)程序設(shè)計(jì)
單片機(jī)接口程序采用C51語(yǔ)言編寫(xiě)。程序中,定義了數(shù)組table1和table2,用來(lái)存儲(chǔ)脈沖信號(hào)對(duì)應(yīng)的數(shù)據(jù);并定義了一個(gè)控制轉(zhuǎn)向的指針control mode,為該指針賦予不同的值,電機(jī)便實(shí)現(xiàn)正反轉(zhuǎn)功能。另外,程序中還定義一個(gè)速度控制變量mode,通過(guò)PC機(jī)發(fā)送命令字改變速度控制變量的值便可以實(shí)現(xiàn)轉(zhuǎn)速的控制。在main函數(shù)部分,先調(diào)用“串口初始化程序”,再調(diào)用“控制命令字判斷程序”以實(shí)現(xiàn)電機(jī)的速度和轉(zhuǎn)向控制。main函數(shù)的最后部分將單片機(jī)收到的命令字返回給PC機(jī),方便觀察者查看通信的情況。下面給出main函數(shù)及控制變量的程序段。
3.2 上位機(jī)程序設(shè)計(jì)
單片機(jī)PC的通信是通過(guò)單片機(jī)的串口和PC串口之間的硬件連接實(shí)現(xiàn)的。由于LabVIEW軟件簡(jiǎn)潔直觀,功能強(qiáng)大靈活,該設(shè)計(jì)采用LabVIEW編寫(xiě)上位機(jī)的控制程序。程序編寫(xiě)涉及VISA,它的實(shí)質(zhì)是一個(gè)標(biāo)準(zhǔn)的I/O函數(shù)庫(kù)。這些庫(kù)函數(shù)用于編寫(xiě)儀器的驅(qū)動(dòng)程序,完成計(jì)算機(jī)與儀器間的命令和數(shù)據(jù)傳輸,以實(shí)現(xiàn)對(duì)儀器的程控。
在LabVIEW里使用VISA,必須安裝NI-VISA程序包,安裝后,與串口通信相關(guān)的VISA函數(shù)位于Functions→ALL Functions→Instrurnent I/O→Serial子模板上,其中,VISA配置串口函數(shù)用于設(shè)定一些參數(shù),并將指定的串口按特定設(shè)置初始化;VISA寫(xiě)入函數(shù)將“寫(xiě)入緩沖區(qū)”的數(shù)據(jù)寫(xiě)入指定的串口;VISA讀取函數(shù)從指定的串口中讀取指定字節(jié)的數(shù)據(jù),并將數(shù)據(jù)返回至“讀取緩沖區(qū)”;VISA關(guān)閉函數(shù)關(guān)閉指定串口的會(huì)話句柄或事件對(duì)象。
本文設(shè)計(jì)的步進(jìn)電機(jī)控制程序采用上述的通信函數(shù)結(jié)合事件結(jié)構(gòu)進(jìn)行編寫(xiě),并通過(guò)程序調(diào)試,實(shí)現(xiàn)了步進(jìn)電機(jī)的轉(zhuǎn)向和轉(zhuǎn)速控制。程序前面板與程序框圖分別如圖3和圖4所示。
4 結(jié)語(yǔ)
本文利用圖形化編程語(yǔ)言LabVIEW編寫(xiě)程序?qū)崿F(xiàn)了PC與單片機(jī)的串口通信,并結(jié)合單片機(jī)外圍電路對(duì)步進(jìn)電機(jī)進(jìn)行了轉(zhuǎn)速和轉(zhuǎn)向的控制。實(shí)驗(yàn)證明采用LabvIEW編寫(xiě)的程序?qū)Σ竭M(jìn)電機(jī)進(jìn)行控制具有人機(jī)交互界面友好、編程簡(jiǎn)單、效率高等特點(diǎn),并且采用LabVIEW編寫(xiě)的控制程序移植性較強(qiáng),可以很方便地被其他程序凋用以構(gòu)成功能更齊全的程序。